このページでは、Memorystore for Valkey インスタンスのクラスタとノードの仕様について説明します。インスタンスの作成方法については、インスタンスの作成をご覧ください。
ノードタイプの選択
クラスタ内のシャードはすべて、選択した同じノードタイプを使用します。クラスタに最適なノードタイプは、価格、パフォーマンス、キースペース容量の要件によって異なります。
standard-small
ノードタイプを使用すると、小規模なクラスタをプロビジョニングし、他のノードタイプよりも低いコストで、小さな増分でクラスタを拡張できます。また、standard-small
には、合計 vCPU 数が多くなるほどより多くのノードにキースペースを分散できるという利点もあります。小規模なノードのキースペースの合計容量がデータニーズに対して十分である限り、highmem-medium
と比較してコスト パフォーマンスが向上します。
highmem-medium
が提供するよりも多くのクラスタ容量が必要な場合にのみ、highmem-xlarge
ノードタイプを選択することをおすすめします。highmem-xlarge
ノードタイプはサイズ highmem-medium
の 4 倍ですが、vCPU がより大きなノードに追加されたときに(スケールアップ)、Valkey のパフォーマンスは直線的にスケーリングされないため、パフォーマンスは 4 倍になりません。代わりに、コスト パフォーマンスを向上させるには、クラスタにノードを追加してスケールアウトする必要があります。
ノードタイプの仕様
ノードの容量と特性は、選択した 4 つの使用可能なノードタイプによって異なります。
キースペースの容量と予約済みオーバーヘッド
ノードタイプ | デフォルトの書き込み可能なキースペース容量 | ノードの合計容量 |
---|---|---|
shared-core-nano | 1.12 GB | 1.4 GB |
standard-small | 5.2 GB | 6.5 GB |
highmem-medium | 10.4 GB | 13 GB |
highmem-xlarge | 46.4 GB | 58 GB |
Memorystore では、メモリ不足(OOM)エラーを防ぐためにインスタンス容量の一部が自動的に確保されます。これにより、キーの読み取りと書き込みがスムーズに行われます。メモリの上限とストレージの詳細は次のとおりです。
ストレージのカスタマイズ: デフォルト設定を使用することをおすすめしますが、
maxmemory
構成を使用して予約済みストレージの量を調整することもできます。maxmemory
の詳細については、サポートされているインスタンス構成をご覧ください。利用できるストレージはどのくらいですか? 前の表のデフォルトの書き込み可能なキースペース容量の列をご覧ください。これは、鍵のデフォルトのストレージ量が表示されます。
ストレージの最大化: 許容されるストレージを最大にする場合、
maxmemory
構成を 100% に設定した場合に、[ノードの合計容量] 列にストレージの上限が表示されます。ただし、maxmemory
の値をデフォルト設定よりも大きくすることはおすすめしません。shared-core-nano
ノードタイプには 1.12 GB のハードリミットがあり、maxmemory
構成では変更できません。
ノードの特性
ノードタイプ | vCPU 数 | SLA 提供 | 最大クライアント数 | クライアントの最大メモリ(maxmemory-clients 構成) |
---|---|---|---|---|
shared-core-nano | 0.5 | いいえ | 5,000 | 12% |
standard-small | 2 | はい | 16,000(デフォルト)。最大値: 32,000 | 7% |
highmem-medium | 2 | はい | 32,000(デフォルト)。最大値: 64,000 | 7% |
highmem-xlarge | 8 | はい | 64,000 | 4% |
クラスタの仕様
このセクションには、クラスタ形状、ノードタイプ、レプリカ数に応じたクラスタの最小容量と最大容量が表示されます。
最小クラスタ形状別の最小書き込み可能容量
ノードのタイプとサイズ | 3 ノードの最小クラスタ形状を使用した最小書き込み可能容量1 |
---|---|
shared-core-nano - 1.4 GB | 4.2 GB |
standard-small - 6.5 GB | 19.5 GB |
highmem-medium - 13 GB | 39 GB |
highmem-xlarge - 58 GB | 174 GB |
1 書き込み可能な容量は、キーの書き込みに使用できるストレージ容量です。最小書き込み可能容量は、選択したレプリカの数の影響を受けません。
クラスタ形状別の最大書き込み可能容量
ノードのタイプとサイズ | 250 個のプライマリ ノードと ノードあたり 0 個のレプリカのクラスタ形状での最大容量 | 125 個のプライマリ ノードとノードあたり 1 個のレプリカのクラスタ形状での最大容量 | 83 個のプライマリ ノードとノードあたり 2 個のレプリカのクラスタ形状での最大容量 |
---|---|---|---|
shared-core-nano - 1.4 GB | 350 GB | 175 GB | 116.2 GB |
standard-small - 6.5 GB | 1,625 GB | 812.5 GB | 539.5 GB |
highmem-medium - 13 GB | 3,250 GB | 1,625 GB | 1,079 GB |
highmem-xlarge - 58 GB | 14,500 GB | 7,250 GB | 4,814 GB |
サポートされていないクラスタ形状
4 つのノードのみの Memorystore クラスタは使用できません。このクラスタ形状は、ゾーンの停止の自動処理など、複数のゾーンでの高可用性を確保するためにサポートされていません。
パフォーマンス
us-central1
リージョンで OSS メモリ階層ベンチマーク ツールを使用して、2 vCPU ノード(standard-small
と highmem-medium
)ごとに、マイクロ秒のレイテンシと 1 KiB のデータサイズで、1 秒あたり 120,000 ~ 130,000 のオペレーションが実行されました。
実際のワークロードまたは本番環境のトラフィックに似た合成ワークロードで独自のベンチマークを実施することをおすすめします。また、ワークロードの急増や予期しないトラフィックに対応するために、バッファ(つまり「ヘッドルーム」)を使用してクラスタのサイズを設定することをおすすめします。詳しいガイダンスについては、ベスト プラクティスをご覧ください。
クラスタ エンドポイント
このセクションでは、各インスタンスにある 2 つのエンドポイントについて説明します。
検出エンドポイント
各インスタンスには、クライアントが接続する検出エンドポイントがあります。これは、IP アドレスとポート番号の組み合わせです。クラスタの検出エンドポイントを見つける方法については、クラスタの検出エンドポイントを表示するをご覧ください。
クライアントはノードの検出にもこれを使用します。クライアントは検出エンドポイントを使用してインスタンスのクラスタ トポロジを取得し、クラスタ クライアントをブートストラップし、更新を安定した状態で維持します。結果として得られるクラスタ トポロジは、クラスタ クライアントによってメモリ内にキャッシュされるノード エンドポイント(IP とポートの組み合わせ)を提供します。これにより、クライアントによって、他のアプリケーションを変更することなく、更新とリダイレクトが自動的に処理されます。クライアント検出の動作とベスト プラクティスについては、クライアント検出をご覧ください。
検出エンドポイントは、複数のゾーンにまたがる複数のノードによって支えられており、クラスタ トポロジを提供するため、可用性が高くなります。バックエンド ノードで障害やノードの更新に直面しても、エンドポイントを介したトポロジの提供は堅牢です。
検出エンドポイントの動作は次のとおりです。
クラスタの検出エンドポイントは、メンテナンス中や、スケールイン、スケールアウト、レプリカ数の変更などの操作を行っても、クラスタ インスタンスのライフサイクル全体で変更されません。
ノード エンドポイントは変更される可能性があり、時間の経過とともにノードが追加および削除されるとリサイクルされます。理想的には、トポロジの更新とリダイレクトによってこれらの変更を自動的に処理できるクラスタ クライアントを使用する必要があります。クラスタ クライアントの例については、クライアント ライブラリのコードサンプルをご覧ください。アプリケーションには、依存関係や特定のクラスタでノード エンドポイントが変更されないという前提があってはなりません。
データ エンドポイント
各インスタンスには、Memorystore for Valkey がクライアント接続に使用する Private Service Connect データ エンドポイントもあります。これに直接接続すべきではありませんが、Memorystore for Valkey は、クライアントをクラスタノードに接続するためにこのエンドポイントを使用します。