前言记录docker实现redis-cluster模式集群部署,需要快速跑通验证直接跳到快速部署即可。通过网盘分享的文件redis集群部署.zip链接: https://pan.baidu.com/s/14bs6sC6hbTyq1knjCvoEJw?pwdjpy3 提取码: 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 7001cluster nodescluster info具体操作步骤我现在有三台服务器172.16.10.80172.16.10.98172.16.10.97一、整体架构先让你脑子里有图每台机器跑2个实例1主1从交叉主从172.16.10.80 → M1 S2172.16.10.98 → M2 S3172.16.10.97 → M3 S1最终结构M1 → S2M2 → S3M3 → 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那个改成7002port 7001bind 0.0.0.0protected-mode nodaemonize noappendonly yesdir /datacluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000# ⭐️关键跨机器必须# 每台机器改成自己的IPcluster-announce-ip172.16.10.80# 对应端口cluster-announce-port 7001# port 10000cluster-announce-bus-port 17001 7002 要改成port 7002cluster-announce-port 7002cluster-announce-bus-port 17002四、docker-compose.yml每台机器一份 172.16.10.80version: 3.8services:redis-7001:image: redis:7.0.12container_name: redis-7001network_mode: hostvolumes:- /home/redis-cluster/7001/conf/redis.conf:/usr/local/etc/redis/redis.conf- /home/redis-cluster/7001/data:/datacommand: redis-server /usr/local/etc/redis/redis.confredis-7002:image: redis:7.0.12container_name: redis-7002network_mode: hostvolumes:- /home/redis-cluster/7002/conf/redis.conf:/usr/local/etc/redis/redis.conf- /home/redis-cluster/7002/data:/datacommand: 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 7001cluster nodescluster info八、必须检查的坑重点1️⃣ 防火墙开放7001-7002 17001-170022️⃣ 端口说明端口用途7001/7002客户端17001/17002集群通信3️⃣ 一定要配置 cluster-announce-ip否则❌ 集群会用 Docker 内网 IP 直接导致节点互相连不上九、一键初始化脚本帮你省事你可以保存为init-cluster.sh#!/bin/bashdocker 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 EOFyesEOF扩展安装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