`
shusanzhan
  • 浏览: 34326 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

分布式系统-高级篇-CentOS7-redis集群安装

阅读更多

1、安装前准备

安装redis集群前,准备两台centOS 7 主机,A主机IP地址:192.168.83.136B主机IP地址:192.168.83.137;在AB主机分布配置三个redis节点;A主机redis三节点端口为7000,7001,7002B主机redis三节点端口为:7003,7004,7005.

2、创建节点

系统redis安装在/usr/local/目录下。

1、创建redis_cluster文件夹

/usr/local/redis3.2/文件夹下创建 redis_cluster文件夹

 $:mkdir redis_cluster

2、创建节点

$:mkdir 7000 7001 7002  //分别代表三个节点    其对应端口 7000 7001 7002

3、创建节点redis.conf配置

创建对应节点的redis.conf 配置,命名为端口号

$:cp /usr/local/redis-3.2/redis.conf  usr/local/redis-3.2/redis_cluster/7000/ 
重命名
$: Mv reids.conf 7000.conf

4、修改节点redis.conf配置

daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7002,7003
port  7000                                //端口7000,7002,7003
cluster-enabled  yes                      //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf      //集群的配置  配置文件首次启动自动生成
cluster-node-timeout  5000                //请求超时  设置5秒够了
appendonly  yes                 //aof日志开启  有需要就开启,它会每次写操作都记录一条日志

备注:以上红色端口修改成对应的节点端口号,按如上操作redis的节点配置也完成,如下配置开启启动

3、配置开启配置 redis7000redis7001redis7002

1、创建个节点启动文件

/etc/init.d 文件目录下创建三个节点的启动配置文件,命名为redis7000redis7001redis7002

$: vi /etc/init.d/redis7000

 

2、启动文件配置项目

Redis7000启动文件配置内容:

#!/bin/sh

# chkconfig: 2345 90 10

# description: Start and Stop redis7000

# Simple Redis init.d script conceived to work on Linux systems

# as it does use of the /proc filesystem.

 

REDISPORT=7000

EXEC=/usr/local/redis3.2/src/redis-server

CLIEXEC=/usr/local/redis3.2/src/redis-cli

 

PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF="/usr/local/redis3.2/redis_cluster/7000/${REDISPORT}.conf"

 

case "$1" in

    start)

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                $EXEC $CONF

        fi

        ;;

    stop)

        if [ ! -f $PIDFILE ]

        then

                echo "$PIDFILE does not exist, process is not running"

        else

                PID=$(cat $PIDFILE)

                echo "Stopping ..."

                $CLIEXEC -p $REDISPORT shutdown

                while [ -x /proc/${PID} ]

                do

                    echo "Waiting for Redis to shutdown ..."

                    sleep 1

                done

                echo "Redis stopped"

        fi

        ;;

    *)

        echo "Please use start or stop as first argument"

        ;;

esac

 

说明:注意修改以上内容中的红色部分

3、配置开启启动

更改权限

chmod +x /etc/init.d/redis7000

设置开启启动

chkconfig redis7000 on

 

4、手动启动redis

service redis7000 start

service redis7001 start

service redis7002 start

4、打开防火墙

1、打开防火墙:

firewall-cmd --zone=public --add-port=7000/tcp --permanent

firewall-cmd --zone=public --add-port=17000/tcp --permanent

firewall-cmd --zone=public --add-port=7001/tcp --permanent

firewall-cmd --zone=public --add-port=17001/tcp --permanent

firewall-cmd --zone=public --add-port=7002/tcp --permanent

firewall-cmd --zone=public --add-port=17002/tcp --permanent

2、重启防火墙

systemctl restart firewalld.service

5、创建集群

前面已经准备好了搭建集群的redis节点,接下来我们要把这些节点都串连起来搭建集群。官方提供了一个工具:redis-trib.rb(/usr/local/redis-3.2.1/src/redis-trib.rb) 看后缀就知道这鸟东西不能直接执行,它是用ruby写的一个程序,所以我们还得安装ruby.

安装ruby

1、安装ruby

$:yum -y install ruby ruby-devel rubygems rpm-build 

2、安装redis接口

再用 gem 这个命令来安装 redis接口    gemruby的一个工具包.
$:gem install redis    //等一会儿就好了这个有点慢

3、创建集群

进入/usr/local/redis3.2/src/目录,执行如下命令

$:./redis-trib.rb  create  --replicas  1  192.168.83.136:7000 192.168.83.136:7001  192.168.83.136:7002 192.168.83.137:7003  192.168.83.137:7004  192.168.83.137:7005

 

此处忘了截图

6Redis集群操作命令

1、客户端连接命令

单个客户端连接命令,此命令必须在对应的redis安装目录src

$: ./redis-cli -h 192.168.83.136 -p 7000

集群客户端连接命令

$: ./redis-cli c -h 192.168.83.136 -p 7000

 

2、集群命令

3、集群状态

cluster info :打印集群的信息

cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。

cluster forget <node_id> :从集群中移除 node_id 指定的节点。列如:

CLUSTER FORGET 2ae88288b7bb1a13b959de9abf0c29e5aa185d15

cluster meet <ip> <port> :将 ip port 所指定的节点添加到集群当中,让它成为集群的一份子。列如:CLUSTER MEET 192.168.83.137 7004

 

cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。

 

cluster saveconfig :将节点的配置文件保存到硬盘里面。

1、槽(slot)

cluster addslots <slot> [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。

cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots 
:移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。

cluster setslot <slot> node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给

另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。

cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。

cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。

cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)。

2、键

cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。

cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。

 

cluster getkeysinslot <slot> <count> :返回 count slot 槽中的键  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics