Ubuntu 24.04
Sponsored Link

Redis 7 : Redis Sentinel の設定2024/06/11

 
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
# 15行目 : 変更 (サービスとして起動)

daemonize
yes
# 73行目 : 変更
# [sentinel monitor (任意の名称) (プライマリーノードの IP) (プライマリーノードのポート) (Quorum)]
# Quorum ⇒ 指定した数の Sentinel サーバーがプライマリーノードがダウンしたと判断した場合にフェイルオーバーする

sentinel monitor mymaster 10.0.0.30 6379 1
# 93行目 : プライマリーノードの認証パスワードを追記

sentinel auth-pass mymaster password
# 106行目 : プライマリーノードがダウンしたと判断する時間 (デフォルトは 30秒)
# 変更する場合はコメント解除して値を設定

# sentinel down-after-milliseconds <master-name> <milliseconds>
# 188行目 : フェイルオーバー中に設定変更するレプリカの数を設定

sentinel parallel-syncs mymaster 1
root@ctrl:~#
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) "ac5e23c88f1ca041f6d51968722df16764905dbe"
 9) "flags"
10) "master"
.....
.....

# [mymaster] のレプリカ確認
127.0.0.1:26379> sentinel replicas mymaster 
1)  1) "name"
    2) "10.0.0.51:6379"
    3) "ip"
    4) "10.0.0.51"
    5) "port"
    6) "6379"
    7) "runid"
    8) "9978b28dedbe82fd93d90edc9bfc4e64d3986f9d"
    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) "d7c52d24263f1763151f1ea91933f68fffdf0ff0"
    9) "flags"
   10) "slave"
.....
.....
関連コンテンツ