设为首页 收藏本站
查看: 896|回复: 0

[经验分享] Redis集群搭建案例

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-26 09:36:54 | 显示全部楼层 |阅读模式
版本及系统说明系统:CentOS 6.8 64X
Redis版本:redis-3.2.5
集群说明:
  • 总共6个节点
  • 3个Master节点,分别为7000、8000、9000.
  • 3个Slave节点,分别为7001、8001、9001.


安装Redis# wget http://download.redis.io/releases/redis-3.2.5.tar.gz
# yum -y install gcc tcl
# mkdir /usr/local/redis
# tar xvf redis-3.2.5.tar.gz
# cd redis-3.2.5
# make PREFIX=/usr/local/redis/ install

设置Redis到环境变量
# vim /etc/profile
export PATH=$PATH:/usr/local/redis/bin
# source /etc/profile

集群准备创建集群所需要的目录# mkdir /usr/local/cluster
# mkdir /usr/local/cluster
# mkdir 7000  7001 8000  8001  9000  9001

分别在7000、7001、8000、8001、9000、9001下创建log、data、pid、initscript conf
# mkdir 7000  7001 8000  8001  9000  9001
# mkdir data  initscript log  pid  conf
修改配置文件# cp /home/roger/redis-3.2.5/redis.conf  /usr/local/cluster/7000/conf/
# vim  /usr/local/cluster/7000/conf/redis.conf
1.注释bind项
# bind 127.0.0.1
2.关闭保护模式
protected-mode no
3.修改端口为7000
port 7000
4.设置为后台启动
daemonize yes
5.修改pid的存储目录
Pidfile /usr/local/cluster/7000/pid/redis.pid
6.修改日志存储目录
logfile "/usr/local/cluster/7000/log/redis.log"
7.开启AOF功能
appendonly yes
8.设置AOP文件存储目录
dir /usr/local/cluster/7000/data/
9.开启Redis集群
cluster-enabled yes
10.开启集群配置文件
cluster-config-file nodes-7000.conf
11.开启集群节点间超时时间
cluster-node-timeout 15000

修改完redis.conf配置文件后把这个配置文件分别复制到7001/8000/8001/9000/9001中的conf文件中
# cp /usr/local/cluster/7000/conf/redis.conf  /usr/local/cluster/7001/conf/
# cp /usr/local/cluster/7000/conf/redis.conf  /usr/local/cluster/8000/conf/
# cp /usr/local/cluster/7000/conf/redis.conf  /usr/local/cluster/8001/conf/
# cp /usr/local/cluster/7000/conf/redis.conf  /usr/local/cluster/9000/conf/
# cp /usr/local/cluster/7000/conf/redis.conf  /usr/local/cluster/9001/conf/
注意:拷贝完后要分别修改对应的相关配置为指定的端口
配置Redis的启动脚本修改端口、redis安装目录、pid文件目录、配置文件目录
# cp  /home/roger/redis-3.2.5/utils/redis_init_script  /usr/local/cluster/7000/initscript/redis_7000
# vim  /usr/local/cluster/7000/initscript/redis_7000
#!/bin/sh
#
# Simple Redis init.d script conceived to  work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=7000
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/usr/local/cluster/${REDISPORT}/pid/redis.pid
CONF="/usr/local/cluster/${REDISPORT}/conf/redis.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

修改问启动脚本后分别将Redis的启动脚本拷贝到7001/8000/8001/9000/9001中的initscript文件中
# cp  /usr/local/cluster/7000/initscript/redis_7000  /usr/local/cluster/7001/initscript/redis_7001
# cp  /usr/local/cluster/7000/initscript/redis_7000  /usr/local/cluster/8000/initscript/redis_8000
# cp  /usr/local/cluster/7000/initscript/redis_7000  /usr/local/cluster/8001/initscript/redis_8001
# cp  /usr/local/cluster/7000/initscript/redis_7000  /usr/local/cluster/9000/initscript/redis_9000
# cp  /usr/local/cluster/7000/initscript/redis_7000  /usr/local/cluster/9001/initscript/redis_9001

拷贝完后分别修改各个的启动脚本端口
启动Redis实例分别启动这6个Redis实例
# /usr/local/cluster/7000/initscript/redis_7000  start
# /usr/local/cluster/7001/initscript/redis_7001  start
# /usr/local/cluster/8000/initscript/redis_8000  start
# /usr/local/cluster/8001/initscript/redis_8001  start
# /usr/local/cluster/9000/initscript/redis_9000  start
# /usr/local/cluster/9001/initscript/redis_9001  start

启动后通过命令查看
# ps -ef | grep redis
如下显示则说明启动成功
wKiom1hc7smz_3GxAABEDWRk6Dw632.jpg
升级ruby安装gem安装gem需要ruby的版本在1.8.7以上。默认安装的是1.8.7版本。
# yum install  ruby  ruby-devel  rubygems  rpm-build

检查ruby版本
# ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374)  [x86_64-linux]

检查是否安装rubygems
# rpm -qa | grep ruby
ruby-1.8.7.374-4.el6_6.x86_64
ruby-rdoc-1.8.7.374-4.el6_6.x86_64
ruby-libs-1.8.7.374-4.el6_6.x86_64
rubygems-1.3.7-5.el6.noarch
ruby-devel-1.8.7.374-4.el6_6.x86_64
ruby-irb-1.8.7.374-4.el6_6.x86_64

gem安装redis ruby接口
# gem install redis
Successfully installed redis-3.3.2
1 gem installed
Installing ri documentation for  redis-3.3.2...
Installing RDoc documentation for  redis-3.3.2...
集群开始创建集群通过集群管理器创建集群,集群管理器所在位置
# cd /home/roger/redis-3.2.5/src/
说明:
  • --replicas是指定Redis Cluster中的每个master节点配备几个Slave节点。
  • 节点角色由顺序决定,先是Master,后是Slave。
  • 下边的命令则是:创建一个Redis集群,每个Master节点配备一个Slave节点,前边三个是Master节点,后边三个是Slave节点。


# cd /home/roger/redis-3.2.5/src/
# ./redis-trib.rb  create  --replicas  1  192.168.0.203:7000   192.168.0.203:8000    192.168.0.203:9000  192.168.0.203:7001  192.168.0.203:8001  192.168.0.203:9001
如下显示这redis集群创建成功
>>> Creating cluster
>>> Performing hash slots  allocation on 6 nodes...
Using 3 masters:
192.168.0.203:7000
192.168.0.203:8000
192.168.0.203:9000
Adding replica 192.168.0.203:7001  to 192.168.0.203:7000
Adding replica  192.168.0.203:8001 to 192.168.0.203:8000
Adding replica  192.168.0.203:9001 to 192.168.0.203:9000
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5460 (5461 slots) master
M: ba355902c49493a7fff1b9689a19dcc019438a8a  192.168.0.203:8000
    slots:5461-10922 (5462 slots) master
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:10923-16383 (5461 slots) master
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
Can I set the above configuration? (type  'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config  epoch to each node
>>> Sending CLUSTER MEET  messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
S: 4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda  192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

从上边打印信息可以观察出:
    Redis集群有6个节点,7000、8000、9000是三个Master节点。7001、800、9001是三个Slave节点。M-S的关系为7000(M)-7001(S)、8000(M)-8001(S)、9000(M)-9001(S)。
其中7000有5461个槽点(0-5460),8000有5462个槽点(5461-10922),9000有5461个槽点(10923-16383)。
目前为止Redis搭建成功。
检查集群状态通过check连接Redis集群中任意节点

# /home/roger/redis-3.2.5/src/redis-trib.rb  check   192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5794,10923-11255 (6128 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看集群信息使用redis-cli命令进入集群环境  -c是必须加的参数
# redis-cli -c -p 7000
wKioL1hc7x3jfgLPAABnB_peklg950.jpg
可以通过该命令查看各个节点的节点ID。

设置开机自启动

# vim /etc/rc.local
/usr/local/cluster/7000/initscript/redis_7000  start
/usr/local/cluster/7001/initscript/redis_7001  start
/usr/local/cluster/8000/initscript/redis_8000  start
/usr/local/cluster/8001/initscript/redis_8001  start
/usr/local/cluster/9000/initscript/redis_9000  start
/usr/local/cluster/9001/initscript/redis_9001  start


集群节点操作添加主节点准备Redis实例# cd /usr/local/cluster
# cp -R 7000 6000
移除6000下rdb、aop、集群节点文件等。只保留其redis.conf和启动脚本。
修改redis.conf配置文件,对比上述的集群准备。
修改启动脚本端口。
启动添加的Redis实例启动添加的主节点
#/usr/local/cluster/6000/initscript/redis_6000  start
执行添加主节点命令说明:
    redis-trib.rb  add-node 添加的节点IP:端口  已有的集群主节点IP:口

# /home/roger/redis-3.2.5/src/redis-trib.rb  add-node   192.168.0.203:6000    192.168.0.203:7000
>>> Adding node  192.168.0.203:6000 to cluster 192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node  192.168.0.203:6000 to make it join the cluster.
[OK] New node added correctly.

检查集群状态# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
   slots: (0 slots) master
   0 additional replica(s)
M: ba355902c49493a7fff1b9689a19dcc019438a8a  192.168.0.203:8000
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
    从上面打印的信息可以知道,向Redis集群中添加了一个空的Master节点,集群没有分配任何hash槽,所以需要重新分配hash槽。
重新分配hash槽执行命令命令说明:
         redis-trib.rbreshard 集群中任意一个可用的主节点IP:端口
重新分配hash槽、并输入要分配的hash槽数量
# /home/roger/redis-3.2.5/src/redis-trib.rb  reshard  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5460 (5461 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:10923-16383 (5461 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M: b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d  192.168.0.203:6000
    slots: (0 slots) master
    0 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5461-10922 (5462 slots) master
    1 additional replica(s)
S: 4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda  192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to  move (from 1 to 16384)?1000
输入接收节点ID输入接收hash槽的节点ID(通过查询集群信息可以获取添加的Master的节点ID)。
What is the receiving node ID?b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d
设置hash槽来源输入hash槽的源节点,可以是单独某个集群节点的node ID,也可以输入all。又集群来分配hash槽。输入done结束槽的设置。(hash槽从源节点中移动过后,分配后的hash槽在源节点中不存在,在新的Master节点中)
Please enter all the source  node IDs.
Type 'all' to use all the nodes as source  nodes for the hash slots.
Type 'done' once you entered all the source  nodes IDs.
Source node #1:all
确认移动hash槽输入yes开始移动hash槽到目标节点ID
Do you want to proceed with the  proposed reshard plan (yes/no)?yes
检验集群状态查看分配后的集群信息,已经重新分配了hash槽
# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:333-5460 (5128 slots) master
   1  additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
   slots:0-332,5461-5794,10923-11255 (1000  slots) master
   0 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S: 8b6e6090e576bd31dbb9a5d896b482aab7c6af37  192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
从上边打印信息中可以或者,新添加的Master节点已经分配了1000个hash槽点,hash槽点范围0-332,5461-5794,10923-11255。
添加从节点准备Redis实例# cd /usr/local/cluster
# cp -R 7001 6001
移除6000下rdb、aop、集群节点文件等。只保留其redis.conf和启动脚本。
修改redis.conf配置文件,对比上述的集群准备。
修改启动脚本端口。
启动添加的Redis实例启动添加的redis服务
# /usr/local/cluster/6001/initscript/redis_6001  start
执行添加从节点         命令说明:
./redis-trib.rbadd-node --slave --master-id 主节点id 添加的从节点IP和端口 集群已有的节点IP和端口
# /home/roger/redis-3.2.5/src/redis-trib.rb  add-node   --slave  --master-id  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d  192.168.0.203:6001  192.168.0.203:7000
>>> Adding node  192.168.0.203:6001 to cluster 192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:333-5460 (5128 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
    slots:0-332,5461-5794,10923-11255 (1000 slots) master
    0 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S: 8b6e6090e576bd31dbb9a5d896b482aab7c6af37  192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node  192.168.0.203:6001 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of  192.168.0.203:6000.
[OK] New node added correctly.

检查集群状态# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:333-5460 (5128 slots) master
    1 additional replica(s)
M: 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab  192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  79f0cbf6221fea7268bf076f57cbf2b3aac2c1d1 192.168.0.203:6001
   slots: (0 slots) slave
   replicates  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d
S: 6bc537e386b0e92c2cbeef4e6f8713aba838f137  192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
    slots:0-332,5461-5794,10923-11255 (1000 slots) master
    1 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
    从上边的打印信息可以获知,已经添加6001为6000的Slave节点。
移除从节点执行移除操作         命令说明:
./redis-trib.rb  del-node 需要移除的SlaveIP和端口  该节点ID
# /home/roger/redis-3.2.5/src/redis-trib.rb  del-node  192.168.0.203:6001  79f0cbf6221fea7268bf076f57cbf2b3aac2c1d1
>>> Removing node  79f0cbf6221fea7268bf076f57cbf2b3aac2c1d1 from cluster 192.168.0.203:6001
>>> Sending CLUSTER FORGET  messages to the cluster...
>>> SHUTDOWN the node.
检查集群状态该节点已移除
# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:333-5460 (5128 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
    slots:0-332,5461-5794,10923-11255 (1000 slots) master
    0 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S: 4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda  192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

移除主节点         从Redis集群中移除Master节点,需要先将Master节点上的hash槽先移动到其它的主节点上,再移除一个空的Master节点(没有分配hash槽的Master节点)。
重新分配hash槽执行命令并设置移除hash槽的数量    命令说明
        redis-trib.rbreshard  需要移动hash槽的Master节点的IP:端口

# /home/roger/redis-3.2.5/src/redis-trib.rb  reshard  192.168.0.203:6000
>>> Performing Cluster Check  (using node 192.168.0.203:6000)
M: b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d  192.168.0.203:6000
   slots:0-332,5461-5794,10923-11255 (1000  slots) master
   0 additional replica(s)
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S:  4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda 192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:333-5460 (5128 slots) master
    1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to  move (from 1 to 16384)? 1000
         在这儿设置需要移动的hash槽的数量
设置hash槽的接收节点ID选择要接收这些hash槽的节点ID(这里目前只能设置一个Master节点的节点ID)。
What is the receiving node ID? ad9aa41d76bd9554c36cfda867c51def07711868
设置移除hash槽的节点并退出设置输入被移除的节点ID(设置的ID为移除节点的ID),然后输入done退出设置
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1:b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d
Source node #2:done
确定移动hash槽打印被移动的hash槽后,输入yes确认开始移动hash槽
Do you want to proceed with the proposed  reshard plan (yes/no)?yes

检查集群状态# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5794,10923-11255 (6128 slots) master
    1 additional replica(s)
M: 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab  192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S:  6bc537e386b0e92c2cbeef4e6f8713aba838f137 192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d 192.168.0.203:6000
   slots: (0 slots) master
   0 additional replica(s)
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S: 4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda  192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
         从上面的打印信息可以获知6000这个Master节点上的所有hash槽点已经移动到其它的Master节点上,当前6000这个Master节点为一个空的Master节点。
移除空的master节点# /home/roger/redis-3.2.5/src/redis-trib.rb  del-node  192.168.0.203:6000  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d
>>> Removing node  b01491cf1bb07bbcbc4d5abfdf181d04e274eb4d from cluster 192.168.0.203:6000
>>> Sending CLUSTER FORGET  messages to the cluster...
>>> SHUTDOWN the node.

检查集群状态# /home/roger/redis-3.2.5/src/redis-trib.rb  check  192.168.0.203:7000
>>> Performing Cluster Check  (using node 192.168.0.203:7000)
M:  ad9aa41d76bd9554c36cfda867c51def07711868 192.168.0.203:7000
    slots:0-5794,10923-11255 (6128 slots) master
    1 additional replica(s)
M:  7db64e29859983cc57acb6b02ba9f90ed6d4a2ab 192.168.0.203:9000
    slots:11256-16383 (5128 slots) master
    1 additional replica(s)
S: 6bc537e386b0e92c2cbeef4e6f8713aba838f137  192.168.0.203:9001
    slots: (0 slots) slave
    replicates 7db64e29859983cc57acb6b02ba9f90ed6d4a2ab
M:  ba355902c49493a7fff1b9689a19dcc019438a8a 192.168.0.203:8000
    slots:5795-10922 (5128 slots) master
    1 additional replica(s)
S: 4fa3f6acf3a1cbeaab19d3f3b3394957a5729eda  192.168.0.203:8001
    slots: (0 slots) slave
    replicates ba355902c49493a7fff1b9689a19dcc019438a8a
S:  8b6e6090e576bd31dbb9a5d896b482aab7c6af37 192.168.0.203:7001
    slots: (0 slots) slave
    replicates ad9aa41d76bd9554c36cfda867c51def07711868
[OK] All nodes agree about slots  configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
    从上边的打印信息可以获知6000这个Master节点已经从当前Redis集群中移除,所以成功移除了6000这个Master节点。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-319486-1-1.html 上篇帖子: 如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序 下篇帖子: Redis集群搭建案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表