Redis CentinelクラスタDocker配備レコード

7237 ワード

一、環境準備


OS:CentOS 7.4 Docker:Docker version 19.03.5 3台のサーバ、hostモードで6つのコンテナ(1つのmaster、2つのslave、3つのsentinel):
IP
コンテナ名
Port
192.168.128.26
redis 6379(masterノード)
6379
192.168.128.27
redis 6379(slaveノード)
6379
192.168.128.28
redis 6379(slaveノード)
6379
192.168.128.26
sentinel 26379(sentinelノード)
26379
192.168.128.27
sentinel 26379(sentinelノード)
26379
192.168.128.28
sentinel 26379(sentinelノード)
26379

二、引取鏡像

docker pull redis:5.0.7

三、redis-serverを起動する


マスターノード:
プロファイルの追加
vi /home/redis6379/redis.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/data"

プロファイルの説明
  • port:ポート番号.
  • daemonize:redisは単一プロセスマルチスレッドのパターンを採用している.redis.confのオプションdaemonizeがyesに設定されている場合、デーモンプロセスモードがオンになります.このモードでは、redisはバックグラウンドで実行する、プロセスpid番号をredisに書き込む.confオプションpidfileで設定されたファイルでは、手動killプロセスを除いてredisが実行されます.daemonizeオプションがnoに設定されている場合、現在のインタフェースはredisのコマンドラインインタフェースに入り、exitが強制的に終了または接続ツール(putty、xshellなど)を閉じると、redisプロセスが終了します.
  • logfile:ログファイルの名前は、作業ディレクトリの下で自動的に作成され、redisの実行ログが記録されます.
  • dbfilename:dumpファイルの名前は、作業ディレクトリの下で自動的に作成されます.
  • dir:作業ディレクトリのパス.

  • redis-serverの起動
    docker run -d --network host --privileged=true -v /home/redis6379/redis.conf:/etc/redis/redis.conf -v /home/redis6379/data:/data --name redis6379 redis:5.0.7 redis-server /etc/redis/redis.conf --appendonly yes
    

    起動パラメータの説明
    --network host:  host       。          host   ,               Network Namespace,           Network Namespace。             ,      IP  ,         IP    。
    --privileged=true:      root      root   ,      root           。
    -v /home/redis6379/redis.conf:/etc/redis/redis.conf :      。
    -v /home/redis6379/data:/data :  redis              ,     。
    redis-server /etc/redis/redis.conf :       ,  redis        ,       redis.conf      。
    --appendonly yes :redis         。
    

    2つのslaveノード:
    プロファイルの追加
    vi /home/redis6379/redis.conf
    
    port 6379
    daemonize yes
    logfile "6379.log"
    dbfilename "dump-6379.rdb"
    dir "/data"
    slaveof 192.168.128.26 6379
    

    注意masterノードよりもslaveeofの構成が多く、192.168.128.26379のslaveであることを示す
    redis-serverの起動
    docker run -d --network host --privileged=true -v /home/redis6379/redis.conf:/etc/redis/redis.conf -v /home/redis6379/data:/data --name redis6379 redis:5.0.7 redis-server /etc/redis/redis.conf --appendonly yes
    

    三、redis-sentinelを起動する


    3ノードにプロファイルを追加
    vi /home/redis6379/sentinel.conf
    
    port 26379
    daemonize yes
    logfile "26379.log"
    dir "/data"
    sentinel monitor mymaster 192.168.128.26 6379 2
    sentinel down-after-milliseconds mymaster  30000
    sentinel parallel-syncs mymaster  1
    sentinel failover-timeout mymaster 180000
    

    プロファイルの説明
  • port daemonize logfile dir:通常のredis serverノードと同じ構成.
  • sentinel monitor:このコマンドのフォーマットはsentinel monitor です.:パラメータは哨兵監視のマスターノードの別名、:パラメータは監視のマスターノードのip、:監視のマスターノードのポート、:代表はマスターノードが最終的に必要な票数に達しないと判定します.故障の発見と判定に用いる.例えばquorumを2に配置し、少なくとも2つの哨兵ノードがmasterノードが到達できないと判断することを表すと、この到達できない判定こそ客観的であり、値設定が小さいほど、ラインオフに達する条件は緩やかになり、逆に厳しくなる.一般的には、哨兵ノードの数を1に減らすことをお勧めします.
  • sentinel down-after-milliseconds:コマンドフォーマットはsentinel down-after-milliseconds :パラメータがメインノードの名前、ここでは上に設定したmymaster、:sentinelノードは定期的にmasterノードにpingコマンドを送信し、timesを超えても返事が来なければ、そのノードは到達できないと判定する.down-after-millisecondsはをパラメータとしているが、実際には哨兵ノード、メインノード、スレーブノードの判定が同時に有効であり、メインノードからスレーブノードと哨兵ノードの情報を取得することができる.
  • sentinel parallel-syncs:形式はsentinel parallel-syncs 哨兵ノード集合によるマスターノードの故障判定が一致した場合、哨兵リーダーノードはフェイルオーバー操作を行い、新しいマスターノードを選出し、元のスレーブノードは新しいマスターノードにコピー操作を開始し、parallel-syncsパラメータはノードから新しいマスターノードにコピーを開始する個数を制限する.レプリケーションを開始するスレーブノードが多すぎると、プライマリノードがブロックされる可能性があります.レプリケーションを開始するスレーブノードが少なすぎると、レプリケーション中にデータが一致しない可能性があります.
  • sentinel failover-timeout:形式はsentinel failover-timeout フェイルオーバーのタイムアウト時間を示す.

  • redis-sentinelの起動
    docker run -d --network host --privileged=true -v /home/redis6379/sentinel.conf:/etc/redis/sentinel.conf --name sentinel26379 redis:5.0.7 redis-sentinel /etc/redis/sentinel.conf
    

    四、検証


    コマンドの実行
    docker exec -it sentinel26379 /bin/bash
    redis-cli -p 26379
    sentinel masters  //             
    

    五、redis-sentinel常用コマンド


    sentinelの基本状態情報
    info
    

    監視されているすべてのプライマリ・サーバと、これらのプライマリ・サーバの現在のステータスをリストします.
    sentinel masters
    

    指定主redisのノード状態を一覧表示sentinel master
    sentinel master mymaster
    

    指定したマスターredisのスレーブノード状態を一覧表示するsentinel slaves
    sentinel slaves mymaster
    

    指定主redisの監視哨兵情報を列挙し、彼自身を含まないsentinel sentinels
    sentinel sentinels mymaster
    

    指定した名前のマスタサーバのIPアドレスとポート番号を返すsentinel get-master-addr-by-name
    sentinel get-master-addr-by-name mymaster
    

    現在のオンラインの哨兵ノードを確認します.全部で5つのノードがある場合、4票を設定しますが、チェックした後は3ノードしかオンラインになっていないので、ずっと監視切替ができませんsentinel ckquorum
    sentinel ckquorum mymaster
    

    現在の歩哨のあるメインノードに対する監視を取り消すsentinel remove
    sentinel remove mymaster
    

    六、参考文書


    https://www.jianshu.com/p/f3c6139284a6 https://www.jianshu.com/p/062669be85da https://blog.csdn.net/lcyaiym/article/details/76863802 https://www.cnblogs.com/guarderming/p/10219771.html