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

投稿者 Zevenet | 10年2019月XNUMX日

概要

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

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

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

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

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

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

Redisロードバランシング環境

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

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

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

Zevenet この問題を解決する方法を提供するL4ファームは、定期的にチェックを実行します。 一方、以前のチェックを含まないバックエンドに渡されるフローもあります。 ファームガーディアンは、バックエンドが応答しないことに気付くと、アラームを発生させ、フローがこのように進むべきではないことを示します。

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

Redisロードバランシング設定

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

次に、Redis仮想サーバーの場合、L4xNATファームを作成する必要があります。 そのために、に行きます LSLB>農場、をクリックしてください アクション 及び ファームを作成する.

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

次に、 サービス/製品。 バックエンドとFarm Guardianは、高度なヘルスチェックのためにここでセットアップされます。 最初に見つける バックエンド セクション、クリック アクション>バックエンドを追加 以下に示すように:

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

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

check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3

どこ HOST 及び PORT 各バックエンドのRedisサーバーのIPアドレスとポートに置き換えられます。 コマンド 情報の複製 どのマスターが生きているかを確認するためにRedisサーバーから情報を取得し、ロールマスターが提示された場合のみ接続がサーバーにリダイレクトされます。Sentinelがロールを変更するとすぐに、ロードバランサーは変更を検出し、Redisサーバーはダウンとしてマークされます。 旗 -t Farm GuardianがRedisサーバーの応答を待機する秒数であり、応答せずにタイムアウトに達すると、Redisサーバーはダウンとしてマークされます。 一方、Redisサーバーの健全性が回復すると、再び稼働します。

ただし、この特定のファームのFarm Guardianを変更する前に、 モニタリング> Farmguardian クリックして アクション> Farmguardianの作成.

新しいRedis Sentinelヘルスチェッカーのわかりやすい名前を選択します。たとえば、 check_redis_master 例のように、今選択します check_tcp 提出された コピーするFarmguardian とをクリック データドリブン 以下に示すように。

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

をクリックしてください 送信.

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

をクリックしてください アップデイト ファームと現在のRedisは完全に高可用性になります。

リファレンス

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

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事