ElastiCache for Redis クラスターの正しいインスタンスタイプとサイズを選択するにはどうすればよいですか?

所要時間1分
0

最高のパフォーマンスを得るには、ワークロードの Amazon ElastiCache for Redis ノードサイズとクラスター設定をどのように選択すればよいですか?

簡単な説明

ElastiCache クラスターのノードサイズの選択およびクラスターの設定の際には、次の点に注意してください。

  • CPU の処理能力はどの程度必要ですか?
  • どの程度のデータ量を保存する必要がありますか?
  • 選択したノードサイズは、予想されるネットワークトラフィックを処理できますか?
  • どのクラスターモードを選ぶべきですか?

解決方法

CPU の処理能力はどの程度必要ですか?

レビューノードオプション

使用可能なノードオプションを確認します。Redis はシングルスレッド処理であるため、ノードに CPU を追加してもパフォーマンスは向上しません。ノード上の単一 CPU コアの性能によってパフォーマンスが決まります。各ノードタイプには独自のベースラインパフォーマンスがあります。現行世代のノードタイプは、従来のバージョンに比べて低コストでより多くのメモリとより高い演算能力を提供します。例えば、 M5 および R5 インスタンスは、M4 および R4 よりも低コストでより優れたパフォーマンスを提供します

ノードをベンチマークする

ベストプラクティスとして、ノードをベンチマークして、予想されるワークロードでインスタンスのパフォーマンスを見積ります。これを行うには、 redis-benchmark ユーティリティを使用します。ベースラインの推奨事項については、「Five workload characteristics to consider when right sizing Amazon ElastiCache Redis clusters」(Amazon ElastiCache Redis クラスターを適切にサイジングする際に考慮すべき 5 つのワークロード特性) を参照してください。

ベンチマークテストを実行するときは、リクエストの数、キー分散、アイテムサイズなど、アプリケーショントラフィックのワークロードを模倣します。メモリ使用量、プロセッサ使用率、キャッシュヒット、およびキャッシュミスに関する Amazon CloudWatch メトリックスをモニタリングします。クラスターに必要なヒット率がない、あるいはキーが頻繁に削除されていることが検出される可能性があります。この場合は、高いスペックの CPU とメモリを搭載する別のノードサイズを選択してください。

Redis はシングルスレッドなので、報告された CPU 使用量に CPU コア数を掛けると、実際の使用量を求めることができます。例えば、4 コア CPU で使用率が 20% の場合、実際には 1 コア上で Redis が 80% の使用率で実行しています。

どの程度のデータ量を保存する必要がありますか?

必要なストレージのサイズを見積もるには、キャッシュする平均アイテムサイズに、同時にキャッシュ内にあるアイテム数を掛けます。アイテムサイズを見積もるには、キャッシュアイテムをシリアル化し、文字数をカウントし、その合計をクラスター内のシャードの数で割ります。

Redis バージョンの reserved-memory あるいは reserved-memory-percent グループパラメータを覚えておいてください。このパラメータは、システムバックアップや一般的なシステムの安定性など、データ以外の使用のためにメモリ領域を確保するのに使われます。デフォルトでは、この値は最大メモリの 25% に設定されています。データに十分なサイズを決定する際には、この点を考慮してください。

例えば、cache.r4.large には 12.3 GB の使用可能なメモリがあります。リザーブメモリは 25% に設定されているため、ノードは最大 9.2 GB (12.3 x 75%) のデータを格納します。残りは他の Redis 関数やシステムの安定性のために確保されています。

選択したノードタイプは、予想されるネットワークトラフィックを処理できますか?

選択したノードタイプが、ネットワークの最大値に達することなく、プッシュされるデータ量を確実に処理できるようにしてください。

ElastiCache ノードの最大スループットを判定するには、同様の Amazon Elastic Compute Cloud (Amazon EC2) ノードでベンチマークを実行します。

例えば、cache.m4.large ノードの場合、EC2 m4.large インスタンスでテストを実行します。このテストを実行すると、ノードの理論上の最大スループットを把握できます。また、クライアントと Redis ノードの間でプッシュできる帯域幅の推定値も表示されます。ネットワークを最大化する際の一般的な副作用は、帯域幅グラフで平坦な線で表されますが、ハードウェアを使い果たしていることです。iperf3 を使用してインスタンス間のネットワークパフォーマンスを測定する手順については、「同じ Amazon VPC 内で Amazon EC2 Linux インスタンス間のネットワークスループットをベンチマークする方法を教えてください。」を参照してください。

ElastiCache ノードは EC2 ノードと似ているため、インスタンスタイプごとに一覧表示されているネットワークのパフォーマンスを確認してください。ノードのネットワークスループットを最大限にする場合は、ネットワークパフォーマンスを向上させるために、次のノードサイズを選択する必要がある場合があります。例えば、m4.large インスタンスには中程度のネットワークを備えています。ただし、ワークロードがネットワークを使い果たしていて、パフォーマンスが低下している場合は、ネットワークパフォーマンスが向上されている新しいノードタイプを選定します。ネットワークパフォーマンスの向上は、料金ページの [ネットワークパフォーマンス] 列に [高] または [10 ギガビット] と表示される場合があります。

ネットワークパフォーマンスはクライアントにも適用されることに注意してください。クライアントが低~中程度のネットワークパフォーマンスである t2.micro で、データを m4.10xlarge にプッシュする場合、まずクライアントのネットワークスループットを最大にします。

どのクラスターモードを選ぶべきですか?

アプリケーションワークロードに適したモードの選択は、トラフィックによって異なります。

クラスターの主要な負荷がデータを読み込むアプリケーションで占められている場合、Redis (クラスターモード無効) クラスターを選択できます。次に、リードレプリカを追加して、より大量のデータ読み込み操作をサポートするようにクラスターをスケーリングします。最大で 5 つのリードレプリカがあります。クラスターモードが無効になっているクラスターにはシャードが 1 つしかないことに注意してください。そのため、ノードタイプは、クラスターのすべてのデータに加えて、必要なオーバーヘッドを吸収するのに十分な大きさでなければなりません。

クラスターの負荷は書き込みが占め、書き込みワークロードが 1 つのノードで提供できる負荷を超える場合は、Redis (クラスターモード有効) クラスターを使用します。クラスターモード対応のクラスターは、キーを複数のプライマリノードに分散させます。そのため、書き込みパフォーマンスは単一ノードではなく複数のノードに分散されます。

非常に高いパフォーマンスを必要とする大規模なワークロードがある場合は、複数のシャードと各シャードに複数のリードレプリカがあるクラスターモード対応のクラスターを使用します。例えば、プライマリノードごとに 15 個のシャードと 5 つのレプリカを備えたクラスターを作成できます。


AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ