6.docker入门到精通—配置3主3从redis集群
创始人
2025-05-31 12:54:08

【前提】:docker安装了redis:6.0.8镜像

3主3从redis 集群配置

关闭防火墙+启动 docker 后台服务

systemctl start docker

新建 6 个 docker 容器 redis 实例

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

进入容器 redis-node-1 并为 6 台机器构建集群关系

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

构建主从关系

//注意,进入 docker 容器后才能执行一下命令,且 注意自己的真实 IP 地址

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

--cluster-replicas 1 表示为每个 master 创建一个slave 节点

一切 OK 的话,3 主 3 从搞定。对应关系为【1-4,2-5,3-6 】

链接进入 6381 作为切入点,查看集群状态

链接进入 6381 作为切入点,查看节点状态

redis-cli -p 6381
cluster info

cluster nodes

主从容错切换迁移案例

数据读写存储

对6381新增一个key

【报错原因】:此时不能通过单机版进入操作数据,要通过集群方式。

防止路由失效加参数-c,并新增一个 key

加入参数-c,优化路由

 redis-cli -p 6381 -c

查看集群信息

redis-cli --cluster check 192.168.3.15:6381

容错切换迁移

主 6381 和从机切换,先停止主机 6381, 再从6382 (redis-node-2) 进入, 查看查看节点状态

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

先还原之前的 3 主 3 从

先启动:docker start redis-node-1

重启redis-node-1发现,6381变成了slave,6384依旧是master。

再停止:docker stop redis-node-4
再启动:docker start redis-node-4

6381变成了*master*,6384变成了*slave,和最初的一样。*

主从扩容案例

1、新建 6387、6388 两个节点+新建后启动+查看是否 8 节点

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

2、进入 6387 容器实例内部

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

3、将新增的 6387 节点(空槽号)作为 master 节点加入原集群

6387 就是将要作为master新增节点

6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

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

4、检查集群情况第 1 次(加入了,但是没有分配槽位)

redis-cli --cluster check 192.168.3.15:6381

5、重新分派槽号(reshard )

redis-cli --cluster reshard 192.168.3.15:6381

6、检查集群情况第 2 次

redis-cli --cluster check 192.168.3.15:6381

为什么6387是3个新的区间,以前的还是连续?

重新分配成本太高,所以前3家各自匀出来一部分,从6381/6382/6383三个旧节点分别匀出1364个坑位给新节点6387。

7、为主节点 6387 分配从节点 6388

命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点IDredis-cli --cluster add-node 192.168.3.15:6388 192.168.3.15:6387 --cluster-slave --cluster-master-id 890a8bf03ebf284b3f969686be3005d4217753e2

8、检查集群情况第 3 次

redis-cli --cluster check 192.168.3.15:6381

主从缩容案例

目的:6387 和 6388 下线

1、检查集群情况获得 6388 的节点 ID

redis-cli --cluster check 192.168.3.15:6382

2、从集群中将 4 号从节点 6388 删除(del-node)

命令:redis-cli --cluster del-node ip: 从机端口6388 节点ID
redis-cli --cluster del-node 192.168.3.15:6388 7ee9b3ccdc344ed7b497732704f01119614872d8

3、检查集群情况第一次(还剩4主3从)

redis-cli --cluster check 192.168.3.15:6381

4、将 6387 的槽号清空,重新分配,本例将清出来的槽号都给 6381

redis-cli --cluster reshard 192.168.3.15:6381

5、检查集群情况第二次

redis-cli --cluster check 192.168.3.15:6381

4096个槽位都指给6381,它变成了8192个槽位,相当于全部都给6381了,不然要输入3次,直接输入4096一锅端

6、将 6387 删除

命令:redis-cli --cluster del-node ip:端口 6387 节点 ID
redis-cli --cluster del-node 192.168.3.15:6387 890a8bf03ebf284b3f969686be3005d4217753e2

7、检查集群情况第三次

redis-cli --cluster check 192.168.3.15:6381

还剩下3主3从。

相关内容

热门资讯

今日资讯.个旧麻将.开挂辅助神... 今日资讯.个旧麻将.开挂辅助神器.[必胜开挂神器]您好:个旧麻将这款游戏可以开挂,确实是有挂的,需要...
〖实测攻略〗微乐吉林麻将有没有... 亲,微乐吉林麻将这款游戏可以开挂的,确实是有挂的,添加客服微信【7482525】安装软件,很多玩家在...
重大通报“新甘孜斗牛究竟有挂没... 您好:新甘孜斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【69174242】很多玩家在新甘...
今日重大通报“新老夫子到底有没... 您好:新老夫子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8383742】很多玩家在这款游戏...
重磅.来袭“九酷炸金花究竟有没... 您好:九酷炸金花这款游戏可以开挂,确实是有挂的,需要软件加微信【3671900】很多玩家在这款游戏中...