クラスター作成前の正確なリソースサイジングは、プロビジョニング不足 (負荷時のパフォーマンス低下を引き起こす) と過剰なプロビジョニング (コストの無駄) の両方を防ぎます。このトピックでは、Kafka を実行する E-MapReduce (EMR) クラスターの各ノードグループに対するサイジング数式と推奨スペックを提供します。初期見積もり後、kafka-producer-perf-test と kafka-consumer-perf-test を使用して検証し、その後、ワークロードの変化に応じてスケールアウト機能を使用して構成を調整します。
Kafka クラスターのサイジングは、ピークメッセージトラフィック、平均メッセージサイズ、パーティション数、レプリケーション係数、およびクライアント数に依存します。以下の数式を適用する前に、実際のビジネスメトリックを収集してください。
ノードグループの概要
次の表は、各ノードグループの推奨スペックをまとめたものです。詳細なサイジングガイダンスと数式は、以下のセクションで説明します。
| ノードグループ | 役割 | ノード | CPU | メモリ | システムディスク | データディスク |
|---|---|---|---|---|---|---|
| Master | ZooKeeper + エコシステムコンポーネント | 3 | 4 コア | 8 GiB | 80 GiB | 120 GiB クラウドディスク |
| Core | Kafka ブローカー | 「ブローカー数 | 16 コア | 64 GiB | 80 GiB | 4 x クラウドディスク (サイズは変動) |
| Task (オプション) | Kafka Connect | >2 | >8 コア | コネクタに基づく | — | >80 GiB クラウドディスク |
Master ノードグループ (ZooKeeper)
Master ノードグループは、ZooKeeper と Kafka エコシステムコンポーネント (Kafka Manager、Schema Registry、REST Proxy) を実行します。
以下のスペックで 3 つの Master ノードを構成します。
| リソース | 推奨値 |
|---|---|
| ノード | 3 |
| CPU | 4 コア |
| メモリ | 8 GiB |
| CPU 対メモリ比 | 1:2 |
| システムディスク | 80 GiB |
| データディスク | 120 GiB クラウドディスク |
Core ノードグループ (Kafka ブローカー)
ビジネスパラメーター
ブローカー数とディスクサイズを計算する前に、以下のビジネスパラメーターを収集してください。
| パラメーター | 説明 | デフォルト |
|---|---|---|
| ファンアウト係数 | クラスター内レプリケーションを除く、ダウンストリームノードがビジネスデータを消費する回数 | — |
| ピークインバウンドトラフィック | ピークビジネスデータスループット (MB/秒) | — |
| 平均インバウンドトラフィック | 平均ビジネスデータスループット (MB/秒) | — |
| データ保持期間 | データが保持される期間 (日数) | 7 日 |
| パーティションレプリケーション係数 | パーティションあたりのレプリカ数 | 3 |
ピークトラフィックは通常、平均トラフィックよりも桁違いに高くなります。それに応じてピークインバウンドトラフィック値を設定し、クラスターが極端な負荷の下でもサービスを維持できるように、十分な冗長容量を確保してください。
これらのパラメーターを使用して、以下のクラスターレベルのメトリックを導出します。
| メトリック | 数式 |
|---|---|
| 合計ピーク書き込みトラフィック | Peak inbound traffic x Partition replication factor |
| 合計ピーク読み取りトラフィック | Peak inbound traffic x (Fan-out factor + Partition replication factor - 1) |
| 合計ストレージ容量 | Average inbound traffic x Data retention period x Partition replication factor |
推奨ノードスペック
以下のスペックで Core ノードを構成します。
| リソース | 推奨値 |
|---|---|
| CPU | 16 コア |
| メモリ | 64 GiB |
| CPU 対メモリ比 | 1:4 |
| システムディスク | 80 GiB |
| データディスク | 4 x クラウドディスク (サイズは以下で計算) |
ディスクタイプ。物理ディスク障害による運用と保守 (O&M) の負担を避けるため、データディスクとしてクラウドディスクを使用してください。これにより、サービス可用性が向上し、O&M 人件費が削減されます。
ディスクタイプとディスク数を選択した後、ノードの合計ディスク I/O スループットを計算してください。合計ディスク I/O スループット以上の帯域幅を持つネットワークインターフェースカード (NIC) を選択してください。
ブローカー数
理想的な条件では、Kafka ブローカーのスループット上限は、そのディスク I/O スループットまたは NIC 帯域幅のいずれかです。必要なブローカー数を計算するには、以下の手順を使用してください。
ステップ 1: ノードあたりのディスクスループットを計算します。
Disk throughput per node = Throughput per disk x Number of data disks参考として、PL1 Enterprise SSD (ESSD) の最大スループットは 350 MB/秒です。ローカルディスクの場合、理論値の半分を実効スループットとして使用します。これは通常 50 MB/秒です。
詳細なディスクパフォーマンス値については、「ブロックストレージパフォーマンス」をご参照ください。
ステップ 2: トラフィックに基づいてブローカー数を計算します。
レプリケーション係数 3 の場合、1 つのブローカーが一時的に利用不可になった場合でも、3 つのレプリカを持つパーティションを作成できるように、少なくとも 4 つのブローカーを使用してください。50% の冗長容量を維持します。
Number of brokers = Max(4, (Total peak read traffic + Total peak write traffic) / Disk throughput per node / 50%)ステップ 3: パーティションレプリカの制限と照合します。
パーティションレプリカの合計数が多い場合は、パーティションベースの数式を使用して相互チェックしてください。
Number of brokers = Max(4, Total number of partitions x Partition replication factor / 2,000)パーティションレプリカの制限:
| 制限 | 値 |
|---|---|
| ブローカーあたりの推奨最大レプリカ数 | 2,000 |
| ブローカーあたりのハード最大レプリカ数 | 4,000 |
| クラスターあたりのハード最大レプリカ数 | 200,000 |
ステップ 4: ブローカーあたりのディスクサイズを計算します。
Disk size per broker = Total storage capacity / Number of brokers / Number of data disks per node / 50%クラスター作成後のスケーリング
サイジング数式に組み込まれた 50% の冗長性予備は、速度制限が始まる負荷しきい値以下にクラスターを維持します。クラスター作成後、リソース使用量を監視し、スケールアウト機能を使用して実際のリソース使用量に基づいて構成を調整してください。
Task ノードグループ (Kafka Connect) (オプション)
Task ノードグループはオプションであり、Kafka Connect を実行します。クラスター作成後、実際のリソース使用量に基づいていつでもサイズ変更できます。
以下のスペックで Task ノードを構成します。
| リソース | 推奨値 |
|---|---|
| ノード | >2 (高可用性のため) |
| CPU | ノードあたり >8 コア。コネクタの CPU 使用率に基づいて増加。 |
| メモリ | コネクタタイプとメモリ使用量に基づく |
| CPU 対メモリ比 | 1:2 または 1:4 |
| データディスク | >80 GiB クラウドディスク |