1.1 环境准备
1.2 配置参数
bind xx.xx.xx.xx protected-mode no port xxx daemonize yes pidfile /var/run/redis_xxx.pid logfile "./logxxx.log" requirepass <yourpassword> cluster-enabled yes cluster-node-timeout 15000
注意:如果主节点(7000、7002、7004)配置了密码,则从节点需要配置以下参数,否则如果主节点意外宕机从节点将无法自动切换为主节点,造成集群对jedis等客户端不可用
!!!
masterauth <master-password>
2.1 首次启动
redis-cli -a password --cluster create --cluster-replicas 1 ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005
2.2 故障重启
注意:此处仅是测试环境导致集群故障后的操作,需清空数据后再重启。
3.1 扩容
1) 查看每个集群节点的node ID和身份
进入任意集群master节点:redis-cli -c -h xx.xx.xx.xx -p <port> -a password
查看节点ID:cluster nodes
2)添加master节点过程
a)redis-cli --cluster add-node ip:7001 ip:7000
注意:这里只是将节点7001加入了7000所在集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作。
b)分配slot
redis-cli --cluster reshard ip:7000 --cluster-from nodeID1,nodeID2,xxx --cluster-to nodeID_7001 --cluster-slots 1024
reshard 后跟集群已有节点中的其中一个节点;
cluster-from:表示slot目前所在的节点的node ID,多个ID用逗号分隔;
cluster-to:表示需要新分配节点的node ID,即步骤a中的7001节点对应的node ID;
cluster-slots:分配的slot数量;
3)添加slave节点
redis-cli –cluster add-node ip:7001 ip:7000 –cluster-slave –cluster-master-id nodeID_7000
add-node: 后面的分别跟着新加入的slave和slave对应的master;
cluster-slave:表示加入的是slave节点;
cluster-master-id:表示slave对应的master的node ID;
3.2 收缩集群
1)下线从节点
即删除master对应的slave
redis-cli --cluster del-node 127.0.0.1:7001 nodeID_7001
del-node 后面跟着slave节点的 ip:port 和node ID
2)下线主节点
a)先清空master的slot
redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from nodeID_7000 --cluster-to nodeID_target --cluster-slots 1024 --cluster-yes
reshard子命令3.1.2.b小结已介绍,这里需要注意,由于集群一共有三个主节点,而每次reshard只能写一个目的节点,因此以上命令需要执行两次(cluster-to对应不同的目的节点);
1024 这个值如何得出的:cluster nodes
查看待删除节点的slot数量,再除以剩下的主节点数,目的是保证slot均匀分配到剩下的节点上;
cluster-yes:不回显需要迁移的slot,直接迁移。
b)再下线(删除)节点
redis-cli --cluster del-node 127.0.0.1:7000 nodeID_7000
至此就是redis cluster 简单的操作过程。
原文链接:https://blog.csdn.net/weixin_40815218/article/details/119064764
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/16206