docker实现redis-cluster模式集群部署的示例代码

 更新时间:2026年04月10日 09:32:34   作者:ZERO罗某人  
本文介绍了使用Docker部署Redis Cluster集群的完整方案,采用3台服务器,每台运行2个Redis实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

四步快速部署

步骤一:下载压缩包解压

将 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
👉 直接导致节点互相连不上

九、一键初始化脚本(帮你省事🔥)

你可以保存为:

init-cluster.sh

#!/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

到此这篇关于docker实现redis-cluster模式集群部署的示例代码的文章就介绍到这了,更多相关docker redis-cluster集群部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    两种方式创建docker镜像的启动容器时区别介绍(总结篇)

    这篇文章主要介绍了基于两种创建docker镜像的启动容器时区别总结,第一种凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,第二种用Docfile文件生成的镜像时,来启动容器就不用再加这个脚本了,具体详情一起通过本文学习吧
    2016-10-10
  • docker安装fastdfs镜像的一些注意事项

    docker安装fastdfs镜像的一些注意事项

    在安装docker fastdfs镜像时大家需要注意如果是云服务器则需要在云服务器后台的安全组入口方向放开22122、23000以及8888端口,并且在云服务器防火墙配置放开以上三个端口,具体内容详情大家跟随小编一起看看吧
    2021-05-05
  • 详解Docker镜像与容器的常见操作

    详解Docker镜像与容器的常见操作

    这篇文章主要介绍了详解Docker镜像与容器的常见操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Docker安装OpenWrt的实现步骤

    Docker安装OpenWrt的实现步骤

    OpenWrt是一种可以运行在路由器上的嵌入式操作系统,提供了许多网络服务和功能,本文主要介绍了Docker安装OpenWrt的实现步骤,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • 详解如何修改docker pull镜像源

    详解如何修改docker pull镜像源

    Docker Hub Mirror 为全球最大的Docker Registry(Docker Hub)提供在中国的镜像代理服务。Docker Hub Mirror会为中国的用户在国内的服务器上缓存诸多镜像。
    2017-03-03
  • Docker部署Golang服务的实现步骤

    Docker部署Golang服务的实现步骤

    不管是开发还是生产环境,通过docker方式部署服务都是一种不错的选择,本文主要介绍了Docker部署Golang服务的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 详解使用export/import导出和导入docker容器

    详解使用export/import导出和导入docker容器

    本篇文章主要介绍了详解使用export/import导出和导入docker容器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法

    Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法

    今天给大家分享Docker 环境运行 Mysql 和开启 Binlog 配置主从同步的设置方法,利用docker模拟mysql设置的主从同步,通过两种方式给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • Docker 镜像的公有与私有仓库的具体使用

    Docker 镜像的公有与私有仓库的具体使用

    本文介绍了Docker镜像的公有与私有仓库使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Docker开启远程安全访问的图文教程详解

    Docker开启远程安全访问的图文教程详解

    这篇文章主要介绍了Docker开启远程安全访问的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07

最新评论