DockerでのRedisマスタースレーブレプリケーションとセンチネル

マスタースレーブ複製

  1. wegtをインストールする

    yum -y install wget
    
  2. redis設定ファイルをダウンロード

    wget http://download.redis.io/redis-stable/redis.conf
    
  3. そして、3つのコピーを作成します。2つは従属で、1つは主に

    [root@localhost conf]# ls
    redis.conf  redis-master.conf  redis-slave1.conf  redis-slave2.conf
    
  4. 構成ファイルを変更する

    • ホスト構成ファイル

      # 允许所有IP访问Redis
      bind 0.0.0.0
      
    • 2つのスレーブ構成ファイル

      # 允许所有IP访问Redis
      bind 0.0.0.0
      # 设置主机的地址:IP 端口。接下去通过--lin进行地址解析,docker自动将master解析为地址
      replicaof master 6379
      

      ヒント:2番目の構成も構成ファイルslaveof master 6379指定できませんが、コマンドをredis0-cli 入力しますが、スレーブが再起動するたびに、コマンドを再入力してホストを指定する必要があります

  5. コンテナーを起動する

    • ホスト

      docker run --name redis-master \
      -v /mydata/redis-test/conf/redis-master.conf:/usr/local/etc/redis/redis.conf \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
    • スレーブ1

      docker run --name redis-slave1 \
      -v /mydata/redis-test/conf/redis-slave1.conf:/usr/local/etc/redis/redis.conf \
      --link redis-master:master \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
    • スレーブ2

      docker run --name redis-slave2 \
      -v /mydata/redis-test/conf/redis-slave2.conf:/usr/local/etc/redis/redis.conf \
      --link redis-master:master \
      -d redis redis-server /usr/local/etc/redis/redis.conf
      
  6. Redisマスタースレーブステータスの表示

    进入哨兵容器
    docker exec -it 容器名/容器ID redis-cli
    查看主从状态
    info replication
    

--link--link 关联容器名/关联容器ID:aliasその中でも、エイリアスはリンクの下のソースコンテナのエイリアスです。

この方法では、Dockerが自動的にDNS解決を実行するため、コンテナーはエイリアスまたは関連付けられたコンテナー名(関連付けられたコンテナーID)を介して通信できます。

センチネルモード

単一の歩哨

  1. センチネル構成ファイルをダウンロード

    wget http://download.redis.io/redis-stable/sentinel.conf
    
  2. 構成ファイルを変更するsentinel.conf

    # 参数说明:mymaster:哨兵名称;master 6379:被监控主机IP和端口;1:执行故障恢复操作前至少需要几个哨兵节点同意
    # 因为当前只配了一个哨兵,所以设为1,一般以一主二仆要配置三个哨兵,那么最后一个值就配为2
    sentinel monitor mymaster master 6379 1
    
    # 配置日志文件,默认会在容器/data下,如果不需要可以不管
    logfile "sentinel.log"
    
  3. 歩哨の実行

    docker run --name redis-sentinel \
    -v /mydata/redis-test/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    

上記の方法は、センチネルが1つしかない状況での使用です。現時点では、センチネルもダウンしている可能性があり、回復に失敗します。

マルチセンチネル

次のデモは3つの歩哨を構成します

  1. センチネル構成ファイルをダウンロード

    wget http://download.redis.io/redis-stable/sentinel.conf
    
  2. 構成ファイルを変更する

    # 关闭安全模式
    protected-mode no
    
    # 最后一个值修改为2,即需要两个哨兵节点投票同意才能故障恢复
    sentinel monitor mymaster master 6379 2
    
  3. 3つのコピーを作成

    [root@localhost conf]# ls
    sentinel1.conf  sentinel2.conf  sentinel3.conf
    
  4. 3つの歩哨コンテナを起動する

    docker run --name redis-sentinel1 \
    -v /mydata/redis-test/conf/sentinel1.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    
    docker run --name redis-sentinel2 \
    -v /mydata/redis-test/conf/sentinel2.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    --link redis-sentinel1:sentinel \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    
    docker run --name redis-sentinel3 \
    -v /mydata/redis-test/conf/sentinel3.conf:/usr/local/etc/redis/sentinel.conf \
    --link redis-master:master \
    --link redis-sentinel2:sentinel \
    -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
    

    最後の2つのコンテナーには、より多くの構成と前の番兵が必要であることに注意してください--link。そうでなければ、番兵は通信できません。

  5. 歩哨の動作を確認する

    # 进入哨兵容器
    docker exec -it 哨兵容器名/哨兵容器ID bash
    # 进入哨兵
    redis-cli -p 26379
    # 查看哨兵运行情况
    info sentinel
    

おすすめ

転載: www.cnblogs.com/JMWan233/p/12681608.html