Docker中Redis三主三从集群实践

–net host 使用宿主机的IP和端口,默认

–privieged=true 获取宿主机root用户权限

–cluster-enabled yes 开启redis集群

–appendonly yes 开启持久化

启动Redis服务命令

docker run -d --name redis-node-1 --net host --privileged=true -v /usr/app/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 /usr/app/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 /usr/app/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 /usr/app/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 /usr/app/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 /usr/app/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

构建主从关系

进入容器

docker exec -it redis-node-1 /bin/bash

主从构建命令

redis-cli --cluster create 192.168.35.135:6381 192.168.35.135:6382 192.168.35.135:6383 192.168.35.135:6384 192.168.35.135:6385 192.168.35.135:6386 --cluster-replicas 1 

终端显示如下主从对应关系

Adding replica 192.168.35.135:6385 to 192.168.35.135:6381
Adding replica 192.168.35.135:6386 to 192.168.35.135:6382
Adding replica 192.168.35.135:6384 to 192.168.35.135:6383

查看集群状态

redis-cli -p 6381
cluster info
cluster nodes
8008600 192.168.35.135:6385@16385 slave f1ceaa4 0 1645712156506 1 connected
0b8ba7e 192.168.35.135:6386@16386 slave a77c123 0 1645712154000 2 connected
5d150dd 192.168.35.135:6383@16383 master - 0 1645712155501 3 connected 10923-16383
a77c123 192.168.35.135:6382@16382 master - 0 1645712155000 2 connected 5461-10922
f1ceaa4 192.168.35.135:6381@16381 myself,master - 0 1645712154000 1 connected 0-5460
c27f12a 192.168.35.135:6384@16384 slave 5d150dd 0 1645712153000 3 connected

master 6381 -> slave 6385

master 6382 -> slave 6386

master 6383 -> slave 6384

连接redis集群

redis-cli -p 6381 -c

如果不添加-c参数,当添加的值不在本redis的槽位时,则报(error) MOVED 12706 192.168.35.135:6383。

主机宕机的主从关系

①主机宕机时,②从机会变成master,此时宕机的①主机恢复了,会变成slave,如果需要把①原来的主机变成master,需要把当前启动的②主机停掉,先启动原本宕机的①主机,再启动原本的②从机。

主从扩容

docker run -d --name redis-node-7 --net host --privileged=true -v /usr/app/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 /usr/app/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

新节点加入集群

redis-cli --cluster add-node 192.168.35.135:6387 192.168.35.135:6381

查看节点状态

redis-cli --cluster check 192.168.35.135:6381

重新分配槽位

redis-cli --cluster reshard 192.168.35.135:6382

新的slave挂载到新的master上

redis-cli --cluster add-node 192.168.35.135:6388 192.168.35.135:6387 --cluster-slave --cluster-master-id (新主机节点ID)

主从缩容

redis-cli --cluster del-node 192.168.35.135:6388 slaveID

重新分配槽位

redis-cli --cluster reshard 192.168.35.135:6382
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值