Redisのセンチネルモードの仕組み
Redisのセンチネルモードは、複数のRedisのインスタンスを監視・管理するための分散型アーキテクチャーです。主にセンチネル、マスター、スレーブの3つのロールを含んでいます。
- 哨兵とは、Redisインスタンスの稼働状況を監視する独立したプロセスです。定期的にハートビートの確認を行い、マスターノードとスレーブノードの可用性を確認し、障害を検出した場合にはそれに対応する措置をとります。
- マスターノード:マスターノードはRedisクラスターにおいて書き込み処理を担当するノードのことです。センチネルはマスターノードの可用性を監視し、マスターノードに障害が発生すると、自動的にスレーブノードの中から新しいマスターノードを選択します。
- スレーブノード:スレーブノードはRedisクラスタで読み込み処理を担当するノードです。スレーブノードはマスターノードのデータを複製し、定期的にマスターノードとデータを同期します。
哨兵モードの仕組み:
- 哨兵が起動すると、その構成ファイルから、主ノードと従ノードを含むすべてのRedisインスタンスの情報が取得されます。
- センティネルは定期的にはプライマリノードとセカンダリノードにPINGコマンドを送出して可用性を確認します。特定の時間内に応答がなければ、センティネルはそのノードが利用不可としてマークします。
- マスターノードが利用不可の場合、センティネルは設定されたポリシーに基づいてスレーブノードを新しいマスターノードとして選択します。選択基準には、ノードの優先度、前回の同期時のオフセットなどが使用できます。
- 哨兵は、他の哨兵とクライアントに新しいマスターノードの情報をブロードキャストして、構成を更新します。
- センティネルは、マスターノードが復旧したときに、主ノードとして再起動するか、またはクラスタに参加するスレーブノードとして追加するかどうかを決定します。
主ノードが故障した場合に自動的に従ノードに切り替えることができ、システムの正常な動作を保証するため、哨兵モードは Redis クラスタの可用性と耐障害性を向上させます。