docker之redis集群部署
docker之redis集群部署
PART01: 3主3从redis集群部署
3主3从redis集群配置


- 关闭防火墙,启动docker服务
如果报以下错误,应该是docker 服务没有启动,可以执行下述命令将启动docker服务
systemctl start docker
- 创建6个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
相关命令的分布解释

如果创建成功 通过docker ps可以查看到下图
3.以任何一个容器进入,为六台机器进行集群关系的构建。此处进入redis-node-1容器, 为六台机器进行集群关系的构建
进入容器命令
docker exec -it redis-node-1 /bin/bash
进入容器之后,构建主从关系。
redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1
注意,进入docker容器后才能执行一下命令,且注意自己的真实IP地址;--cluster-replicas 1 表示为每个master创建一个slave节点
通过键入yes等待分配完成,显示所有的16384个slot全部分配完成。
4.链接进入6381作为切入点,进行对于集群分配以及集群状态的查看
-
reids-cli -p 6381
-
cluster info
-
cluster nodes
可以看到node-1 为主节点,id结尾为c8010 而作为从节点的node-5 挂在了node-1上 为node-1的从节点,实现了如下所示的节点主从分配
Master ======> slave
node-1 ======> node-5
node-2 ======> node-6
node-3 ======> node-4
5.单节点进入存数据error错误解决以及路由正确配饰
当配置好redis3主3从集群,通过单节点进入某一个容器并进行相关数据的存储的时候,容易发生存取数据失败的情况
原因:hash槽分段的存在,使得数据key进行hash计算后,不能保证全部落到现在访问的容器范围之内;当前进入的节点是6381,槽点范围为0-5460,k1经过hash计算后得到的槽点为12706超过了redis-node-1的槽点范围,且由于是单节点进入访问,所以路由不允许切换,故显示存储失败;
redis-cli -p 6381 -c
还是通过redis-node-1进行操作,但是通过添加参数 -c 表示以集群的方式进行进入,此时,优化了路由设置,使得3主3从作为一个集群让外界访问,存储数据
通过
redis-cli --cluster check 你的ip:你的port
可以查看当前集群的信息
通过get key 可以获取到存的数据
PART02: 3主3从redis集群容错切换迁移
- 主6381与从机切换 先停止6381
| 主机停机,对应的从机上位
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~