Sentinel モニタリングを使用して高可用性の Redis データベースを作成する方法

カテゴリを表示

Sentinel モニタリングを使用して高可用性の Redis データベースを作成する方法

所要時間

概要 #

Redisの は、メッセージ ブローカー、キャッシュ、キー値データベースとして使用できるオープン ソースのインメモリ データ構造ストアです。ハッシュ、リスト、セット、ソート セット、ビットマップ、地理空間インデックス、ハイパーログなど、さまざまなデータ構造をサポートしています。

Redis がユニークなのは、ストアとキャッシュの両方として考えることができることです。Redis は、データがメイン コンピューターのメモリから変更および/または読み取られるように設計されています。

Redisは他の機能の中でも、高可用性を提供します。 レディスセンチネル、および自動パーティショニングを介して Redisクラスターさらに、Redis には、スレーブ インスタンスをマスター インスタンスの正確なコピーにできるレプリケーション メカニズムがあります。スレーブは、リンクが切断されるたびにマスターに自動的に再接続し、マスターの正確なコピーになることを目指します。

Redis Sentinel は Redis に高可用性を提供するため、多くの場合、人間の介入なしに障害を自動的に処理できますが、監視、通知などの他のタスクも提供し、クライアントの構成プロバイダーとして機能します。

しかし、 Sentinel が Redis サーバーがダウンしていることを検出すると何が起こりますか? この記事では、Redis 用の完全な高可用性仮想サービスを作成する方法について説明します。

Redis サーバーが監視に Sentinel を使用していない場合でも、この構成を実行できることに留意してください。

Redis 負荷分散環境 #

この記事で実現したいシナリオを以下の図に示します。

Redis Sentinel はすべての Redis ノードの状態をチェックし、エラーが検出されると Redis サーバーの役割を変更します。

ロード バランサも状態をチェックしますが、数秒ごとに定期的にチェックします。Sentinel が問題を検出しても、ロード バランサが認識するまでに数秒かかる場合があります。これにより、バランサが間違ったマスターにリクエストを送信し、そのマスターは障害が発生したばかりで Sentinel によって切り替えられたマスターになる可能性があります。

RELIANOID この問題を解決する方法として、L4 ファームは定期的にチェックを実行します。一方、バックエンドに渡されるフローには、以前のチェックが含まれていないものもあります。ファーム ガーディアンは、バックエンドが応答していないことを認識すると、アラームを発して、フローがこの方向に進んではいけないことを示します。

これを考慮すると、一方ではチェックがあり、他方ではリクエストがあります。チェックが失敗した場合、フローはすぐに別のノードに送信されます。進行中の申請も別のオンライン ノードにリダイレクトされます。これについては、構成でさらに詳しく説明します。

Redis 負荷分散構成 #

ファームを設定する前に、仮想IPが必要です。そのためには、 ネットワーク > 仮想インターフェース。 次にクリック アクション > 仮想インターフェースの作成。 次に選択 親インターフェース, 仮想インターフェース名 とその IPアドレス:

次に、Redis仮想サーバー用にL4xNATファームを作成する必要があります。そのためには、 LSLB > 農場、をクリックしてください 行動 および 農場を作る.

初期パラメータを設定したら、 創造する。 次に、 高機能 タブをクリックし、プロトコル タイプが TCP であることを確認します。

次に、 サービスバックエンドとファームガーディアンをここでセットアップして、高度なヘルスチェックを行います。まず、 バックエンド セクション、クリック アクション > バックエンドの追加 以下のように表示されます。

Redis の監視と高度なヘルスチェック #

最後に、前述のケースで説明したように、常にオンライン ノードを使用していることを確認するために、Farm Guardian チェックが必要です。そのためには、Farm Guardian コマンドとして以下を構成する必要があります。

check_tcp -E -H ホスト -p ポート -s 'レプリケーション情報\r\n' -e ロール:マスター -t 3

場所 主催者 および PORT 各バックエンドのRedisサーバーのIPアドレスとポートに置き換えられます。コマンド 情報複製 どのマスターが生きているかを確認するためにRedisサーバーから情報を取得し、マスターロールが提示された場合のみ接続がサーバーにリダイレクトされます。Sentinelがロールを変更するとすぐにロードバランサーが変更を検出し、Redisサーバーがダウンしているとマークされます。フラグ -t Farm Guardian が Redis サーバーの応答を待機する秒数です。応答がないままタイムアウトに達すると、Redis サーバーはダウンしているとマークされます。一方、Redis サーバーの正常性が回復すると、再びアップ状態になります。

しかし、この特定の農場のファームガーディアンを変更する前に、 モニタリング > Farmguardian クリックして アクション > Farmguardian の作成.

新しいRedis Sentinelヘルスチェッカーにわかりやすい名前を選択します。たとえば、 チェック_redis_マスター 例のように、 チェック_tcp フィールドで ファームガーディアンをコピーする をクリックします。入力したコードが正しければ、MFAの設定は正常に完了します 創造する としてジョブステータス出力ログに記録されます。

最後に、上記のコマンドを Command パラメータを入力し、以下のように設定します。

ソフトウェアの制限をクリック 送信する.

ここで、Redis仮想サービスでこの新しいFarm Guardianの高度なヘルスチェックを選択します。 LSLB > 農場、名前で作成された農場へ レディスファーム, サービス タブを選択します。最後に、 チェック_redis_マスター コマンドは以下で作成されました バックエンドのヘルスチェック.

ソフトウェアの制限をクリック 更新 ファームと Redis は完全に高可用性になります。

参考情報 #

https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial

📄 この文書をPDF形式でダウンロードする #

    EMAIL: *