多台服务器上docker部署 Redis 集群

  1. 规划集群节点
    确保你的服务器有固定 IP,比如:
    172.16.17.100
    172.16.17.101
    172.16.17.102
    每台服务器运行 2 个 Redis 节点,总共 6 个节点,满足 Redis Cluster 最小节点数要求。
bash 复制代码
2. 在每台服务器上运行 Redis
在每台服务器上执行以下命令(调整 CLUSTER_ANNOUNCE_IP 为本机 IP):

```bash
docker run -d --name redis-7000 -e CLUSTER_ANNOUNCE_IP=172.16.17.100 \
  -p 7000:7000 -p 17000:17000 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0
  
docker run -d --name redis-7001 -e CLUSTER_ANNOUNCE_IP=172.16.17.100 \
  -p 7001:7001 -p 17001:17001 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0
复制代码
在 172.16.17.101 执行:

```bash
docker run -d --name redis-7002 -e CLUSTER_ANNOUNCE_IP=172.16.17.101 \
  -p 7002:7002 -p 17002:17002 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0

docker run -d --name redis-7003 -e CLUSTER_ANNOUNCE_IP=172.16.17.101 \
  -p 7003:7003 -p 17003:17003 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0

在 172.16.17.102 执行:

bash 复制代码
docker run -d --name redis-7004 -e CLUSTER_ANNOUNCE_IP=172.16.17.102 \
  -p 7004:7004 -p 17004:17004 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0

docker run -d --name redis-7005 -e CLUSTER_ANNOUNCE_IP=172.16.17.102 \
  -p 7005:7005 -p 17005:17005 \
  registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis-cluster:4.0
  1. 初始化 Redis Cluster
    在任意一台服务器上执行(推荐在 172.16.17.100):
bash 复制代码
docker exec -it redis-7000 redis-cli --cluster create \
  172.16.17.100:7000 172.16.17.100:7001 \
  172.16.17.101:7002 172.16.17.101:7003 \
  172.16.17.102:7004 172.16.17.102:7005 \
  --cluster-replicas 1

说明:

--cluster-replicas 1:每个主节点分配 1 个从节点。

如果提示 (type 'yes' to accept),请输入 yes 确认集群初始化。

  1. 验证 Redis 集群
    执行以下命令,检查集群状态:
bash 复制代码
docker exec -it redis-7000 redis-cli -c -p 7000

然后输入:

bash 复制代码
cluster nodes

确保每个节点的状态为 master 或 slave,并且 connected。

  1. Spring Boot 配置
    在 application.yml 里配置:
bash 复制代码
spring:
  redis:
    cluster:
      nodes:
        - 172.16.17.100:7000
        - 172.16.17.100:7001
        - 172.16.17.101:7002
        - 172.16.17.101:7003
        - 172.16.17.102:7004
        - 172.16.17.102:7005
  1. 允许防火墙访问
    如果你使用 iptables 或 firewalld,确保开放 7000-7005 和 17000-17005 端口:
bash 复制代码
firewall-cmd --zone=public --add-port=7000-7005/tcp --permanent
firewall-cmd --zone=public --add-port=17000-17005/tcp --permanent
firewall-cmd --reload
相关推荐
牛奔2 分钟前
Docker Compose 解决服务间 DNS 解析失败问题
运维·docker·容器
oMcLin7 分钟前
如何在 Debian 10 上通过配置 Redis 集群的持久化选项,提升高可用性缓存系统的容错性与性能?
redis·缓存·debian
OpsEye8 分钟前
监控 100 问(三):监控告警触发后如何快速定位与解决问题
运维·网络·it运维·it·监控·监控系统
线束线缆组件品替网11 分钟前
Conxall 防水线缆在户外工控中的布线实践
运维·人工智能·汽车·电脑·材料工程·智能电视
济61730 分钟前
linux(第十四期)--官方 SDK 移植实验-- Ubuntu20.04
linux·运维·服务器
范纹杉想快点毕业32 分钟前
欧几里得算法与扩展欧几里得算法,C语言编程实现(零基础全解析)
运维·c语言·单片机·嵌入式硬件·算法
小猪佩奇TONY36 分钟前
Linux 内核学习(16) --- linux x86-64 虚拟地址空间和区域
linux·运维·学习
一路向北⁢41 分钟前
短信登录安全防护方案(Spring Boot)
spring boot·redis·后端·安全·sms·短信登录
cngm11041 分钟前
记录两个网卡同时访问两个网段的调试方法route print
服务器·网络·windows
杰克崔1 小时前
kprobe及kretprobe的基于例子来调试分析其原理
linux·运维·服务器·车载系统