10.redis 集群之增加节点
新增 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>
感谢阅读博客,欢迎向博主讨论问题。
浙公网安备 33010602011771号