redis单服务器集群之添加新的集群节点

实现配置:
(1)停止redis服务,重新正常启动redis集群个结点

[root@redis2 ~]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@redis1 7001]# redis-server redis.conf
[root@redis1 7001]# cd ../7002
[root@redis1 7002]# redis-server redis.conf
[root@redis1 7002]# cd ../7003
[root@redis1 7003]# redis-server redis.conf
[root@redis1 7003]# cd ../7004
[root@redis1 7004]# redis-server redis.conf
[root@redis1 7004]# cd ../7005
[root@redis1 7005]# redis-server redis.conf
[root@redis1 7005]# cd ../7006
[root@redis1 7006]# redis-server redis.conf
[root@redis1 7006]# cd ..


查看先前集群节点信息:

[root@redis1 7008]# redis-cli --cluster info 127.0.0.1:7001
127.0.0.1:7001 (123c5935...) -> 1 keys | 5461 slots | 1 slaves.
127.0.0.1:7004 (69f54ebd...) -> 1 keys | 5462 slots | 1 slaves.
127.0.0.1:7003 (93de84b7...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 2 keys in 3 masters.
0.00 keys per slot on average


(2)建立新的节点目录,启动新节点

[root@redis1 rediscluster]# mkdir 7007 7008
[root@redis1 rediscluster]# ls
7001  7002  7003  7004  7005  7006  7007  7008
[root@redis1 rediscluster]# cd 7007
[root@redis1 7007]# cp ../7001/redis.conf .
[root@redis1 7007]# ls
redis.conf
[root@redis1 7007]# vim redis.conf 
[root@redis1 7007]# redis-server redis.conf
[root@redis1 7007]# cd ../7008
[root@redis1 7008]# cp ../7007/redis.conf .
[root@redis1 7008]# vim redis.conf 
[root@redis1 7008]# redis-server  redis.conf


(3)为集群添加新的节点(master)

[root@redis1 7008]# redis-cli --cluster add-node 127.0.0.1:7007  127.0.0.1:7002  ##127.0.0.1:7007 代表新添加的节点  127.0.0.1:7002是给添加节点一个标识,任意号都可以
>>> Adding node 127.0.0.1:7007 to cluster 127.0.0.1:7002
>>> Performing Cluster Check (using node 127.0.0.1:7002)
S: f4e847f6f2e3311af526d25e6a29854e20fd73f2 127.0.0.1:7002
   slots: (0 slots) slave
   replicates 69f54ebd4d2dd562ff1414983d299946c07da6dc
M: 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4 127.0.0.1:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: ebc0d6a95cea71c453bf2ec208de7621d0343dae 127.0.0.1:7006
   slots: (0 slots) slave
   replicates 123c5935433f267f8f5c09a412d770e65d02f592
M: 69f54ebd4d2dd562ff1414983d299946c07da6dc 127.0.0.1:7004
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 123c5935433f267f8f5c09a412d770e65d02f592 127.0.0.1:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 6652f19f303a09b3c2c7fb8647b5d8c24b477410 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:7007 to make it join the cluster.
[OK] New node added correctly.


查看新的集群信息,新的节点已经添加为master:

[root@redis1 7008]# redis-cli --cluster info 127.0.0.1:7001   
127.0.0.1:7001 (123c5935...) -> 1 keys | 5461 slots | 1 slaves.
127.0.0.1:7004 (69f54ebd...) -> 1 keys | 5462 slots | 1 slaves.
127.0.0.1:7003 (93de84b7...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7007 (44c23066...) -> 0 keys | 0 slots | 0 slaves.
[OK] 2 keys in 4 masters.
0.00 keys per slot on average.

均分哈希槽
尽管新节点没有包含任何哈希槽, 但它仍然是一个主节点, 所以在集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中,所以要添加一个slave
(4)为新加master节点添加slave节点

[root@redis1 7008]# redis-cli -c -p 7007
127.0.0.1:7007> get name
-> Redirected to slot [5798] located at 127.0.0.1:7004
"nn"
127.0.0.1:7004> get age
-> Redirected to slot [741] located at 127.0.0.1:7001
"18"
127.0.0.1:7007> cluster nodes  ##查看集群各结点信息(可以看到uuid)
69f54ebd4d2dd562ff1414983d299946c07da6dc 127.0.0.1:7004@17004 master - 0 1572139957000 7 connected 5461-10922
123c5935433f267f8f5c09a412d770e65d02f592 127.0.0.1:7001@17001 master - 0 1572139956555 9 connected 0-5460
ebc0d6a95cea71c453bf2ec208de7621d0343dae 127.0.0.1:7006@17006 slave 123c5935433f267f8f5c09a412d770e65d02f592 0 1572139957056 9 connected
93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4 127.0.0.1:7003@17003 master - 0 1572139956000 3 connected 10923-16383
6652f19f303a09b3c2c7fb8647b5d8c24b477410 127.0.0.1:7005@17005 slave 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4 0 1572139956000 3 connected
44c23066a3694c94ea95b9e5eca570bdf09b987d 127.0.0.1:7007@17007 myself,master - 0 1572139956000 0 connected
f4e847f6f2e3311af526d25e6a29854e20fd73f2 127.0.0.1:7002@17002 slave 69f54ebd4d2dd562ff1414983d299946c07da6dc 0 1572139957558 7 connected
127.0.0.1:7007> 


为主节点添加slave节点

[root@redis1 7008]# redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7007 --cluster-slave --cluster-master-id 44c23066a3694c94ea95b9e5eca570bdf09b987d ##需要写master的uuid
>>> Adding node 127.0.0.1:7008 to cluster 127.0.0.1:7007
>>> Performing Cluster Check (using node 127.0.0.1:7007)
M: 44c23066a3694c94ea95b9e5eca570bdf09b987d 127.0.0.1:7007
   slots: (0 slots) master
M: 69f54ebd4d2dd562ff1414983d299946c07da6dc 127.0.0.1:7004
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 123c5935433f267f8f5c09a412d770e65d02f592 127.0.0.1:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: ebc0d6a95cea71c453bf2ec208de7621d0343dae 127.0.0.1:7006
   slots: (0 slots) slave
   replicates 123c5935433f267f8f5c09a412d770e65d02f592
M: 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4 127.0.0.1:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 6652f19f303a09b3c2c7fb8647b5d8c24b477410 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4
S: f4e847f6f2e3311af526d25e6a29854e20fd73f2 127.0.0.1:7002
   slots: (0 slots) slave
   replicates 69f54ebd4d2dd562ff1414983d299946c07da6dc
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 127.0.0.1:7008 to make it join the cluster.
Waiting for the cluster to join

>>> Configure node as replica of 127.0.0.1:7007.
[OK] New node added correctly.


查看节点信息,可以看到新的slave以及添加到新的master结点上

[root@redis1 7008]# redis-cli --cluster info 127.0.0.1:7004
127.0.0.1:7004 (69f54ebd...) -> 1 keys | 5462 slots | 1 slaves.
127.0.0.1:7007 (44c23066...) -> 0 keys | 0 slots | 1 slaves.
127.0.0.1:7001 (123c5935...) -> 1 keys | 5461 slots | 1 slaves.
127.0.0.1:7003 (93de84b7...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 2 keys in 4 masters.
0.00 keys per slot on average.



(5)用hash算法为新添节点分配数据槽

[root@redis1 7008]# redis-cli --cluster  reshard 127.0.0.1:7007
>>> Performing Cluster Check (using node 127.0.0.1:7007)
M: 44c23066a3694c94ea95b9e5eca570bdf09b987d 127.0.0.1:7007
   slots: (0 slots) master
   1 additional replica(s)
M: 69f54ebd4d2dd562ff1414983d299946c07da6dc 127.0.0.1:7004
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
M: 123c5935433f267f8f5c09a412d770e65d02f592 127.0.0.1:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 8dd624073adcf5d0b111efab05f4b41c7914c974 127.0.0.1:7008
   slots: (0 slots) slave
   replicates 44c23066a3694c94ea95b9e5eca570bdf09b987d
S: ebc0d6a95cea71c453bf2ec208de7621d0343dae 127.0.0.1:7006
   slots: (0 slots) slave
   replicates 123c5935433f267f8f5c09a412d770e65d02f592
M: 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4 127.0.0.1:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 6652f19f303a09b3c2c7fb8647b5d8c24b477410 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 93de84b7b8a5c1072a91ef7250a3bb00bc7b4ce4
S: f4e847f6f2e3311af526d25e6a29854e20fd73f2 127.0.0.1:7002
   slots: (0 slots) slave
   replicates 69f54ebd4d2dd562ff1414983d299946c07da6dc
[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)? 300  ##分配槽大小
What is the receiving node ID? 44c23066a3694c94ea95b9e5eca570bdf09b987d ##beifenpei节点uuid
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 ## 这个意思是从所有的节点里选出500个槽位


虽然数据槽已经分配出来,但是并不均匀,可能导致数据不同步;既然要做集群部署,均摊数据槽更好

[root@redis1 7008]# redis-cli --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 127.0.0.1:7002 
>>> Performing Cluster Check (using node 127.0.0.1:7002)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Rebalancing across 4 nodes. Total weight = 4.00
Moving 1266 slo

[root@redis1 7008]# redis-cli --cluster info  127.0.0.1:7007  ##可以看到哈希槽均分
127.0.0.1:7007 (44c23066...) -> 2 keys | 4096 slots | 1 slaves.
127.0.0.1:7004 (69f54ebd...) -> 0 keys | 4096 slots | 1 slaves.
127.0.0.1:7001 (123c5935...) -> 0 keys | 4096 slots | 1 slaves.
127.0.0.1:7003 (93de84b7...) -> 0 keys | 4096 slots | 1 slaves.
[OK] 2 keys in 4 masters.
0.00 keys per slot on average.


[root@redis1 7008]# redis-cli -c -p 7008
127.0.0.1:7008> get name
-> Redirected to slot [5798] located at 127.0.0.1:7007
"nn"
127.0.0.1:7007> get sge
(nil)
127.0.0.1:7007> fet age
(error) ERR unknown command `fet`, with args beginning with: `age`, 
127.0.0.1:7007> get age
"18"
127.0.0.1:7007>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值