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

基于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集群的所有内容,如果文中有错误或者表述不清楚的地方欢迎指正和讨论,谢谢 ~

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用docker-compose搭建Redis集群,你可以按照以下步骤进行操作: 1. 创建一个docker-compose.yml文件,并在其中定义Redis集群的服务。你可以使用以下示例作为参考: ``` version: '3' services: redis-6379: image: redis ports: - "6379:6379" volumes: - ./redis-6379:/data command: redis-server /data/redis.conf redis-6380: image: redis ports: - "6380:6379" volumes: - ./redis-6380:/data command: redis-server /data/redis.conf redis-6381: image: redis ports: - "6381:6379" volumes: - ./redis-6381:/data command: redis-server /data/redis.conf redis-6382: image: redis ports: - "6382:6379" volumes: - ./redis-6382:/data command: redis-server /data/redis.conf redis-6383: image: redis ports: - "6383:6379" volumes: - ./redis-6383:/data command: redis-server /data/redis.conf redis-6384: image: redis ports: - "6384:6379" volumes: - ./redis-6384:/data command: redis-server /data/redis.conf ``` 2. 在每个Redis服务的目录中创建一个redis.conf文件,用于配置Redis集群的参数。你可以使用以下示例作为参考: ``` port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 3. 运行docker-compose命令来启动Redis集群: ``` docker-compose up -d ``` 这将启动Redis集群的所有服务,并将它们连接在一起。 请注意,以上步骤中的示例仅适用于在本地搭建Redis集群。如果你需要在生产环境中搭建Redis集群,你可能需要进行更多的配置和安全性措施。 #### 引用[.reference_title] - *1* *2* *3* [docker(八)—docker-compose搭建redis集群](https://blog.csdn.net/xiaoqiang65/article/details/121011071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值