当前位置: 首页 > news >正文

Centos7使用docker搭建redis集群

前置准备:

Centos7安装docker就不多说了…

  • 本次目的是搭建3主3从(当然你也可以按需扩展)
  • 准备三台服务器,假定IP分别为:192.168.75.128、192.168.75.129、192.168.75.130
  • 安装 redis:
#拉取redis
docker pull redis:5.0.2
#创建容器并运行
docker run --name redis  -p 6379:6379 -d redis:5.0.2

1、准备docker-compose.yml文件

注意:最好在服务器上找个专门的文件夹存放这些yml文件,免得后面找不到了

1.1 服务器A【192.168.75.128】

# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'

services:
  # 服务器 192.168.75.128 配置
  redis-node1:
    image: redis:5.0.2
    command: redis-server --port 7001 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.128
    ports:
      - "7001:7001"
      - "17001:17001"
    volumes:
      - ./data/node1:/data
    networks:
      - redis-cluster

  redis-node2:
    image: redis:5.0.2
    command: redis-server --port 7002 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.128
    ports:
      - "7002:7002"
      - "17002:17002"
    volumes:
      - ./data/node2:/data
    networks:
      - redis-cluster

# 定义 redis-cluster 网络
networks:
  redis-cluster:
    driver: overlay  # 单机部署使用 bridge,多机部署可改用 overlay
    attachable: true  # 允许独立容器加入网络

# 服务器 192.168.75.129 和 192.168.75.130 的配置类似,需替换 IP 和数据目录:
# 192.168.75.129: redis-node3 (7003), redis-node4 (7004)
# 192.168.75.130: redis-node5 (7005), redis-node6 (7006)

1.2 服务B【192.168.75.129】

# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'

services:
  # 服务器 192.168.75.129 配置
  redis-node3:
    image: redis:5.0.2
    command: redis-server --port 7003 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.129
    ports:
      - "7003:7003"
      - "17003:17003"
    volumes:
      - ./data/node3:/data
    networks:
      - redis-cluster

  redis-node4:
    image: redis:5.0.2
    command: redis-server --port 7004 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.129
    ports:
      - "7004:7004"
      - "17004:17004"
    volumes:
      - ./data/node4:/data
    networks:
      - redis-cluster

# 定义 redis-cluster 网络
networks:
  redis-cluster:
    driver: overlay  # 单机部署使用 bridge,多机部署可改用 overlay
    attachable: true  # 允许独立容器加入网络

# 服务器 192.168.75.128 和 192.168.75.130 的配置类似,需替换 IP 和数据目录:
# 192.168.75.128: redis-node1 (7001), redis-node2 (7002)
# 192.168.75.130: redis-node5 (7005), redis-node6 (7006)

1.3 服务器C【192.168.75.130】

# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'

services:
  # 服务器 192.168.75.130 配置
  redis-node5:
    image: redis:5.0.2
    command: redis-server --port 7005 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.130
    ports:
      - "7005:7005"
      - "17005:17005"
    volumes:
      - ./data/node5:/data
    networks:
      - redis-cluster

  redis-node6:
    image: redis:5.0
    command: redis-server --port 7006 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.130
    ports:
      - "7006:7006"
      - "17006:17006"
    volumes:
      - ./data/node6:/data
    networks:
      - redis-cluster

# 定义 redis-cluster 网络
networks:
  redis-cluster:
    driver: overlay  # 单机部署使用 bridge,多机部署可改用 overlay
    attachable: true  # 允许独立容器加入网络

# 服务器 192.168.75.128 和 192.168.75.129 的配置类似,需替换 IP 和数据目录:
# 192.168.75.128: redis-node1 (7001), redis-node2 (7002)
# 192.168.75.129: redis-node3 (7003), redis-node4 (7004)

2、执行docker-compose.yml文件

2.1 执行命令:

执行前先要使用安装下docker的编排组件:yum install docker-compose

  • 执行这个yum install docker-compose命令可能会提示没这个包,就需要执行如下命令:
更新yum源
sudo yum -y install epel-release
然后可以直接安装
yum install docker-compose
  • 然后在yml文件所在目录执行如下命令:docker-compose up -d

  • 然后报错:ERROR: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

  • 这个提示需要使用 docker swarm init 命令搭建 Redis 集群,核心原因在于 Docker Swarm 提供了容器编排能力,而 Redis 集群的分布式特性需要依赖 Swarm 的底层架构实现多节点协同和管理。docker swarm init 会创建 Swarm 集群的管理节点(Manager),负责调度服务、维护集群状态,并为后续加入的 Worker 节点提供通信基础‌,同时也提供了动态扩缩容能力等能力。

2.2 初始化 Swarm 集群‌

若当前节点需作为 ‌管理节点‌(Manager):

# 指定本机 IP 初始化 Swarm‌:ml-citation{ref="4,6" data="citationList"}  
docker swarm init --advertise-addr <本机IP>  
  • 关键参数‌:–advertise-addr 声明管理节点的通信地址,确保其他节点可访问‌36。

  • 成功标志‌:输出包含 Swarm initialized 及 Worker/Manager 加入命令‌

  • 有如下提示就表示加入成功:
    在这里插入图片描述

  • 继续执行命令:docker-compose up -d
    在这里插入图片描述

执行Redis集群启动命令:

注意:执行前需要安装redis-cli工具,自行根据所需redis-lic版本安装

# --cluster-replicas 1‌:为每个主节点分配 1 个从节点‌# 自动分配规则‌:前 3 个 IP 为主节点,后 3 个 IP 为从节点‌
redis-cli --cluster create 192.168.75.128:7001 192.168.75.129:7003 192.168.75.130:7005 192.168.75.128:7002 192.168.75.129:7004 192.168.75.130:7006 --cluster-replicas 1
  • 有如下信息表示集群启动成功:
    在这里插入图片描述
  • 再验证下:redis-cli -h 192.168.75.128 -p 7001 cluster nodes
    在这里插入图片描述

爱在深秋~ peace !

相关文章:

  • leetcode 42. 接雨水
  • AD画板学习
  • [JAVASE] Collection集合的遍历
  • MySQL常用函数详解及SQL代码示例
  • Vue 的 v-if 和 v-else-if 如何使用?
  • 信奥赛CSP-J复赛集训(模拟算法专题)(16):P6386 [COCI 2007/2008 #4] VAUVAU
  • DeepSeek本地部署 (Windows+Ollama+Docker Desktop+ RAGFlow)
  • mybatismybatis-plus
  • Spring Boot 3.x 中 @NotNull 与 @NonNull 的深度解析
  • 三分钟掌握视频剪辑 | 在 Rust 中优雅地集成 FFmpeg
  • 天梯赛-前世档案 二进制的巧妙使用
  • Java基础语法练习43(线程)
  • vue3+vite+ts+router4+Pinia+Axios+sass 从0到1搭建
  • linux-5.10.110内核源码分析 - bcm2711 SATA驱动(AHCI)
  • linux 源码编译安装
  • 基于Babylon.js的Shader入门二(让Shader使用一个纹理)
  • Mybatis批量操作
  • 前端知识点---原型-原型链(javascript)
  • 【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)
  • matlab 模糊pid实现温度控制
  • 奥迪车加油时频繁“跳枪”维修两年未解决,4S店拒退换:可延长质保
  • 汕头违建豪宅“英之园”将强拆,当地:将根据公告期内具体情况采取下一步措施
  • 白玉兰奖征片综述丨动画的IP生命力
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • “11+2”复式票,宝山购彩者领走大乐透1170万头奖
  • 男子退机票被收90%的手续费,律师:虽然合规,但显失公平