インスタンス スケーリング時の動作

このページでは、Memorystore for Redis インスタンスがスケーリング時にどのように動作するかを説明します。Redis インスタンスのスケーリング方法については、Redis インスタンスのスケーリングをご覧ください。

インスタンスの階層によっては、インスタンスをスケーリングするとアプリケーションのパフォーマンスやストレージに影響します。また、インスタンスのスケーリングには、現在使用中のメモリ量に応じた制限も存在します。このページでは、インスタンスのスケーリングがアプリケーションに及ぼす影響と、インスタンスをスケーリングできるタイミングについて説明します。

インスタンスのスケーリングのベスト プラクティス

  • オペレーションをスケーリングする前に、インスタンス データをエクスポートすることをおすすめします。

  • 標準階層のインスタンスの場合、スケーリング オペレーションの速度と信頼性を向上させるには、インスタンスのトラフィックが少ない期間にインスタンスをスケーリングします。インスタンスのトラフィックをモニタリングする方法については、Redis インスタンスのモニタリングをご覧ください。

  • 標準階層インスタンスの容量を削減する場合は、格納されているデータ量よりも多いサイズを選択しないとスケーリングに失敗します。

    • たとえば、10 GB のインスタンスに 5.5 GB のデータが保存されている場合は、インスタンスのサイズは 6 GB 以上に変更できます。インスタンスが使用するストレージの量は、Cloud Console の詳細ページに表示されます。

基本階層のスケーリング動作

基本階層インスタンスは、インスタンスを目的の容量にサイズ変更している間、読み取りと書き込みをブロックします。インスタンスのサイズ変更が完了すると、すべてのデータがキャッシュからフラッシュされます。インスタンス トラフィックが少ない期間にインスタンスをスケーリングして、アプリケーションへのパフォーマンスの影響を最小限に抑えます。

スタンダード階層のスケーリング動作

アクティビティが少ない期間にスタンダード階層のインスタンスをスケーリングすることによって、アプリケーションのパフォーマンスへの影響を最小限に抑えます。

すべてのスタンダード階層インスタンスはプライマリとレプリカで構成されているため、スケーリング プロセス中にスタンダード階層インスタンスのダウンタイムは、ほとんど発生しません。スケーリング時はまずレプリカのサイズが変更され、その後プライマリと同期されます。新しいレプリカが新しいプライマリと同等になると、新しいプライマリは新しいレプリカにフェイル オーバーします。

フェイルオーバー中は、インスタンスへの接続が切断されます。新しいプライマリに再接続するには、アプリケーションのコードに再試行ロジックを組み込む必要があります。最終的に、以前のプライマリ インスタンスのサイズが変更されます。

スケーリングが完了すると、キャッシュには最新ではないデータや整合性のないデータが存在する場合があります。これは、Redis のレプリケーションが持つ非同期の性質によるものです。そのためアプリケーションには、フェイルオーバー時に発生する不整合に対処できる復元性を持たせる必要があります。

スケーリング中の書き込み負荷

標準階層のインスタンスをスケーリングする際に、インスタンスの書き込み負荷を最小限に抑えます。書き込み負荷が高いとスケーリングにかなり時間がかかり、スケーリング オペレーションが失敗する可能性があります。

期限切れのキー

標準階層のインスタンスをスケーリングする際、期限切れのキーは同期されません。スケーリングする前に Redis インスタンスでキーが期限切れになっていると、インスタンスのスケーリング後にキーが少なくなります。