主機名
|
ip
|
操做系統
|
redis版本
|
實例規劃
|
docker-01
|
10.0.0.130
|
centos7.4
|
5.05穩定版
|
/data/7000 master
/data/7001 slave
|
docker-02
|
10.0.0.131
|
centos7.4
|
5.05穩定版
|
/data/7002 master
/data/7003 slave
|
docker-03
|
10.0.0.132
|
centos7.4
|
5.05穩定版
|
/data/7004 master
/data/7005 slave
|
port 7000 daemonize yes pidfile /data/7000/redis.pid loglevel notice logfile "/data/7000/redis.log" dbfilename dump.rdb dir /data/7000 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
port 7001 daemonize yes pidfile /data/7001/redis.pid loglevel notice logfile "/data/7001/redis.log" dbfilename dump.rdb dir /data/7001 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
port 7002 daemonize yes pidfile /data/7002/redis.pid loglevel notice logfile "/data/7002/redis.log" dbfilename dump.rdb dir /data/7002 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
port 7003 daemonize yes pidfile /data/7003/redis.pid loglevel notice logfile "/data/7003/redis.log" dbfilename dump.rdb dir /data/7003 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
port 7004 daemonize yes pidfile /data/7004/redis.pid loglevel notice logfile "/data/7004/redis.log" dbfilename dump.rdb dir /data/7004 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
port 7005 daemonize yes pidfile /data/7005/redis.pid loglevel notice logfile "/data/7005/redis.log" dbfilename dump.rdb dir /data/7005 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
redis-server /data/7000/redis.conf redis-server /data/7001/redis.conf redis-server /data/7002/redis.conf redis-server /data/7003/redis.conf redis-server /data/7004/redis.conf redis-server /data/7005/redis.conf [root@docker-01 ~]# ps -ef|grep -v grep |grep redis root 74891 1 0 07:15 ? 00:00:01 redis-server *:7000 [cluster] root 75699 1 0 07:16 ? 00:00:00 redis-server *:7001 [cluster] [root@docker-02 ~]# ps -ef|grep -v grep |grep redis root 6411 1 0 07:17 ? 00:00:00 redis-server *:7002 [cluster] root 6416 1 0 07:17 ? 00:00:00 redis-server *:7003 [cluster] [root@docker-03 ~]# ps -ef|grep -v grep |grep redis root 17074 1 0 07:17 ? 00:00:00 redis-server *:7004 [cluster] root 17079 1 0 07:18 ? 00:00:00 redis-server *:7005 [cluster]
port 7006 daemonize yes pidfile /data/7006/redis.pid loglevel notice logfile "/data/7006/redis.log" dbfilename dump.rdb dir /data/7006 protected-mode no cluster-enabled yes cluster-config-file nodes.conf # 添加好集羣以後會保存集羣的信息 cluster-node-timeout 5000 appendonly yes
port 7007 daemonize yes pidfile /data/7007/redis.pid loglevel notice logfile "/data/7007/redis.log" dbfilename dump.rdb dir /data/7007 protected-mode no cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
>>> Performing Cluster Check (using node 10.0.0.130:7006) M: 623aaa030690211b641c08f6623f5b4468bf03b0 10.0.0.130:7006 slots: (0 slots) master S: 8afb9a41f361e087cea56d3912b180db043fa6f7 10.0.0.132:7005 slots: (0 slots) slave replicates b537e21aa9db60d2935f47bbd88a9ebd62168b16 S: c7f34873785eeddda818a4d1adce775cc3d01b1c 10.0.0.131:7003 slots: (0 slots) slave replicates a59225315c983972554cd34e63336adad78001d6 M: b537e21aa9db60d2935f47bbd88a9ebd62168b16 10.0.0.131:7002 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: b5ed868eebf22825fd06888c7ebb426caab2a368 10.0.0.130:7001 slots: (0 slots) slave replicates a9b353fe6e31b6cea4005215648f2c4ab6731f10 M: a9b353fe6e31b6cea4005215648f2c4ab6731f10 10.0.0.132:7004 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: a59225315c983972554cd34e63336adad78001d6 10.0.0.130:7000 slots:[0-5460] (5461 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)? 4096
問你要爲新節點分配多少個槽位?有如今有一個有4個節點了16384/4=4096, 因此這裏咱們填4096javascript
What is the receiving node ID? 623aaa030690211b641c08f6623f5b4468bf03b0 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
問要接受分片的node的id, 新加節點7006: 623aaa030690211b641c08f6623f5b4468bf03b0java
Do you want to proceed with the proposed reshard plan (yes/no)?
問是否從這些節點進行分配, 輸入 yesnode
4. 驗證主節點是否添加成功redis
可見新的redis 7006 已經從原有的三個節點平均分配了槽位累計恰好4096個docker
redis-trib.rb reshard 127.0.0.1:7000 數據庫
5. 添加從節點vim
驗證:centos
[root@docker-01 ~]# redis-cli -c -p 7000 cluster nodes |egrep '700[67]' 623aaa030690211b641c08f6623f5b4468bf03b0 10.0.0.130:7006@17006 master - 0 1569462389467 7 connected 0-1364 5461-6826 10923-12287 4ca37b1856b63ace09632a79b6788cccc47963ab 10.0.0.130:7007@17007 slave 623aaa030690211b641c08f6623f5b4468bf03b0 0 1569462387951 7 connected
[root@docker-01 ~]# redis-cli -c -p 7000 cluster nodes 623aaa030690211b641c08f6623f5b4468bf03b0 10.0.0.130:7006@17006 master - 0 1569465429000 7 connected c7f34873785eeddda818a4d1adce775cc3d01b1c 10.0.0.131:7003@17003 slave a59225315c983972554cd34e63336adad78001d6 0 1569465429000 8 connected a9b353fe6e31b6cea4005215648f2c4ab6731f10 10.0.0.132:7004@17004 master - 0 1569465428000 3 connected 12288-16383 8afb9a41f361e087cea56d3912b180db043fa6f7 10.0.0.132:7005@17005 slave b537e21aa9db60d2935f47bbd88a9ebd62168b16 0 1569465429548 5 connected a59225315c983972554cd34e63336adad78001d6 10.0.0.130:7000@17000 myself,master - 0 1569465429000 8 connected 0-6826 10923-12287 b537e21aa9db60d2935f47bbd88a9ebd62168b16 10.0.0.131:7002@17002 master - 0 1569465428000 2 connected 6827-10922 b5ed868eebf22825fd06888c7ebb426caab2a368 10.0.0.130:7001@17001 slave a9b353fe6e31b6cea4005215648f2c4ab6731f10 0 1569465429953 6 connected 4ca37b1856b63ace09632a79b6788cccc47963ab 10.0.0.130:7007@17007 slave a59225315c983972554cd34e63336adad78001d6 0 1569465428000 8 connected [root@docker-01 ~]# [root@docker-01 ~]# [root@docker-01 ~]# [root@docker-01 ~]# redis-cli -c -p 7007 info replication # Replication role:slave master_host:10.0.0.130 master_port:7000 master_link_status:up ....
我經過集羣狀態能夠看出redis 7006已經沒有slot了. 以前的集羣從節點 redis 7007已經指定到 集羣節點redis 7000上面了,由於咱們把原來redis 7006全部的slot所有遷移到了redis 7000上面了.緩存
[root@docker-01 ~]# redis-cli -c -p 7000 cluster nodes c7f34873785eeddda818a4d1adce775cc3d01b1c 10.0.0.131:7003@17003 slave a59225315c983972554cd34e63336adad78001d6 0 1569466576000 8 connected a9b353fe6e31b6cea4005215648f2c4ab6731f10 10.0.0.132:7004@17004 master - 0 1569466577000 3 connected 12288-16383 8afb9a41f361e087cea56d3912b180db043fa6f7 10.0.0.132:7005@17005 slave b537e21aa9db60d2935f47bbd88a9ebd62168b16 0 1569466577000 5 connected a59225315c983972554cd34e63336adad78001d6 10.0.0.130:7000@17000 myself,master - 0 1569466576000 8 connected 0-6826 10923-12287 b537e21aa9db60d2935f47bbd88a9ebd62168b16 10.0.0.131:7002@17002 master - 0 1569466577730 2 connected 6827-10922 b5ed868eebf22825fd06888c7ebb426caab2a368 10.0.0.130:7001@17001 slave a9b353fe6e31b6cea4005215648f2c4ab6731f10 0 1569466577529 6 connected
[root@docker-01 ~]# ps -ef|grep redis root 74891 1 0 07:15 ? 00:01:32 redis-server *:7000 [cluster] root 75699 1 0 07:16 ? 00:01:27 redis-server *:7001 [cluster] root 82424 46420 0 10:56 pts/0 00:00:00 grep --color=auto redis [root@docker-01 ~]# kill 74891 [root@docker-01 ~]# ps -ef|grep redis root 75699 1 0 07:16 ? 00:01:27 redis-server *:7001 [cluster] root 82842 46420 0 10:57 pts/0 00:00:00 grep --color=auto redis
[root@docker-03 ~]# tail -f /data/700*/redis.log ==> /data/7004/redis.log <== 17074:M 26 Sep 2019 07:48:50.222 * Background saving started by pid 17098 17098:C 26 Sep 2019 07:48:50.264 * DB saved on disk 17098:C 26 Sep 2019 07:48:50.265 * RDB: 2 MB of memory used by copy-on-write 17074:M 26 Sep 2019 07:48:50.272 * Background saving terminated with success 17074:M 26 Sep 2019 07:48:50.272 # Cluster state changed: ok 17074:M 26 Sep 2019 07:48:50.272 * Synchronization with replica 10.0.0.130:7001 succeeded 17074:M 26 Sep 2019 10:57:23.966 * Marking node a59225315c983972554cd34e63336adad78001d6 as failing (quorum reached). 17074:M 26 Sep 2019 10:57:23.966 # Cluster state changed: fail 17074:M 26 Sep 2019 10:57:24.205 # Failover auth granted to c7f34873785eeddda818a4d1adce775cc3d01b1c for epoch 9 17074:M 26 Sep 2019 10:57:24.213 # Cluster state changed: ok ==> /data/7005/redis.log <== 17099:C 26 Sep 2019 07:48:50.437 * Parent agreed to stop sending diffs. Finalizing AOF... 17099:C 26 Sep 2019 07:48:50.437 * Concatenating 0.00 MB of AOF diff received from parent. 17099:C 26 Sep 2019 07:48:50.437 * SYNC append only file rewrite performed 17099:C 26 Sep 2019 07:48:50.437 * AOF rewrite: 4 MB of memory used by copy-on-write 17079:S 26 Sep 2019 07:48:50.524 * Background AOF rewrite terminated with success 17079:S 26 Sep 2019 07:48:50.524 * Residual parent diff successfully flushed to the rewritten AOF (0.00 MB) 17079:S 26 Sep 2019 07:48:50.524 * Background AOF rewrite finished successfully 17079:S 26 Sep 2019 10:57:23.966 * FAIL message received from b537e21aa9db60d2935f47bbd88a9ebd62168b16 about a59225315c983972554cd34e63336adad78001d6 17079:S 26 Sep 2019 10:57:23.966 # Cluster state changed: fail 17079:S 26 Sep 2019 10:57:24.213 # Cluster state changed: ok
[root@docker-02 ~]# redis-cli -c -p 7002 cluster nodes b5ed868eebf22825fd06888c7ebb426caab2a368 10.0.0.130:7001@17001 slave a9b353fe6e31b6cea4005215648f2c4ab6731f10 0 1569467232651 6 connected 8afb9a41f361e087cea56d3912b180db043fa6f7 10.0.0.132:7005@17005 slave b537e21aa9db60d2935f47bbd88a9ebd62168b16 0 1569467232551 5 connected a59225315c983972554cd34e63336adad78001d6 10.0.0.130:7000@17000 master,fail - 1569466638301 1569466637597 8 disconnected b537e21aa9db60d2935f47bbd88a9ebd62168b16 10.0.0.131:7002@17002 myself,master - 0 1569467231000 2 connected 6827-10922 a9b353fe6e31b6cea4005215648f2c4ab6731f10 10.0.0.132:7004@17004 master - 0 1569467233663 3 connected 12288-16383 c7f34873785eeddda818a4d1adce775cc3d01b1c 10.0.0.131:7003@17003 master - 0 1569467232000 9 connected 0-6826 10923-12287
此時源docker01的redis 7000的從庫 docker-02 redis 7003已經提高爲了主庫ruby
[root@docker-02 ~]# redis-cli -c -p 7002 cluster nodes b5ed868eebf22825fd06888c7ebb426caab2a368 10.0.0.130:7001@17001 slave a9b353fe6e31b6cea4005215648f2c4ab6731f10 0 1569467495195 6 connected 8afb9a41f361e087cea56d3912b180db043fa6f7 10.0.0.132:7005@17005 slave b537e21aa9db60d2935f47bbd88a9ebd62168b16 0 1569467496503 5 connected a59225315c983972554cd34e63336adad78001d6 10.0.0.130:7000@17000 slave c7f34873785eeddda818a4d1adce775cc3d01b1c 0 1569467495000 9 connected b537e21aa9db60d2935f47bbd88a9ebd62168b16 10.0.0.131:7002@17002 myself,master - 0 1569467494000 2 connected 6827-10922 a9b353fe6e31b6cea4005215648f2c4ab6731f10 10.0.0.132:7004@17004 master - 0 1569467496201 3 connected 12288-16383 c7f34873785eeddda818a4d1adce775cc3d01b1c 10.0.0.131:7003@17003 master - 0 1569467495000 9 connected 0-6826 10923-12287