Memorystore for Redis の高可用性

このページでは、スタンダード ティアの Memorystore for Redis インスタンスの高可用性(HA)について説明します。

スタンダード ティアでは、データを 1 つ以上のレプリカに複製し、レプリカへの高速の自動フェイルオーバーを提供することで、Redis インスタンスを一般的な障害から保護します。

readReplicaMode 設定が無効になっているスタンダード ティア インスタンスには、プライマリ インスタンスと HA 機能を提供するレプリカが含まれています。この設定が有効になっているスタンダード ティア インスタンスには、プライマリ インスタンスと 1 ~ 5 個のリードレプリカがあります。この構成のリードレプリカは、読み取りを実行し、HA 機能のフェイルオーバー サポートを提供します。readReplicaMode 設定が無効になっているか有効になっているかを確認するには、インスタンスのリードレプリカ情報を表示するをご覧ください。

Memorystore for Redis は、プライマリ インスタンスを 1 つ以上のレプリカに複製することで高可用性を実現します。Memorystore for Redis は、非同期レプリケーション プロトコルを使用して、プライマリ インスタンスのデータに対する変更をレプリカにコピーします。レプリケーションは非同期であるため、プライマリ インスタンスの書き込みレートによっては、レプリカがインスタンスより遅れることがあります。

プライマリ インスタンスに障害が発生すると、インスタンスは自動的にレプリカにフェイルオーバーします。複数のレプリカがあるインスタンスの場合、インスタンスはレプリケーションの遅延が最も少ない正常なレプリカに自動的にフェイルオーバーします。

読み取り専用レプリカ以外のレプリカが 1 つだけになるようにインスタンスを構成すると、Memorystore for Redis はすべてのアプリケーション接続をプライマリ エンドポイントに転送します。リードレプリカを使用するようにインスタンスを構成すると、アプリケーションは読み取りエンドポイントを使用して、すべてのレプリカに読み取りクエリを分散することもできます。

データの永続性と高可用性

スタンダード ティアはレプリケーションと自動フェイルオーバーによって高可用性(HA)を提供しますが、HA は完全なデータ永続性を保証するものではありません。Memorystore for Redis は、一時的なリージョン障害などの致命的な事象が発生した場合、HA が有効になっていても完全なデータ耐久性を確保できません。

データを保護し、ベースライン レベルの永続性を提供するために、 Google Cloud コンソールを使用して Memorystore for Redis インスタンスを作成すると、RDB スナップショットがデフォルトで有効になります。

本番環境のワークロードでは、次のベスト プラクティスを検討して、データ復元力をさらに高めます。

  • 障害復旧: Memorystore for Redis は、リージョン間のレプリケーションをサポートしていません。ディザスタ リカバリ戦略でリージョン間のレプリケーションによる真のリージョン復元力が必要な場合は、Memorystore for Valkey インスタンスを使用することをおすすめします。リージョン間のセカンダリ インスタンスの構成と管理の詳細については、Memorystore for Valkey のドキュメントのクロスリージョン レプリケーションを使用するをご覧ください。
  • 最大耐久性: アプリケーションで可能な限り高いレベルのデータ耐久性が必要な場合は、クロスリージョン レプリケーション、毎日の自動バックアップ、Append-Only File(AOF)永続性で構成された Memorystore for Valkey インスタンスを使用することをおすすめします。この組み合わせにより、データ損失に対する最も堅牢な保護が実現します。詳細については、Memorystore for Valkey のドキュメントの永続性の概要をご覧ください。

フェイルオーバーが発生した場合

フェイルオーバーは、プライマリ インスタンスで障害が発生したときに発生します。フェイルオーバー中、プライマリ インスタンスと読み取りエンドポイントは自動的に新しいプライマリ インスタンスとレプリカにリダイレクトされます。Memorystore for Redis は、プライマリ エンドポイントへのすべての接続をドロップします。また、Memorystore for Redis は、昇格したリードレプリカへの読み取りエンドポイント接続も切断します。

フェイルオーバーがアプリケーションに与える影響

プライマリ インスタンスがレプリカにフェイルオーバーすると、Memorystore for Redis はインスタンスのプライマリ エンドポイントへの既存の接続をドロップします。自動修復中のインスタンスは平均 30 秒間、メンテナンス イベント中は 15 秒間利用できなくなります。再接続すると、アプリケーションは同じ接続文字列または IP アドレスを使用して、新しいプライマリ インスタンスに自動的にリダイレクトされます。フェイルオーバー後にアプリケーションを更新する必要はありません。

フェイルオーバー中に読み取りエンドポイントへの接続がある場合、Memorystore for Redis はプライマリ インスタンスに昇格されるレプリカへの接続をドロップします。Memorystore for Redis は、他のレプリカへの接続を継続して提供します。フェイルオーバーが完了し、新しいレプリカが使用可能になると、Memorystore for Redis は接続を新しいレプリカにリダイレクトします。

フェイルオーバー後にインスタンス接続を再試行する

フェイルオーバーが発生すると、Memorystore for Redis はプライマリ エンドポイントからのすべての接続をドロップします。レプリカの数によっては、Memorystore for Redis が一部の読み取り接続をドロップすることもあります。

この接続の切断により、アプリケーションは接続を再確立するために再試行する必要があります。再試行ロジックで指数バックオフを使用して、再試行リクエストが多すぎてインスタンスが過負荷にならないようにすることをおすすめします。再試行ロジックを含めるだけでなく、手動フェイルオーバーでアプリケーションをテストして、フェイルオーバーがアプリケーションに与える影響をテストすることをおすすめします。

ほとんどの Redis クライアントには、再試行機能が組み込まれています。フェイルオーバーが原因で接続が切断された場合は、これらの再試行機能を使用することをおすすめします。

フェイルオーバーは、次のタスクを実行するときに発生します。

フェイルオーバーによる接続の切断を処理するために、アプリケーションに再試行ロジックを実装している場合、インスタンスのパフォーマンスに大きな影響はないと考えられます。

高可用性のステータスを表示する

Cloud Monitoring を使用すると、Redis インスタンスの高可用性指標を確認できます。Cloud Monitoring が Memorystore for Redis 用に提供している指標については、Redis インスタンスのモニタリングと Memorystore for Redis でサポートされているモニタリング指標をご覧ください。

Redis が提供する組み込みのレプリケーション ステータスを確認するには、INFO コマンドを使用します。