Redis Cluster集群基本操作

一、集群搭建

1.1 环境准备

  1. 服务器
  2. redis-5.0.x压缩包

1.2 配置参数

  1. redis解压到工作目录下,新建cluster/文件夹,在cluster/目录下再分别新建6个对应端口号的子文件夹7000/、7001/、7002/、7003/、7004/、7005/;
    :这里准备运行6个redis实例跑官方推荐的最低配置——三主三从。
  2. 将默认配置文分别复制到6个文件夹下,逐一修改配置参数:
    所有配置文件需要修改如下配置(其余使用默认配置即可):
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 故障重启

注意:此处仅是测试环境导致集群故障后的操作,需清空数据后再重启。

  1. pkill redis 停止所有redis实例;
  2. 依次进入各个实例的文件夹中将除了redis.conf外产生的数据文件清空;
  3. 重新执行2.1的命令。

三、其他集群操作

本章节参考并整理以下文章:
https://blog.csdn.net/weixin_42440345/article/details/95048739

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 简单的操作过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值