Docker-03-搭建Redis集群

14 篇文章 0 订阅
9 篇文章 0 订阅

说明

  • 一个Docker搭建Redis集群的简单案例
  • 架构:Docker启动6台Redis,3主3从

操作步骤

  • Docker创建一个自定义网路net11,网段:192.168.11.*

    docker network create --gateway 192.168.11.1 --subnet 192.168.11.0/24 net11
    
  • shell脚本快速创建6组Redis配置(脚本快不容易出错,也可手动一个一个创建)

    for port in $(seq 1 6); \
    do \
    mkdir -p /data/redis/node-${port}/conf
    touch /data/redis/node-${port}/conf/redis.conf
    cat << EOF >/data/redis/node-${port}/conf/redis.conf
    port 6379 
    bind 0.0.0.0
    cluster-enabled yes 
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 192.168.11.10${port}
    cluster-announce-port 6379
    cluster-announce-bus-port 16379
    appendonly yes
    EOF
    done
    
    • port:节点端口,即对外提供通信的端口
    • cluster-enabled:是否启用集群
    • cluster-config-file:集群配置文件
    • cluster-node-timeout:连接超时时间
    • cluster-announce-ip:集群各节点IP地址
    • cluster-announce-port:集群节点映射端口
    • cluster-announce-bus-port:集群总线端口
    • appendonly:持久化模式
  • shell脚本快速启动6组Redis

    for port in $(seq 1 6); \
    do \
    docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
    -v /data/redis/node-${port}/data:/data \
    -v /data/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
    -d --net net11 --ip 192.168.11.10${port} redis:6.2.6-alpine redis-server /etc/redis/redis.conf 
    done
    
    • Redis容器中默认data目录:/data,将其挂载到宿主机实现数据持久化
    • –net net11:指定容器要连接的网这里net11为上一步创建的自定义网络名
  • 查看容器,保证6个Redis全部启动

    docker ps
    CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                                                                      NAMES
    2cc26788d675   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6376->6379/tcp, :::6376->6379/tcp, 0.0.0.0:16376->16379/tcp, :::16376->16379/tcp   redis-6
    8178f15a1366   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6375->6379/tcp, :::6375->6379/tcp, 0.0.0.0:16375->16379/tcp, :::16375->16379/tcp   redis-5
    0bdd5a08647f   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6374->6379/tcp, :::6374->6379/tcp, 0.0.0.0:16374->16379/tcp, :::16374->16379/tcp   redis-4
    aa262acbb39c   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6373->6379/tcp, :::6373->6379/tcp, 0.0.0.0:16373->16379/tcp, :::16373->16379/tcp   redis-3
    a1a890abd61f   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6372->6379/tcp, :::6372->6379/tcp, 0.0.0.0:16372->16379/tcp, :::16372->16379/tcp   redis-2
    8075ca306a2b   redis:6.2.6-alpine   "docker-entrypoint.s…"   23 minutes ago   Up 23 minutes   0.0.0.0:6371->6379/tcp, :::6371->6379/tcp, 0.0.0.0:16371->16379/tcp, :::16371->16379/tcp   redis-1
    
  • 使用任意一个Redis容器创建集群(此处以容器redis-1为例)

    docker exec -it redis-1 /usr/local/bin/redis-cli --cluster create --cluster-replicas 1 \
    192.168.11.101:6379 192.168.11.102:6379 192.168.11.103:6379 \
    192.168.11.104:6379 192.168.11.105:6379 192.168.11.106:6379
    
  • 使用任意一个Redis容器连接集群中任意Redis节点(此处以容器redis-1为例)

    docker exec -it redis-1 /usr/local/bin/redis-cli -c -h redis-1
    # 或
    docker exec -it redis-1 /usr/local/bin/redis-cli -c -h 192.168.11.101
    
    • -c:表示连接集群
  • 查看集群信息

    192.168.11.101:6379> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:5695
    cluster_stats_messages_pong_sent:5628
    cluster_stats_messages_sent:11323
    cluster_stats_messages_ping_received:5623
    cluster_stats_messages_pong_received:5695
    cluster_stats_messages_meet_received:5
    cluster_stats_messages_received:11323
    
  • 查看集群节点

    192.168.11.101:6379> cluster nodes
    2c03a9347c9bb051056407ca642d423a6a4a91f8 192.168.11.102:6379@16379 master - 0 1644906593000 2 connected 5461-10922
    d66bde935aa073c379925d1e580b6ba539627549 192.168.11.105:6379@16379 slave 1eac1bb1b378c257f8f721071f2c507da2062965 0 1644906594000 1 connected
    1eac1bb1b378c257f8f721071f2c507da2062965 192.168.11.101:6379@16379 myself,master - 0 1644906593000 1 connected 0-5460
    69fdce9603d6930ee05c5558388530c5fa02ecc4 192.168.11.106:6379@16379 slave 2c03a9347c9bb051056407ca642d423a6a4a91f8 0 1644906594463 2 connected
    43ea2a917d6bb388256f340ba8f9dcb7675c0be6 192.168.11.104:6379@16379 slave 6a534a9cd31239bb5f284cac742ca96d7737d0ee 0 1644906594970 3 connected
    6a534a9cd31239bb5f284cac742ca96d7737d0ee 192.168.11.103:6379@16379 master - 0 1644906593553 3 connected 10923-16383
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值