Docker高级篇-Docker容器内Redis集群配置
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集群配置相关推荐
- springBoot整合redis集群配置
最近发现这篇博客阅读量比较大,今天特意抽空创建了一个可运行的开源项目. 项目的代码和之前的博客内容相比,做了些优化,请大家参考项目源码. 开源项目源码: springboot-redis-cluste ...
- Redis集群配置和常见异常解决
Redis集群配置和常见异常解决 参考文章: (1)Redis集群配置和常见异常解决 (2)https://www.cnblogs.com/hzb462606/p/11121281.html 备忘一下 ...
- Redis 集群配置教程
Linux环境Redis 集群配置教程 下载 一.确认单节点的配置已完成. 1.确认已安装Redis 2.Redis的安装包解压后的目录必须存在,不能丢. 3.修改Redis的环境变量,并source ...
- SpringCloud实现Redis集群配置
在配置文件中添加以下 spring:redis:cluster:# 各 Redis 节点信息nodes: 密码# 执行命令超时时间command-timeout: 15000# 重试次数max-att ...
- springBoot整合redis单节点、redis哨兵、redis集群配置及redisClient区别
springBoot整合redis单节点.redis哨兵.redis集群配置,redisClient jedis lettuce 区别? 1.springboot 整合redis单机模式: sprin ...
- 【Redis】Redis集群配置
参考链接 Redis集群配置
- 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)
前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...
- 高性能网站架构设计之缓存篇(5)- Redis 集群(上)
2019独角兽企业重金招聘Python工程师标准>>> 集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应 ...
- 高性能网站架构设计之缓存篇(6)- Redis 集群(中)
昨天晚上钓鱼回来,大发神经,写了篇概括程序员生活现状的文章,没想到招来众多人的口诛笔伐,大有上升到政治层面的趋势. 我也许不会再发表任何冲击心灵的文章,我希望给大家带来更多的正能量,所以那篇文章已被我 ...
最新文章
- c语言time_t转oletime,DateTimeFormatter可以格式化日期,但不能读取它自己的格式
- 中小型园区网络的基本部署之动手划分vlan
- Codeforces Round #309 (Div. 1) A(组合数学)
- 人一生之中遇到各种事件的概率
- python中define的用法_C语言中#define用法总结
- 中源幼儿园收费管理系统 v5.2.8 是什么
- 华为NP课程笔记10-BGP案例讲解
- 成功实施ERP的规范流程
- 【反欺诈场景剖析】虚假账号的产生和流转
- 桌面运维常见问题解决办法③
- royal tsx连接闪退_Royal TSX for Mac(最强远程管理软件)
- vue获取上一个页面路由
- Java中long与float
- 2023年,如何管理你的绩效目标?
- 1623_MIT 6.828 在JOS中增加一条交互命令
- Android 微信支付配置流程
- html文本框如何固定不动,css如何让div固定不动?
- Findora区块链培训课程重磅上线!(附视频)
- Node.js(六)express 框架 使用
- lookout筛选相同信息_练习试题 - 2014年英语四级考试每日一练(7月25日) - 233网校英语四级考试题库 - 233网校...