1.添加主节点
(1).创建新节点
在121.4.191.137机器上新建6377节点,并以集群模式启动。
(2).查看原集群节点信息
6377并没有加入原集群。
(3).将6377加入原集群
#existing_last_host以槽判定
redis-cli -a password --cluster add-node new_host:new_port existing_last_host:existing_last_port --cluster-master-id node_id
redis-cli -a admin123 --cluster add-node 121.4.191.137:6377 121.4.191.137:6375 --cluster-master-id e99c4338f171bd3ee45d7597aa4336ff2a5dc41f
cd /usr/local/redis/src
redis-cli -c -a admin123 -h 121.4.211.73 -p 6376
121.4.211.73:6376> cluster nodes
(4).为集群重新分配哈希槽
#host:port为任意集群节点均可,只是起到连接集群的作用
redis-cli -a password --cluster reshard host:port --cluster-from node_id --cluster-to node_id --cluster-slots <args>
从6371节点取1000个槽给新节点6377。
redis-cli -a admin123 --cluster reshard 121.4.191.137:6375 --cluster-from bac73b1e1a8315a3591991eebfcb728d09ab2ebe --cluster-to 44bd3b967ab0fff3fcd5e89beaa3d5b0d46f9f04 --cluster-slots 1000
2.添加从节点
(1).创建新节点
在121.4.191.124机器上新建6378节点,并以集群模式启动。
(2).将6378设置为6377的从节点
redis-cli -a password --cluster add-node new_host:new_port existing_master_host:existing_master_port --cluster-slave --cluster-master-id node_id
redis-cli -a admin123 --cluster add-node 121.4.191.124:6378 121.4.191.137:6377 --cluster-slave --cluster-master-id 44bd3b967ab0fff3fcd5e89beaa3d5b0d46f9f04
cd /usr/local/redis/src
redis-cli -c -a admin123 -h 121.4.211.73 -p 6371
121.4.211.73:6371> cluster nodes
此时,6378是6377的从节点。
3.删除从节点
(1).删除6378从节点
redis-cli -a password --cluster del-node host:port node_id
redis-cli -a admin123 --cluster del-node 121.4.191.124:6378 c63385544eb0437bab02345a1b30649da28cdef9
(2).杀死6378节点进程
ps -ef | grep redis
kill -9 1678
4.删除主节点
(1).将6377主节点上的哈希槽再放回6371
redis-cli -a admin123 --cluster reshard 121.4.191.137:6375 --cluster-from 44bd3b967ab0fff3fcd5e89beaa3d5b0d46f9f04 --cluster-to bac73b1e1a8315a3591991eebfcb728d09ab2ebe --cluster-slots 1000
cd /usr/local/redis/src
redis-cli -c -a admin123 -h 121.4.211.73 -p 6371
121.4.211.73:6371> cluster nodes
(2).删除6377主节点
redis-cli -a admin123 --cluster del-node 121.4.191.137:6377 44bd3b967ab0fff3fcd5e89beaa3d5b0d46f9f04
(3).杀死6377节点进程
ps -ef | grep redis
kill -9 1678
5.MOVED转向
(1).非集群模式登录客户端
如果查询的key不在此节点上,会报MOVED错误。
redis-cli -a admin123 -h 121.4.211.73 -p 6371
(2).集群模式登录客户端
redis-cli -c -a admin123 -h 121.4.211.73 -p 6371
6.ASK转向
当客户端向源节点发送一个命令,并且命令要处理的键恰好就属于正在转移的槽内,就会报ASK错误,解决方案为使用集群模式连接客户端。