このページでは、Memorystore for Valkey インスタンスがスケーリング時にどのように動作するかを説明します。
インスタンスの容量は、次の方法でスケーリングできます。
インスタンスのシャード数を変更できます。これは 水平スケーリングです。インスタンスを水平方向にスケーリングするには、次のいずれかの方法を使用します。
スケールアウト: インスタンスの容量を増やします。これにより、インスタンスのメモリと処理能力が増加し、より多くのデータやトラフィックを処理できるようになります。インスタンスの容量は、インスタンス内のシャード数によって決まります。
インスタンスをスケールアウトすることで、アプリケーションはパフォーマンスを低下させることなく需要の増加に対応できます。インスタンスをスケールアウトするには、インスタンスにシャードを追加します。
スケールイン: インスタンスの容量を減らします。これにより、 処理能力とデータを保存できるメモリ容量の両方が減少します。これは、アプリケーションのデータ要件が減少し、費用を節約するためにリソース使用量を減らす必要がある場合に発生します。インスタンスをスケールインするには、インスタンス内のシャード数を減らします。
インスタンスのノードタイプを変更できます。これは 垂直スケーリングです。インスタンスを垂直方向にスケーリングするには、次のいずれかの方法を使用します。
- スケールアップ: インスタンスの容量を増やします。インスタンスの容量は、インスタンスのノードタイプによって決まります。インスタンスをスケールアップするには、ノードタイプをより大きなノードタイプに変更します。たとえば、インスタンスを
standard-smallノードタイプからhighmem-mediumノードタイプにスケールアップします。 スケールダウン: インスタンスの容量を減らします。インスタンスをスケールダウンするには、ノードタイプをより小さなノードタイプに変更します。たとえば、インスタンスを
highmem-mediumノードタイプからstandard-smallノードタイプにスケールダウンします。
- スケールアップ: インスタンスの容量を増やします。インスタンスの容量は、インスタンスのノードタイプによって決まります。インスタンスをスケールアップするには、ノードタイプをより大きなノードタイプに変更します。たとえば、インスタンスを
スケーリングの影響
スケーリング オペレーション中、インスタンスの可用性は影響を受けません。 ただし、インスタンスのシャード数を変更すると、Memorystore for Valkey はインスタンスのキースペースを再調整します。これにより、スケーリング オペレーション中にレイテンシが増加する可能性があります。
また、ノードタイプを変更してインスタンスを垂直方向にスケーリングした場合の影響 は、メンテナンス オペレーションの場合と似ています。
障害シナリオ
スケーリング オペレーション中にエラーが発生した場合は、次のいずれかのシナリオが原因である可能性があります。
インスタンスのシャード数を更新しようとしていますが、インスタンスの
shared-core-nanoノードタイプに十分な空きメモリがありません。この問題を解決するには、インスタンスをスケールアップするか、 インスタンスのノードからメモリを解放します。メモリを解放する手順は次のとおりです。
- Memorystore for Valkey インスタンスに接続します。
- IP アドレスやポート
番号など、インスタンスの詳細を取得するには、
gcloud memorystore instances describeコマンドを使用します。 - インスタンスの IP アドレスとポート番号をメモします。
インスタンスのノードに関する情報を取得するには、次のコマンドを使用します。
valkey-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
IP_ADDRESS と PORT_NUMBER は、 前の手順でメモした値に置き換えます。
十分な空き容量がないノードの IP アドレスとポート番号をメモします。このノードの ID は、エラーに表示される ID と一致します。
このノードに接続するには、次のコマンドを使用します。
valkey-cli -h IP_ADDRESS -p PORT_NUMBER
IP_ADDRESS と PORT_NUMBER は、前の手順でメモした値 に置き換えます。
プロンプトで
info memoryコマンドを入力します。出力には、
used_memoryパラメータとmaxmemoryパラメータの値が表示されます。used_memoryはノードが使用するメモリ量、maxmemoryはノードで使用できるメモリ量です。used_memoryパラメータの値をmaxmemoryパラメータの値で割り、商が 98% より大きいことを確認します。ノードの空き容量を増やすには、ノードのキーの一部を削除します。
もう一度
info memoryコマンドを入力します。出力では、used_memoryパラメータの値が小さくなっています。used_memoryパラメータの値をmaxmemoryパラメータの値で割り、商が 98% 未満になったことを確認します。そうでない場合は、さらにキーを削除します。十分な空き容量がない他のノードについては、この手順のステップ 4 ~ 11 を繰り返します。
Memorystore for Valkey が元のインスタンスに保存するすべてのキーを保持できる容量がない、より少ないシャード数にスケーリングしました。この問題を解決するには、保存されているすべてのキーを保持できる、より大きなシャード数にスケーリングします。インスタンスの シャード数を増やす方法の詳細については、シャード数をスケーリングするをご覧ください。
Memorystore for Valkey が元のノードタイプに保存するすべてのデータを保持できる容量がない、より小さなノードタイプにスケーリングしました。この場合、Memorystore for Valkey は、垂直方向にスケールダウンするための推奨ノードタイプを提供します。
インスタンスのノードタイプを更新し、元のノードタイプの デフォルト設定 を上書きするか、これらの設定がすでに上書きされています。ただし、新しいスケールダウンされたノードタイプは、デフォルト設定の値をサポートしていないか、設定がノードタイプに対して有効ではありません。この場合、Memorystore for Valkey はエラーを返します。この問題を解決するには、新しいノードタイプで有効になるように設定を手動で変更します。
Write pressure が高い期間(負荷テスト中など)にインスタンスをスケーリングしました。この問題を解決するには、インスタンスのトラフィックが少ない期間にスケーリングします。
大きなキーを含むスロットがあり、このキーを別のノードに移行したいと考えています。ただし、このノードにはキーをサポートするのに十分なメモリがありません。インスタンスを更新できません。この問題を解決するには、キーのサイズを 128 MB 未満に減らします。次に、更新オペレーションを再試行します。
インスタンスのノードが所有するスロット番号は不明ですが、スロット範囲のみがわかっています。Memorystore for Valkey はエラー メッセージを返します。この場合、キーのサイズを小さくして、更新オペレーションを再試行します。
より少ないシャード数にスケールアウトして、インスタンスの容量を増やしました。ただし、Memorystore for Valkey には、このリクエストに対応するのに十分なメモリがありません。この問題を解決するには、元の大きなシャード数にスケールインして、インスタンスの容量を減らします。
ベスト プラクティス
インスタンスの容量をスケーリングし、インスタンスのスケーリングの速度と信頼性を向上させるには、可能な限りトラフィックの少ない期間にスケーリングします。インスタンスのトラフィックをモニタリングする方法については、インスタンスをモニタリングするをご覧ください。