6.docker入门到精通—配置3主3从redis集群
创始人
2025-05-31 13:58:50
0

【前提】: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从。

相关内容

热门资讯

全球农创客训练营走进云南以“咖... 央广网北京6月2日消息(记者韩雪莹)据中央广播电视总台中国之声《新闻纵横》报道,一杯咖啡,可以让人头...
15道 旺销特色菜,创意融合 藜蒿炒腊肉 原料: 腊肉(肥三瘦七)300克,鄱阳湖藜蒿300克,韭菜段150克,盐、红辣椒段、蒜...
家里有个会做饭的男人太幸福了,... 姐妹们!你们知道家里有个会做饭的老公是什么体验吗?那就是——每天下班回家都能吃到热腾腾的饭菜,关键还...
原创 5... 姐妹们,今天给你们分享个我家每周必吃的省钱神菜—— 酸辣土豆丝!成本不到5块钱,10分钟出锅,每次炒...
原创 半... 朋友们,今天教你们一个偷懒都能被夸厨神的神仙做法! 只要电饭锅会煮饭,你就能做出甜到粘嘴唇的照烧五花...
原创 R... 曾经风头无两的韩国超级偶像Rain与他的妻子金泰熙已经携手走过七个年头,虽然外界对他们婚后生活的报道...
“龙腾端午·梧现精彩”非遗好市... 6月1日,由梧州市文化广电体育和旅游局主办的“龙腾端午·梧现精彩”非遗好市在梧州市西堤公园持续开展。...
上海海派旗袍文化节开幕,推出3... 静态展览,动态走秀,互动体验……6月1日,“旗韵绽芳华”——6·6上海海派旗袍文化节在张园拉开帷幕。...
华程国旅推出“欧洲循环巴士游” 英国当地时间5月27日下午,华程国旅集团TRIP2EU“欧洲循环巴士游”发布会伦敦站在伦敦千禧酒店举...
原创 6... “来来来,尝尝我们厂的窑鸡,特意给你加的菜!”何家劲笑容满面,将一整盘热腾腾的窑鸡推到黄日华面前。 ...
原创 以... #优质好文激励计划# “以前人人爱吃的小龙虾,为啥现在不火了?内行:4个原因很难改变” 家人们,谁...
吉木萨尔县第三届厦吉文化美食汇... 5月31日,为期3天的“百味醉天山 闽疆共飨宴”昌吉州旅游文化美食节系列活动之吉木萨尔县第三届厦吉文...
去四川旅游攻略当地团五天四晚要... 标题:去四川旅游攻略当地团五天四晚要花多少钱,驴友亲测!跟着乐乐玩转四川 四川旅游推荐!当地导游-乐...
上海迪士尼游客打架,属地部门:... 上海市公安局浦东分局官方微博6月1日消息,5月31日18时许,浦东公安分局接报警称迪士尼乐园内有人打...
“去中国要带空箱子!”在国外传... 随着“中国游”的便利性和吸引力不断上升,游在中国、购在中国成为越来越多国际游客的新选择 。 最近,“...
重庆家常美食菜谱,地道风味,轻... 重庆家常美味菜谱是一本介绍重庆地道美食的烹饪书籍,本书通过简单易懂的方式,呈现地道的重庆风味菜肴,读...
原创 退... 那年重庆的夏天,热气把整座城市蒸得发软。我蹲在石桥铺数码城门口滚烫的水泥台阶上,后背的汗淌成小河,渗...
武汉卤味:鸭脖配酒越嚼越有,这... 在武汉的街头巷尾,飘着一种让人走不动道的香味,老卤炖出来的鸭脖味儿,混着点啤酒的麦芽香,光是闻着就忍...
清谈菜谱,简单美食的魅力深度探... 清谈菜谱带你探索简单美食的魅力,赏析烹饪的艺术,本书强调食材的天然之美,以简洁的烹饪方式展现食材的原...
原创 最... “人老珠黄”这话真扎心!眼瞅着镜子里的自己——头发一把把掉,发缝宽得能插秧;眼睛干得像撒哈拉沙漠,看...