Docker容器内Redis集群配置

  • 1、三主三从集成配置
    • 1.1、关闭防火墙、启动docker服务
    • 1.2、新建6个docker容器实例
    • 1.3、进入容器redis-node-1,构建主从关系
    • 1.4、以redis-node-1为切入点,查看节点状态
    • 1.5、如果docker启动报错
    • 1.6、redis集群读写路由增强正确案例
    • 1.7、查看集群信息
    • 1.8、主从容错切换迁移
    • 1.9、主从扩容
    • 1.10、主从缩容

1、三主三从集成配置

1.1、关闭防火墙、启动docker服务

systemcl start docker

1.2、新建6个docker容器实例

docker run -d --name redis-node-1 --net host --privileged=true -v /temp/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381docker run -d --name redis-node-2 --net host --privileged=true -v /temp/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382docker run -d --name redis-node-3 --net host --privileged=true -v /temp/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383docker run -d --name redis-node-4 --net host --privileged=true -v /temp/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384docker run -d --name redis-node-5 --net host --privileged=true -v /temp/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385docker run -d --name redis-node-6 --net host --privileged=true -v /temp/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386


1.3、进入容器redis-node-1,构建主从关系

# 进入redis-node-1节点
docker exec -it redis-node-1 /bin/bash# 构建主从关系,以下的ip可以在宿主主机上通过ifconfig查看(ens33)
redis-cli --cluster create 192.168.126.129:6381 192.168.126.129:6382 192.168.126.129:6383 192.168.126.129:6384 192.168.126.129:6385 192.168.126.129:6386 --cluster-replicas 1
  • 实际操作


1.4、以redis-node-1为切入点,查看节点状态

redis-cli -p 6381cluster infocluster nodes

1.5、如果docker启动报错

只需要重新启动即可。

docker start 容器ID

1.6、redis集群读写路由增强正确案例

redis-cli -p 6381 -cFLUSHALL

1.7、查看集群信息

redis-cli --cluster check 192.168.126.129:6381

1.8、主从容错切换迁移

  • 先停止集群1(redis-node-1)
    - 再次查看集群信息,发现节点1(redis-node-1)已经停止

  • 启动6382节点,我们发现此时6382变成了master,原来6381由master变成了salve

  • 再次启动redis-node-1,我们发现启动后的redis-node-1依然是slave,而redis-node-2是master

#启动redis-node-1
docker start redis-node-1(
#停止redis-node-1的命令
docker stop redis-node-1
)#查看集群状态
cluster nodes


1.9、主从扩容

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

docker run -d --name redis-node-7 --net host --privileged=true -v /temp/redis/share/redis-node-7:/data redis --cluster-enabled yes --appendonly yes --port 6387docker run -d --name redis-node-8 --net host --privileged=true -v /temp/redis/share/redis-node-8:/data redis --cluster-enabled yes --appendonly yes --port 6388docker ps

  • 进入6387容器实例内部
docker exec -it redis-node-7 /bin/bash

  • 将新增的6387节点作为master加入原集群
# 6381相当于6387的引路人,将6387推荐进入集群
redis-cli --cluster add-node 192.168.126.129:6387 192.168.126.129:6381


  • 检查集群情况第1次
redis-cli --cluster check 192.168.126.129:6387

  • 重新分派槽号
redis-cli --cluster reshard 192.168.126.129:6381

  • 检查集群情况第2次
redis-cli --cluster check 192.168.126.129:6387

  • 原来的三个主机都分出来相同的槽点数给新的主节点,并不是全部洗牌,重新分配

  • 为主节点6387分配从节点6388
# redis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id 主节点7容器IDredis-cli --cluster add-node 192.168.126.129:6388 192.168.126.129:6387 --cluster-slave --cluster-master-id a7e68cb432df591df220ad76700ea6bb43093ddc


  • 检查集群情况第3次
redis-cli --cluster check 192.168.126.129:6388

1.10、主从缩容


-获取redis-node-7的容器ID

redis-cli --cluster check 192.168.126.129:6387
  • 将6388删除

# redis-cli --cluster del-node 192.168.126.129:6388 容器IDredis-cli --cluster del-node 192.168.126.129:6388 19ad55089a4443f5c17260311ab4ddc50d7981d2

  • 检查集群情况第一次:只剩下7个节点
  • 重新分配槽点,本案例中时将空余出来的槽点全部分配给节点1
redis-cli --cluster reshard 192.168.126.129:6381

  • 检查集群情况第2次:6387的槽点数已全部分出,目前6387槽点数为0


  • 将6387节点删除
redis-cli --cluster del-node 192.168.126.129:6387 容器ID

  • 第三次检查集群情况,又变回了三主三从

Docker高级篇-Docker容器内Redis集群配置相关推荐

  1. springBoot整合redis集群配置

    最近发现这篇博客阅读量比较大,今天特意抽空创建了一个可运行的开源项目. 项目的代码和之前的博客内容相比,做了些优化,请大家参考项目源码. 开源项目源码: springboot-redis-cluste ...

  2. Redis集群配置和常见异常解决

    Redis集群配置和常见异常解决 参考文章: (1)Redis集群配置和常见异常解决 (2)https://www.cnblogs.com/hzb462606/p/11121281.html 备忘一下 ...

  3. Redis 集群配置教程

    Linux环境Redis 集群配置教程 下载 一.确认单节点的配置已完成. 1.确认已安装Redis 2.Redis的安装包解压后的目录必须存在,不能丢. 3.修改Redis的环境变量,并source ...

  4. SpringCloud实现Redis集群配置

    在配置文件中添加以下 spring:redis:cluster:# 各 Redis 节点信息nodes: 密码# 执行命令超时时间command-timeout: 15000# 重试次数max-att ...

  5. springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别

    springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...

  6. 【Redis】Redis集群配置

    参考链接 Redis集群配置

  7. 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)

      前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...

  8. 高性能网站架构设计之缓存篇(5)- Redis 集群(上)

    2019独角兽企业重金招聘Python工程师标准>>> 集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应 ...

  9. 高性能网站架构设计之缓存篇(6)- Redis 集群(中)

    昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...

最新文章

  1. c语言time_t转oletime,DateTimeFormatter可以格式化日期,但不能读取它自己的格式
  2. 中小型园区网络的基本部署之动手划分vlan
  3. Codeforces Round #309 (Div. 1) A(组合数学)
  4. 人一生之中遇到各种事件的概率
  5. python中define的用法_C语言中#define用法总结
  6. 中源幼儿园收费管理系统 v5.2.8 是什么
  7. 华为NP课程笔记10-BGP案例讲解
  8. 成功实施ERP的规范流程
  9. 【反欺诈场景剖析】虚假账号的产生和流转
  10. 桌面运维常见问题解决办法③
  11. royal tsx连接闪退_Royal TSX for Mac(最强远程管理软件)
  12. vue获取上一个页面路由
  13. Java中long与float
  14. 2023年,如何管理你的绩效目标?
  15. 1623_MIT 6.828 在JOS中增加一条交互命令
  16. Android 微信支付配置流程
  17. html文本框如何固定不动,css如何让div固定不动?
  18. Findora区块链培训课程重磅上线!(附视频)
  19. Node.js(六)express 框架 使用
  20. lookout筛选相同信息_练习试题 - 2014年英语四级考试每日一练(7月25日) - 233网校英语四级考试题库 - 233网校...

热门文章

  1. linux建立git本地共享仓库和个人仓库
  2. android 键盘遮挡,Android软键盘遮挡的四种解决方案
  3. 【无标题】游戏原画和UI的区别?
  4. win编译php mysql_win7下PHP运行环境搭建(apache+mysql+php)
  5. 折腾报表那些事儿(1)RDLC
  6. 虚拟企业:21世纪企业管理新模式
  7. DevEco Studio 登录华为账户无法找到应用程序
  8. static调用/访问的相关内容(wps备份)
  9. 精灵宝可梦属性克制表(精灵属性相克图)
  10. 达人评测 i3 1115g4和i5 8265u选哪个好