新增 7007,7008节点
1.创建配置文件 ,并启动该节点
bin/redis-server redis-cluster/7007/redis.conf
bin/redis-server redis-cluster/7008/redis.conf
info ,可以看到是master ,但并没有从节点信息。
2. 添加一个主节点7007
//该命令在src源码目录下
./redis-trib.rb
1)新增一个节点
Usage: redis-trib <command> <options> <arguments ...>
create host1:port1 ... hostN:portN
--replicas <arg>
check host:port
info host:port
fix host:port
--timeout <arg>
reshard host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
--pipeline <arg>
rebalance host:port
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
add-node new_host:new_port existing_host:existing_port //新增节点命令
--slave
--master-id <arg>
del-node host:port node_id
set-timeout host:port milliseconds
call host:port command arg arg .. arg
import host:port
--from <arg>
--copy
--replace
help (show this help)
[root@localhost src]# ./redis-trib.rb add-node 192.168.50.160:7007 192.168.50.160:7001 //新增节点,只需指明集群中的一个节点即可
>>> Adding node 192.168.50.160:7007 to cluster 192.168.50.160:7001
>>> Performing Cluster Check (using node 192.168.50.160:7001)
M: a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004
slots: (0 slots) slave
replicates a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387
M: 1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005
slots: (0 slots) slave
replicates 1b02fb181026cde4811b496612ceaab4981ea41a
S: 0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006
slots: (0 slots) slave
replicates a46526cf40e471c2164af8e1a8744e80f3ca43a3
[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.50.160:7007 to make it join the cluster.
[OK] New node added correctly.
2)再次查看集群状态
[root@localhost src]# /usr/local/bin/redis-cli -c -h 192.168.50.160 -p 7001
192.168.50.160:7001> cluster nodes
f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004 slave a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 0 1527411047098 4 connected
1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002 master - 0 1527411043061 2 connected 5461-10922
a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001 myself,master - 0 0 1 connected 0-5460
c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007 master - 0 1527411045079 0 connected //该新增节点 未分配槽空间
a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003 master - 0 1527411045582 3 connected 10923-16383
b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005 slave 1b02fb181026cde4811b496612ceaab4981ea41a 0 1527411041042 5 connected
0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006 slave a46526cf40e471c2164af8e1a8744e80f3ca43a3 0 1527411046088 6 connected
3)手动分配哈希槽
重新分配的是主节点集群的槽,随便指定一个主节点即可,即代表分配所有主节点
[root@localhost src]# ./redis-trib.rb reshard 192.168.50.160:7001
>>> Performing Cluster Check (using node 192.168.50.160:7001)
M: a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004
slots: (0 slots) slave
replicates a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387
M: 1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007 //该节点是新增节点,没有槽
slots: (0 slots) master
0 additional replica(s)
M: a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005
slots: (0 slots) slave
replicates 1b02fb181026cde4811b496612ceaab4981ea41a
S: 0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006
slots: (0 slots) slave
replicates a46526cf40e471c2164af8e1a8744e80f3ca43a3
[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)? 200 //重新分配200个槽 ,槽数是固定的,不能新增,只能是重新分配。哈希的原理。新增槽,原来的数据无法路由了
What is the receiving node ID? c30877687807f9128ce5f7b85e47a01fb29ed632
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 //7001~7003 节点的槽都来参与分配
Ready to move 200 slots.
Source nodes:
M: a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
Destination node:
M: c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007
slots: (0 slots) master
0 additional replica(s)
Resharding plan:
Moving slot 5461 from 1b02fb181026cde4811b496612ceaab4981ea41a
Moving slot 5462 from 1b02fb181026cde4811b496612ceaab4981ea41a
Moving slot 5463 from 1b02fb181026cde4811b496612ceaab4981ea41a
Moving slot 5464 from 1b02fb181026cde4811b496612ceaab4981ea41a
4)查看集群状态
7007 新增了200个槽,具备读写操作了
[root@localhost src]# /usr/local/bin/redis-cli -c -h 192.168.50.160 -p 7001
192.168.50.160:7001> cluster nodes
f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004 slave a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 0 1527411941098 4 connected
1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002 master - 0 1527411940089 2 connected 5528-10922
a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001 myself,master - 0 0 1 connected 66-5460
c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007 master - 0 1527411936556 7 connected 0-65 5461-5527 10923-10988 //7007 新增了200个槽
a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003 master - 0 1527411939079 3 connected 10989-16383
b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005 slave 1b02fb181026cde4811b496612ceaab4981ea41a 0 1527411937061 5 connected
0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006 slave a46526cf40e471c2164af8e1a8744e80f3ca43a3 0 1527411938069 6 connected
192.168.50.160:7001>
3.添加7008 从节点到集群
1)添加一个新节点7008
./redis-trib.rb add-node 192.168.50.160:7008 192.168.50.160:7001
2)绑定主从节点
[root@localhost src]# /usr/local/bin/redis-cli -c -h 192.168.50.160 -p 7008 //登陆7008
192.168.50.160:7008> cluster nodes
a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003 master - 0 1527412403412 3 connected 10989-16383
0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006 slave a46526cf40e471c2164af8e1a8744e80f3ca43a3 0 1527412404421 3 connected
a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001 master - 0 1527412403916 1 connected 66-5460
b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005 slave 1b02fb181026cde4811b496612ceaab4981ea41a 0 1527412400385 2 connected
c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007 master - 0 1527412402403 7 connected 0-65 5461-5527 10923-10988 //查看7007节点的id
4a5e8680213689de7ac7f3fc9bb072277b3c912d 192.168.50.160:7008 myself,master - 0 0 0 connected
1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002 master - 0 1527412401394 2 connected 5528-10922
f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004 slave a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 0 1527412405430 1 connected
192.168.50.160:7008> cluster replicate c30877687807f9128ce5f7b85e47a01fb29ed632 //绑定主节点id
OK
192.168.50.160:7008> cluster nodes
a46526cf40e471c2164af8e1a8744e80f3ca43a3 192.168.50.160:7003 master - 0 1527412451864 3 connected 10989-16383
0d30abbb5717320860a18e66959f147199cacbe5 192.168.50.160:7006 slave a46526cf40e471c2164af8e1a8744e80f3ca43a3 0 1527412455904 3 connected
a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 192.168.50.160:7001 master - 0 1527412455399 1 connected 66-5460
b5b73f83af63a746872eded224249331bdfa4211 192.168.50.160:7005 slave 1b02fb181026cde4811b496612ceaab4981ea41a 0 1527412457923 2 connected
c30877687807f9128ce5f7b85e47a01fb29ed632 192.168.50.160:7007 master - 0 1527412452874 7 connected 0-65 5461-5527 10923-10988
4a5e8680213689de7ac7f3fc9bb072277b3c912d 192.168.50.160:7008 myself,slave c30877687807f9128ce5f7b85e47a01fb29ed632 0 0 0 connected //查看7008 节点,找到被绑定的主节点的id:7007 的id 一致
1b02fb181026cde4811b496612ceaab4981ea41a 192.168.50.160:7002 master - 0 1527412453884 2 connected 5528-10922
f92eb54bcc0b89e5b559f1295e95309564538079 192.168.50.160:7004 slave a3c4e4d3cc99f2dd6c9aaedcfed8ff76058e9387 0 1527412456913 1 connected
192.168.50.160:7008>