Centos7使用docker搭建redis集群

前置准备:

Centos7安装docker就不多说了...

  • 本次目的是搭建3主3从(当然你也可以按需扩展)
  • 准备三台服务器,假定IP分别为:192.168.75.128、192.168.75.129、192.168.75.130
  • 安装 redis:
bash 复制代码
#拉取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】

yml 复制代码
# 文件名: 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】

yml 复制代码
# 文件名: 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】

yml 复制代码
# 文件名: 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命令可能会提示没这个包,就需要执行如下命令:
bash 复制代码
更新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):

bash 复制代码
# 指定本机 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版本安装

bash 复制代码
# --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 !

相关推荐
chen_note7 小时前
Dockerfile及其部署镜像步骤
docker·容器·镜像·dockerfile
Jy_06228 小时前
K8s中,deployment 是如何从 yaml 文件最终部署成功 pod 的
云原生·容器·kubernetes
mobº8 小时前
K8s 集群环境搭建 - yaml 版本(一)
云原生·容器·kubernetes
终端行者8 小时前
K8s中部署Minio集群 如何部署minio集群
云原生·容器·kubernetes·1024程序员节
LB211210 小时前
Redis黑马点评 day01
数据库·redis·缓存
杨浦老苏14 小时前
开源云文件存储服务器MyDrive
docker·群晖·网盘
PellyKoo14 小时前
Docker容器中中文文件名显示乱码问题完美解决方案
运维·docker·容器
无妄无望14 小时前
在没有网络的环境下安装包pymysql
学习·docker
奥尔特星云大使15 小时前
Docker 拉取 MySQL 5.7 镜像、启动容器并进入 MySQL
数据库·mysql·docker·容器
big男孩15 小时前
Docker使用环境变量的整理
docker