メッセージ フロー処理プラットフォームの大規模な高可用性およびフェイルオーバー戦略としての Redis
高性能 NoSQL データベースとしての Redis は、ますます注目され、使用されるようになりました。特にインターネット分野では、Redis はキャッシュとして使用されるだけでなく、メッセージ フロー処理プラットフォームの重要なインフラストラクチャの 1 つとなっています。この使用シナリオでは、メッセージ フロー プラットフォームの安定した動作を確保するために、Redis の高可用性とフェイルオーバー戦略を考慮する必要があります。
Redis の高可用性
Redis の高可用性を実現するには、Redis Sentinel または Redis Cluster を使用できます。このうち、Redis Sentinelは複数のRedisマスター/スレーブノードをサポートし、相互監視することで自動フェイルオーバーを実現し、Redis Clusterは複数のRedisノードでクラスターを形成し、自動データシャーディングや自動フェイルオーバー機能を実現します。
高可用性保証に Redis Sentinel を使用する場合は、次の点に注意する必要があります:
1. 少なくとも 3 つの Sentinel ノード
Redis Sentinel には少なくとも 3 つの Sentinel ノードが必要ですフェイルオーバーを実行するノード。これは、Redis Sentinel が実行されているときに相互に監視するためです。Sentinel が Redis マスター ノードがダウンしていると判断すると、この情報を他の Sentinel ノードにブロードキャストします。事前に 3 つ以上の Sentinel ノードのコンセンサスに達する必要があります。 Redis マスター ノードがダウンしていると考えられるため、この Redis マスター ノードに障害が発生します。
2. 複数の Redis マスター/スレーブ ノード
Redis Sentinel は、複数の Redis マスター/スレーブ ノードをサポートして、読み取り/書き込みの分離と負荷分散を実現できます。同時に、1 つのマスター ノードのダウンタイムが他のマスター ノードに影響を与えないように、複数の Redis マスター ノードも互いに独立している必要があります。
3. マスターノードとスレーブノードの間で時刻同期が必要です
Redis Sentinel の作業では、判断のために正確なタイムスタンプが必要です。したがって、Redis マスター ノードとスレーブ ノード間の時間が同期されていることを確認する必要があります。時刻同期は NTP サービスを通じて実現できます。
Redis Cluster をメッセージ フロー処理プラットフォームのインフラストラクチャとして使用する場合は、次の問題に注意する必要があります:
1. ノードの数
Redis Cluster がサポートする最大 16384 ノード、6 ノード未満の使用はお勧めしません。同時に、各ノードのハードウェア構成とパフォーマンスにも注意を払う必要があります。
2. 自動データシャーディング
Redis クラスターは、各ノード上のデータ量が相対的にバランスがとれるように、各ノードにデータを自動的に分散します。ユーザーはデータ シャーディングを手動で実行する必要はなく、Redis Cluster が自動的に管理します。
3. フェイルオーバー
Redis Cluster は、障害発生時の自動転送もサポートしています。クラスター内のマスター ノードがダウンすると、Redis クラスターはこのノードのデータを他のノードに自動的に転送し、クラスターの可用性を確保するために新しいマスター ノードを選択します。
Redis のフェイルオーバー戦略
Redis の運用中、ノードのダウンタイム、ネットワーク障害、マスターとスレーブの同期の問題など、さまざまな障害が発生する可能性があります。この時点で、Redis の自動フェイルオーバーを実装する方法を検討する必要があります。
1. Redis Sentinel のフェイルオーバー
Redis Sentinel は次の方法でフェイルオーバーを実現できます:
(1) 障害検出
Redis Sentinel は定期的に実行します。 Redis マスター/スレーブ ノードのヘルス チェック ノードがダウンするか接続が失われると、Sentinel はそのノードを「ダウンしている可能性がある」とマークします。
(2) クォーラムの計算
Sentinel ノードは、Redis マスター ノードがダウンしている疑いがあることを検出すると、他の Sentinel ノードに通知を送信します。マスターノードがダウンしている場合、マスターノードは真にダウンしていると判断されます。
(3) 新しいマスターの選出
マスター ノードがダウンすると、他のスレーブ ノードの 1 つが新しいマスター ノードとして選出されます。同時に、この新しいマスター ノードは古いマスター ノード上のデータも同期する必要があります。
2. Redis Cluster のフェイルオーバー
Redis Cluster がフェイルオーバーを実装する方法は Redis Sentinel とは異なります:
(1) 障害検出
Redis Cluster Itノード間のハートビート情報を収集することで、ノードがダウンしているかどうかを検出します。
(2) フェイルオーバー
マスター ノードがダウンすると、Redis Cluster はスレーブ ノードを新しいマスター ノードとして選択し、古いマスター ノードのデータを新しいマスター ノードに自動的に転送します。 。同時に、Redis Cluster は各ノード間のデータ分散も更新します。
概要
Redis は、メッセージ フロー処理プラットフォームのインフラストラクチャとして、高可用性とフェイルオーバー機能を維持する必要があります。 Redis Sentinel または Redis Cluster を使用する場合は、ノード数、マスター/スレーブ ノード構成、自動データ シャーディング、および Redis の安定した動作を確保するための障害検出やフェイルオーバーなどの障害処理戦略などの要素を考慮する必要があります。
以上がメッセージ フロー処理プラットフォームの大規模な高可用性およびフェイルオーバー戦略としての Redisの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。