基于Docker-Compose搭建Redis集群模式

本文详细介绍了如何在Linux虚拟机上使用Docker和Docker-Compose构建Redis的三主三从集群,包括配置文件编写、DockerCompose文件结构以及集群初始化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于Docker-Compose搭建Redis集群模式

一、部署环境

环境: 一台Linux虚拟机、Docker、Docker-Compose
目标: Redis集群模式,三主三从
明细: Redis7001-7006

二、编写redis-cluster配置文件

redis-cluster7001.conf

# 端口(7001 ~ 7006)
port 7001
# 可以连接的ip
bind 0.0.0.0
# 密码认证
requirepass bingo
# 开启保护模式
protected-mode yes
# 启动集群模式
cluster-enabled yes
# 配置文件名称(nodes7001.conf ~ nodes7006.conf)
cluster-config-file nodes7001.conf
# 节点超时时间
cluster-node-timeout 5000
# 当前节点ip
cluster-announce-ip 192.168.163.130
# 当前节点端口(7001 ~ 7006)
cluster-announce-port 7001
# 集群之间通信的端口号(17001 ~ 17006)
cluster-announce-bus-port 17001
# 启用AOF持久化
appendonly yes

仿照上面的配置复制五份,依次命名为redis-cluster7002.conf ~ redis-cluster7006.conf,把文件中所有出现7001的地方改成对应的端口号

在这里插入图片描述

三、编写Docker-Compose.yml

compose-redis-cluster

version: '3'  
services:

  redis-node1:  # 服务名
    image: redis:latest  # 使用的镜像
    container_name: redis-node1 # docker启动的容器名
    ports:  # 映射的端口 7001是redis server使用,17001是集群之间节点通信使用,都必须开放映射,如果不指定17001端口映射的话,创建集群的时候节点之间不能通信,集群会创建失败
      - "7001:7001"  
      - "17001:17001"
    volumes:  # 映射的容器卷
      - /mydata/redis/conf/redis-cluster7001.conf:/usr/local/etc/redis/redis.conf
      - /mydata/redis/data:/data
    command: bash -c "redis-server /usr/local/etc/redis/redis.conf"
    networks:  # 指定使用网络插件名称
      - redis-net

  redis-node2:  
    image: redis:latest
    container_name: redis-node2
    ports:  
      - "7002:7002"  
      - "17002:17002"
    volumes:  
     - /mydata/redis/conf/redis-cluster7002.conf:/usr/local/etc/redis/redis.conf 
     - /mydata/redis/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf  
    networks:  
      - redis-net

  redis-node3:  
    image: redis:latest
    container_name: redis-node3
    ports:  
      - "7003:7003"  
      - "17003:17003"
    volumes:  
      - /mydata/redis/conf/redis-cluster7003.conf:/usr/local/etc/redis/redis.conf
      - /mydata/redis/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf  
    networks:  
      - redis-net

  redis-node4:  
    image: redis:latest
    container_name: redis-node4
    ports:  
      - "7004:7004"
      - "17004:17004"
    volumes:  
      - /mydata/redis/conf/redis-cluster7004.conf:/usr/local/etc/redis/redis.conf
      - /mydata/redis/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf  
    networks:  
      - redis-net

  redis-node5:  
    image: redis:latest
    container_name: redis-node5
    ports:  
      - "7005:7005"
      - "17005:17005"
    volumes:  
      - /mydata/redis/conf/redis-cluster7005.conf:/usr/local/etc/redis/redis.conf
      - /mydata/redis/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf  
    networks:  
      - redis-net

  redis-node6:  
    image: redis:latest
    container_name: redis-node6
    ports:  
      - "7006:7006"
      - "17006:17006" 
    volumes:  
      - /mydata/redis/conf/redis-cluster7006.conf:/usr/local/etc/redis/redis.conf
      - /mydata/redis/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf  
    networks:  
      - redis-net

  redis-cluster-init:  # redis-cli服务,作用是在上面六个redis节点启动成功之后,执行集群创建的命令
    image: redis:latest
    container_name: redis-cluster-init
    depends_on:  # 设置依赖顺序,在上面六个节点启动成功之后启动
      - redis-node1  
      - redis-node2  
      - redis-node3  
      - redis-node4  
      - redis-node5  
      - redis-node6  
    command: bash -c "redis-cli --cluster create 192.168.163.130:7001 192.168.163.130:7002 192.168.163.130:7003 192.168.163.130:7004 192.168.163.130:7005 192.168.163.130:7006 --cluster-replicas 1 --cluster-yes && exit 0"  # 执行集群初始化的命令, --cluster-yes 是指定在创建集群的时候需要输入一个参数这里设置为yes也就是代表输入yes,exit0 代表该服务启动成功之后自动退出
    networks:  
      - redis-net  
    restart: "no" # 因为该服务只是用来执行Redis集群初始化的命令,所以服务关闭之后不需要重启
    
networks:  
  redis-net:

四、执行yml文件,启动容器

docker-compose -f compose-redis-cluster.yml up -d

在这里插入图片描述

docker ps 查看容器状态

在这里插入图片描述

可以看到六个redis节点都已经启动成功

五、查看Redis集群信息

连接redis-node1

docker exec -it redis-node1 redis-cli -p 7001 -a bingo -c

查看集群状态

cluster info

在这里插入图片描述

查看节点信息

cluster nodes

在这里插入图片描述

查看哈希槽分配信息

cluster slots

在这里插入图片描述

小结

以上就是作者基于Docker-Compose搭建Redis集群的所有内容,如果文中有错误或者表述不清楚的地方欢迎指正和讨论,谢谢 ~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值