前言
记录docker实现redis-cluster模式集群部署,需要快速跑通验证直接跳到快速部署即可。
通过网盘分享的文件:redis集群部署.zip
链接: https://pan.baidu.com/s/14bs6sC6hbTyq1knjCvoEJw?pwd=jpy3 提取码: jpy3
四步快速部署
步骤一:下载压缩包解压
将 redis集群部署\ip\redis-cluster 文件夹上传到对应服务器 /home 文件夹下


步骤二:修改 /home/redis-cluster/端口号/conf/redis.conf 文件

步骤三:进入三台服务器对应目录:/home/redis-cluster 执行命令
docker-compose up -d 或 docker compose up -d
部署四:执行命令
在 任意一台机器执行:
docker exec -it redis-7001 redis-cli --cluster create \
172.16.10.80:7001 \
172.16.10.98:7001 \
172.16.10.97:7001 \
172.16.10.80:7002 \
172.16.10.98:7002 \
172.16.10.97:7002 \
--cluster-replicas 1
然后输入:
yes
验证部署是否成功命令
docker exec -it redis-7001 redis-cli -c -p 7001
cluster nodes
cluster info
具体操作步骤
我现在有三台服务器:
172.16.10.80
172.16.10.98
172.16.10.97
一、整体架构(先让你脑子里有图)
每台机器跑 2个实例(1主1从),交叉主从:
172.16.10.80 → M1 + S2
172.16.10.98 → M2 + S3
172.16.10.97 → M3 + S1
最终结构:
M1 → S2
M2 → S3
M3 → S1
👉 好处:
- 任意一台机器挂掉,不会同时丢主+从
- 满足高可用
二、每台机器准备目录
在 三台机器都执行:
mkdir -p /home/redis-cluster/{7001,7002}/{data,conf}
三、redis.conf(通用模板)
路径:
/home/redis-cluster/7001/conf/redis.conf
/home/redis-cluster/7002/conf/redis.conf
内容👇(关键!!):
7002那个改成7002
port 7001
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
dir /data
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
⭐️关键(跨机器必须)
每台机器改成自己的IP
cluster-announce-ip 172.16.10.80
对应端口
cluster-announce-port 7001
= port + 10000
cluster-announce-bus-port 17001
👉 7002 要改成:
port 7002
cluster-announce-port 7002
cluster-announce-bus-port 17002
四、docker-compose.yml(每台机器一份)
🔹 172.16.10.80
version: '3.8'
services:
redis-7001:
image: redis:7.0.12
container_name: redis-7001
network_mode: host
volumes:
/home/redis-cluster/7001/conf/redis.conf:/usr/local/etc/redis/redis.conf
/home/redis-cluster/7001/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-7002:
image: redis:7.0.12
container_name: redis-7002
network_mode: host
volumes:
/home/redis-cluster/7002/conf/redis.conf:/usr/local/etc/redis/redis.conf
/home/redis-cluster/7002/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
🔹 172.16.10.98 / 172.16.10.97
👉 完全一样,只改:
cluster-announce-ip
五、启动所有节点
三台机器分别执行:
docker-compose up -d
六、创建集群(只需要执行一次🔥)
在 任意一台机器执行:
docker exec -it redis-7001 redis-cli --cluster create \
172.16.10.80:7001 \
172.16.10.98:7001 \
172.16.10.97:7001 \
172.16.10.80:7002 \
172.16.10.98:7002 \
172.16.10.97:7002 \
--cluster-replicas 1
然后输入:
yes
七、验证集群
redis-cli -c -h 172.16.10.80 -p 7001
cluster nodes
cluster info
八、必须检查的坑(重点)
1️⃣ 防火墙
开放:
7001-7002
17001-17002
2️⃣ 端口说明
| 端口 | 用途 |
|---|---|
| 7001/7002 | 客户端 |
| 17001/17002 | 集群通信 |
3️⃣ 一定要配置 cluster-announce-ip
否则:
❌ 集群会用 Docker 内网 IP
👉 直接导致节点互相连不上
九、一键初始化脚本(帮你省事🔥)
你可以保存为:
#!/bin/bash
docker exec -it redis-7001 redis-cli --cluster create \
172.16.10.80:7001 \
172.16.10.98:7001 \
172.16.10.97:7001 \
172.16.10.80:7002 \
172.16.10.98:7002 \
172.16.10.97:7002 \
--cluster-replicas 1 <<EOF
yes
EOF
扩展
安装Another-Redis-Desktop-Manager-win-1.7.1-x64 客户端验证redis连接

yml配置
redis: cluster: #只配置6个节点只配置三个主节点 不配置从节点防止客户端直连和同步未完成时被访问 nodes: - 172.16.10.80:7001 - 172.16.10.98:7001 - 172.16.10.97:7001 max-redirects: 3 # Redis服务器连接密码(默认为空) password: # 连接超时时间(毫秒) timeout: 2000 lettuce: # 连接池最大连接数(使用负值表示没有限制) pool: max-active: 5000 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: 30000 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最小空闲连接 min-idle: 5