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