docker中redis集群配置

安装redis

redis集群配置

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

docker run -d 后台启动 Docker 容器

--name redis-node-1 给容器命名为redis-node-1(区分集群节点)

--net host 主机网络模式:容器直接使用宿主机的网络栈,端口无需映射(仅 Linux 支持)

--privileged=true 开启特权模式,解决数据卷挂载的权限问题

-v 宿主机目录:容器目录 数据持久化挂载:宿主机/data/redis/share/redis-node-1映射容器/data,Redis 数据落地到宿主机

redis 使用官方 Redis 镜像

--cluster-enabled yes 核心:开启 Redis 集群模式

--appendonly yes 开启 AOF 持久化,防止数据丢失

--port 6381 指定节点端口为 6381

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

这条命令的作用是:创建一个 3 主 3 从 的 Redis 集群,6 个节点都在同一台服务器(172.26.235.122),端口分别是 6381~6386,--cluster-replicas 1 表示每个主节点配 1 个从节点

验证集群是否成功

redis-cli --cluster check 172.26.235.122:6381

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

redis cli -p 6381

cluster info

集群里所有节点的核心信息全部打印出来

cluster nodes

主从容错切换迁移案例

数据读写存储

启动6机构成的集群并通过exec进入

docker exec -it d2ba651c9635 /bin/bash

对6381新增两个key

set k1 v1

会根据内部哈希算法,去到不同的凹槽中

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

redis-cli -p 6381 -c

查看集群信息

redis-cli --cluster check 172.26.235.122:6381

主从容错的切换迁移

1号是主机,4号是从机

先停掉1号,原本1号是主机就会变成从机,4号就会变成主机

扩容

增加两个

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

进入6387容器实例内部,将新增的6387节点作为master节点加入原集群

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

检查集群情况第一次

redis-cli --cluster check 172.26.235.122:6381

M: be60f9fe3b9caef9066398092faafac180701e98 172.26.235.122:6387

slots: (0 slots) maste

可以看到这个是新机器

重新分派槽号(从之前各自有点,平均分一点组成新的)

redis-cli --cluster reshard 172.26.235.122:6381

How many slots do you want to move (from 1 to 16384)? 4096(16385/4)

What is the receiving node ID? be60f9fe3b9caef9066398092faafac180701e98

第二次检查

redis-cli --cluster check 172.26.235.122:6381

为主节点6387分配从节点6388

redis-cli --cluster add-node 172.26.235.122:6388 172.26.235.122:6387 --cluster-slave --cluster-master-id be60f9fe3b9caef9066398092faafac180701e98

第三次检查

redis-cli --cluster check 172.26.235.122:6381

缩容

目的把6387和6388下线(先从机再主机)

检查集群情况

redis-cli --cluster check 172.26.235.122:6381

删除6388

redis-cli --cluster del-node 172.26.235.122:6388 f2c562b4e34f0083211fa54b1be08645dcdb66b4

第四次检查

redis-cli --cluster check 172.26.235.122:6381

把6387的槽号清空,重新分配

redis-cli --cluster reshard 172.26.235.122:6381

重新检查集群情况

redis-cli --cluster check 172.26.235.122:6381

删除6387

redis-cli --cluster del-node 172.26.235.122:6387 be60f9fe3b9caef9066398092faafac180701e98

相关推荐
晨陌y4 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
梅孔立6 小时前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
螺蛳粉 螺蛳粉15 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
PellyKoo18 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐18 小时前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent
阿标在干嘛20 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT19951 天前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
wzg20161 天前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)1 天前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
方便面不加香菜1 天前
Docker Image-- 镜像命令详解与使用示例
运维·docker·容器