3主3从redis集群扩缩容配置案例

1、环境准备

#关闭防火墙
systemctl stop firewalld
#查看防火墙状态
systemctl status firewalld
#拉取redis:6.0.8镜像
docker pull redis:6.0.8

 

 2、新建6个docker容器redis实例

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

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台机器构建主从集群关系

#进入容器
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、登录某个阶段,查看集群和节点状态

#进入某个阶段
docker exec -it redis-node-6 /bin/bash
#登录redis
redis-cli -p 6386 #查看集群状态 cluster info #查看节点状态 cluster nodes

 5、主从容错切换迁移

#进入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

docker stop redis-node-1
docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c
cluster nodes

****node1恢复,node1成为slave

docker start redis-node-1
cluster nodes

 

 

 6、集群主从扩容

#新增两台主机
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

 

 

#重新分配槽位
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、集群主从缩容

#删除从节点
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  阅读(42)  评论(0编辑  收藏  举报

导航