Redis 6 : Redis Sentinel の設定2021/09/21 |
Redis Sentinel による Redis クラスターの監視設定です。
例として、プライマリーノード 1台と レプリカノード 2台で構成した環境へ Sentinel
サーバーを 1台追加して、プライマリーノードの障害発生時に、マスターロールがレプリカノードに自動フェイルオーバーするように設定します。
| +----------------------+ | +----------------------+ | [ Redis Sentinel ] |10.0.0.25 | 10.0.0.30| [ Redis Primary ] | | ctrl.srv.world +----------+----------+ dlp.srv.world | | | | | | +----------------------+ | +----------------------+ | +----------------------+ | +----------------------+ | [ Redis Replica#1 ] |10.0.0.51 | 10.0.0.52| [ Redis Replica#2 ] | | node01.srv.world +----------+----------+ node02.srv.world | | | | | +----------------------+ +----------------------+ |
[1] |
こちらを参考に プライマリー/レプリカ 全ノードでレプリケーション構成を設定しておきます。
注意点として Sentinel により自動フェイルオーバーした際は、レプリカがプライマリーに、プライマリーがレプリカに切り替わるため、 接続/認証パスワードの設定は全ノードで合わせておく必要があります。 |
[2] | Sentinel サーバーをセットアップします。 |
root@ctrl:~#
apt -y install redis-sentinel
root@ctrl:~#
vi /etc/redis/sentinel.conf # 16行目 : 変更 bind 0.0.0.0 ::1
# 27行目 : 設定確認 (サービスとして起動) daemonize yes # 85行目 : 変更 # [sentinel monitor (任意の名称) (プライマリーノードの IP) (プライマリーノードのポート) (Quorum)] # Quorum ⇒ 指定した数の Sentinel サーバーがプライマリーノードがダウンしたと判断した場合にフェイルオーバーする sentinel monitor mymaster 10.0.0.30 6379 1
# 105行目 : プライマリーノードの認証パスワードを追記
sentinel auth-pass mymaster password
# 126行目 : プライマリーノードがダウンしたと判断する時間 (デフォルトは 30秒) sentinel down-after-milliseconds mymaster 30000 # 142行目 : フェイルオーバー中に設定変更するレプリカの数 sentinel parallel-syncs mymaster 1 systemctl restart redis-sentinel |
[3] | 以上で設定完了です。Sentinel サーバーで状態の確認をします。 また、プライマリーノードの Redis を手動で停止させる等して、正常にフェイルオーバーするか等々も確認しておくよいでしょう。 |
root@ctrl:~# redis-cli -p 26379 # [mymaster] のプライマリーノード確認 127.0.0.1:26379> sentinel get-master-addr-by-name mymaster 1) "10.0.0.30" 2) "6379" # [mymaster] のプライマリーノードの詳細 127.0.0.1:26379> sentinel master mymaster 1) "name" 2) "mymaster" 3) "ip" 4) "10.0.0.30" 5) "port" 6) "6379" 7) "runid" 8) "24e63ae9cc7e051ab6dd7d45e0d4c8643848d7aa" 9) "flags" 10) "master" ..... ..... # [mymaster] のレプリカ確認 127.0.0.1:26379> sentinel slaves mymaster 1) 1) "name" 2) "10.0.0.51:6379" 3) "ip" 4) "10.0.0.51" 5) "port" 6) "6379" 7) "runid" 8) "e4abcf2133265a530a1d003cbd2c615f14aaec16" 9) "flags" 10) "slave" ..... ..... 2) 1) "name" 2) "10.0.0.52:6379" 3) "ip" 4) "10.0.0.52" 5) "port" 6) "6379" 7) "runid" 8) "db1dbbae22ecbfa38863e6e0f73a08b0b14a68a2" 9) "flags" 10) "slave" ..... ..... |
Sponsored Link |