メッセージ フロー処理プラットフォームの大規模な高可用性およびフェイルオーバー戦略としての Redis

王林
リリース: 2023-06-20 09:13:39
オリジナル
849 人が閲覧しました

メッセージ フロー処理プラットフォームの大規模な高可用性およびフェイルオーバー戦略としての 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!