このページでは、標準階層の Memorystore for Redis インスタンスの高可用性(HA)について説明します。
スタンダード ティアでは、データを 1 つ以上のレプリカに複製し、レプリカへの高速の自動フェイルオーバーを提供することで、Redis インスタンスを一般的な障害から保護します。
スタンダード ティアでは、1 つのプライマリ インスタンスと 1 つ以上のレプリカがプロビジョニングされます。readReplicaMode 設定が無効になっているスタンダード ティア インスタンスには、単一の非リードレプリカがあります。この設定が有効になっているスタンダード ティア インスタンスには、1 ~ 5 個のリードレプリカがあります。設定が有効になっているかどうかを確認するには、インスタンスのリードレプリカ情報を表示するをご覧ください。
Memorystore for Redis では、プライマリ インスタンスを 1 つ以上のレプリカに複製することで高可用性を実現します。Memorystore for Redis は、非同期レプリケーション プロトコルを使用して、プライマリ インスタンスのデータに加えた変更をレプリカにコピーします。レプリケーションは非同期であるため、プライマリ インスタンスの書き込みレートによっては、レプリカがインスタンスより遅れることがあります。
プライマリ インスタンスに障害が発生すると、インスタンスは自動的にレプリカにフェイルオーバーします。複数のレプリカがあるインスタンスの場合、レプリケーション ラグが最小の正常なレプリカに自動的にフェイルオーバーします。

インスタンスに 1 つの非リードレプリカのみを構成すると、Memorystore for Redis はすべてのアプリケーション接続をプライマリ エンドポイントに転送します。リードレプリカを使用するようにインスタンスを構成すると、アプリケーションは読み取りエンドポイントを使用して、すべてのレプリカに読み取りクエリを分散することもできます。
フェイルオーバーが発生した場合
フェイルオーバーは、プライマリ インスタンスの障害時に発生します。フェイルオーバー中、プライマリ インスタンスと読み取りエンドポイントは自動的に新しいプライマリ インスタンスとレプリカにリダイレクトされます。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 クライアントには、再試行機能が組み込まれています。フェイルオーバーが原因で接続が切断された場合は、これらの再試行機能を使用することをおすすめします。
フェイルオーバーは、次のタスクを実行すると発生します。
フェイルオーバーを原因とする接続の切断に対処するためにアプリケーションに再試行ロジックを実装すると、インスタンスのパフォーマンスに大きな影響が生じることを回避できます。
高可用性のステータスを表示する
Redis インスタンスの高可用性の指標は、Cloud Monitoring を使用して確認できます。Cloud Monitoring が Memorystore for Redis 用に提供している指標については、Redis インスタンスのモニタリングと Memorystore for Redis でサポートされているモニタリング指標をご覧ください。
Redis が提供する組み込みのレプリケーション ステータスを確認するには、INFO コマンドを使用します。