docker-compose之redis cluster模式-2

  一、上一篇文章介绍了redis-cluster的docker安装方式,地址:https://www.cnblogs.com/ll409546297/p/16924478.html

  二、说明上面的问题:因为都是master,如果存在一个机器宕机的情况,那么整个集群都不可用,所以为了保证集群的稳定性,一般至少会采用一主一备的方式。

  三、因为redis的cluster模式要求3台master所以至少需要6个节点。

  四、安装部署

  1)dockerfile

FROM redis:5.0.14
MAINTAINER xbd
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  2)docker-compose.yml

version: "2"
services:
  xbd-redis-1:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-1
    restart: always
    container_name: xbd-redis-1
    ports:
      - 6379:6379
      - 16379:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6379',
              '--cluster-announce-bus-port 16379']

  xbd-redis-2:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-2
    restart: always
    container_name: xbd-redis-2
    ports:
      - 6380:6379
      - 16380:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6380',
              '--cluster-announce-bus-port 16380']
  xbd-redis-3:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-3
    restart: always
    container_name: xbd-redis-3
    ports:
      - 6381:6379
      - 16381:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6381',
              '--cluster-announce-bus-port 16381']

  xbd-redis-4:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-4
    restart: always
    container_name: xbd-redis-4
    ports:
      - 6382:6379
      - 16382:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6382',
              '--cluster-announce-bus-port 16382']

  xbd-redis-5:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-5
    restart: always
    container_name: xbd-redis-5
    ports:
      - 6383:6379
      - 16383:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6383',
              '--cluster-announce-bus-port 16383']

  xbd-redis-6:
    build:
      context: ./
      dockerfile: ./config/Dockerfile/Dockerfile-redis
    image: xbd-redis-6
    restart: always
    container_name: xbd-redis-6
    ports:
      - 6384:6379
      - 16384:16379
    environment:
      - TZ=Asia/Shanghai
    privileged: true
    command: ['redis-server',
              '--bind 0.0.0.0',
              '--protected-mode yes',
              '--daemonize no',
              '--requirepass xbd',
              '--masterauth xbd',
              '--maxmemory 1GB',
              '--maxmemory-policy allkeys-lru',
              '--cluster-enabled yes',
              '--cluster-config-file nodes-6379.conf',
              '--cluster-node-timeout 15000',
              '--cluster-replica-validity-factor 10',
              '--cluster-migration-barrier 1',
              '--cluster-require-full-coverage yes',
              '--cluster-replica-no-failover no',
              '--cluster-announce-ip 192.168.5.14',
              '--cluster-announce-port 6384',
              '--cluster-announce-bus-port 16384']

  3)配置增加说明:

# 增加复制节点的认证需求
masterauth xbd

  五、集群建立

redis-cli -a xbd --cluster create --cluster-replicas 1 192.168.5.14:6379 192.168.5.14:6380 192.168.5.14:6381 192.168.5.14:6382 192.168.5.14:6383 192.168.5.14:6384

  

  六、节点查看和hash槽确认

  

   

   七、测试

redis-cli -h 192.168.5.14 -p 6379 -a xbd -c

  

  八、宕机测试

docker stop xbd-redis-1

  

 

   可以看到存在很多次的重试,然后备机升级成master

  测试:

  

 

   服务正常。

  节点查看

  

 

   可以确认具备容灾能力。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章