3主3从redis集群扩缩容配置案例
1、环境准备
1 2 3 4 5 6 | #关闭防火墙 systemctl stop firewalld #查看防火墙状态 systemctl status firewalld #拉取redis:6.0.8镜像 docker pull redis:6.0.8 |
2、新建6个docker容器redis实例
1 2 3 4 5 6 7 8 9 | docker run -d --name redis-node-1 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-1 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381 docker run -d --name redis-node-2 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-2 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382 docker run -d --name redis-node-3 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-3 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383 docker run -d --name redis-node-4 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-4 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384 docker run -d --name redis-node-5 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-5 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385<br><br>docker run -d --name redis-node-6 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-6 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386 |
- 命令分步解释
- docker run
- 创建并运行docker容器实例
- --name redis-node-6
- 容器名字
- --net host
- 使用宿主机的IP和端口,默认
- --privileged=true
- 获取宿主机root用户权限
- -v /data/redis/share/redis-node-6:/data
- 容器卷,宿主机地址:docker内部地址
- redis:6.0.8
- redis镜像和版本号
- --cluster-enabled yes
- 开启redis集群
- --appendonly yes
- 开启持久化
- --port 6386
- redis端口号
3、进入容器构建6台机器构建主从集群关系
1 2 3 4 | #进入容器 docker exec -it redis-node-1 /bin/bash #构建关系 redis-cli --cluster create 192.168.111.99:6381 192.168.111.99:6382 192.168.111.99:6383 192.168.111.99:6384 192.168.111.99:6385 192.168.111.99:6386 --cluster-replicas 1 |
4、登录某个阶段,查看集群和节点状态
1 2 3 4 5 6 | #进入某个阶段 docker exec -it redis-node-6 /bin/bash <br> #登录redis<br>redis-cli -p 6386 #查看集群状态 cluster info #查看节点状态 cluster nodes |
5、主从容错切换迁移
1 2 3 | #进入reidis容器 docker exec -it redis-node-6 /bin/bash redis-cli --cluster check 192.168.111.99:6386 |
主从关系为1-4,2-5,3-6
****node1宕机,node4成为新的master
1 2 3 4 | docker stop redis-node-1 docker exec -it redis-node-2 /bin/bash redis-cli -p 6382 -c cluster nodes |
****node1恢复,node1成为slave
1 2 | docker start redis-node-1 cluster nodes |
6、集群主从扩容
1 2 3 4 5 6 7 8 9 10 11 | #新增两台主机 docker run -d --name redis-node-7 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-7 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387 docker run -d --name redis-node-8 --net host --privileged= true - v /Users/zhaoshuzhan/data/redis/share/redis-node-8 : /data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388 #查看状态 docker ps #进入容器内部 docker exec -it redis-node-7 /bin/bash #将新增节点6387作为master节点加入原集群 redis-cli --cluster add-node 192.168.111.99:6387 192.168.111.99:6381 #查看状态 redis-cli --cluster check 192.168.111.99:6381 |
1 2 3 4 5 6 7 | #重新分配槽位 redis-cli --cluster reshard 192.168.111.99:6381 # redis-cli --cluster check 192.168.111.99:6381 #从节点加入主节点 redis-cli --cluster add-node 192.168.111.99:6388 192.168.111.99:6387 --cluster-slave --cluster-master- id 5ca30828ee3e2d671cfbc55010fdfd64b56ee125 #查看状态redis-cli --cluster check 192.168.111.99:6381 |
7、集群主从缩容
1 2 3 4 5 6 7 8 9 | #删除从节点 redis-cli --cluster del-node 192.168.111.99:6388 0b9640d53d468288b6ec55d62ed4d7948c280329 # redis-cli --cluster check 192.168.111.99:6381 #请空主节点槽位,重新分配 redis-cli --cluster reshard 192.168.111.99:6381 #删除主节点 redis-cli --cluster del-node 192.168.111.99:6387 5ca30828ee3e2d671cfbc55010fdfd64b56ee125 |
posted on 2022-10-31 14:02 zhaoshuzhan 阅读(50) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~