Docker搭建Redis集群完全指南
本指南基于Rocky Linux 10.2环境编写,完全适配你之前关注的Docker容器化部署规范,全程避开Redis
官方明确标注的“容器仅用于开发测试、生产需用K8s Redis Enterprise”的版本坑点,实现3主3从Redis
集群的快速稳定搭建。
一、前置环境校验
先确认Docker环境版本≥1.13,推荐使用最新稳定版,避免旧版本网络隔离特性导致的集群节点通信异常:
bash
docker --version
docker compose version
提前规划6个独立的宿主机目录,用于映射容器内的Redis数据与配置文件,避免容器重启后集群元数据丢失:
bash
mkdir -p /opt/redis-cluster/{7000,7001,7002,7003,7004,7005}/data
关闭宿主机防火墙的端口拦截,提前放行7000-7005集群通信端口、17000-17005集群总线端口,避免节点间握手失败。
二、集群编排文件编写
创建docker-compose.yml文件,为6个节点配置静态IP与独立端口映射,彻底规避动态IP导致容器重启后集
群拓扑断裂的问题:
yaml
version: '3.8'
networks:
redis-cluster-net:
ipam:
config:
- subnet: 172.30.0.0/16
services:
redis-node-1:
image: redis:7.4-alpine
container_name: redis-node-1
ports:
- "7000:7000"
- "17000:17000"
volumes:
- /opt/redis-cluster/7000/data:/data
command: redis-server --port 7000 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
networks:
redis-cluster-net:
ipv4_address: 172.30.0.11
# redis-node-2到redis-node-6依次类推,分别对应端口7001-7005,静态IP顺延为172.30.0.12-172.30.0.16
三、集群启动与初始化
一键启动所有6个Redis容器,确认所有节点状态为运行中:
bash
docker compose up -d
docker compose ps
进入任意一个Redis节点容器,执行集群创建命令,自动完成3主3从的拓扑分配与哈希槽全量映射:
bash
docker exec -it redis-node-1 redis-cli --cluster create \
172.30.0.11:7000 172.30.0.12:7001 172.30.0.13:7002 \
172.30.0.14:7003 172.30.0.15:7004 172.30.0.16:7005 \
--cluster-replicas 1 --cluster-yes
四、集群可用性验证
登录任意集群节点,查看集群整体状态,确认所有16384个哈希槽全部在线:
bash
docker exec -it redis-node-1 redis-cli -p 7000 cluster info
手动触发主节点宕机,验证自动故障转移机制是否正常生效:
bash
docker pause redis-node-1
等待5秒后再次查看集群节点列表,确认原从节点自动升级为新主节点,集群服务无中断。
五、生产环境适配要点
开发测试场景下可直接使用本指南的Docker Compose方案,生产环境建议切换为Kubernetes部署
Redis Enterprise,符合Redis官方的容器化生产支持规范。
如需开启Sentinel高可用模式,只需在容器启动命令中追加-e "SENTINEL=true"参数,即可自动拉
起3个Sentinel节点完成集群监控。
结合你之前关注的ACL权限控制需求,可在启动命令中追加自定义ACL配置,为不同业务账号分配哈
希槽级别的访问权限,进一步提升集群安全性。
需要我为你补充Docker Redis集群一键开启ACL权限控制的完整配置文件,直接适配你的生产权限管控需求吗?