このトピックでは、一般的なビジネスシナリオにおける簡単なルールに基づいて、Kafkaサービスを含むE-MapReduce(EMR)クラスターに必要なハードウェアリソースを評価する方法について説明します。実際のビジネスシナリオでは、これらのルールを使用して必要なリソースを評価し、負荷テストの結果に基づいて最終的なクラスター仕様を決定できます。クラスターの作成後、クラスターのスケールアウト機能を使用して、実際のリソース使用量に基づいてクラスターのリソース構成を変更できます。
Kafkaクラスターに必要なハードウェアリソースには、多くの要因が影響します。一般的な要因には、ピークメッセージトラフィック、メッセージの平均サイズ、パーティションの数、レプリケーション係数、クライアントの数などがあります。Kafkaサービス以外の制御要因には、クラスターが使用されるビジネスシナリオやビジネスアプリケーションのパフォーマンスが含まれます。したがって、クラスターに必要なハードウェアリソースを評価する場合は、まず実際のビジネス規模を評価し、その結果をビジネスパラメーターとして使用して必要なリソースを評価する必要があります。 kafka-producer-perf-testやkafka-consumer-perf-testなどのツールを使用して、実際の負荷をシミュレートし、必要なハードウェアリソースをさらに評価できます。
マスターノードグループ (ZooKeeper)
マスターノードグループは、ZooKeeperサービスをインストールするために使用されます。さらに、Kafka Manager、Schema Registry、REST ProxyなどのKafkaエコシステムコンポーネントもマスターノードグループにインストールされます。
ほとんどの場合、マスターノードグループには次の仕様を構成することをお勧めします。
ノード数:3
データディスク:ストレージ容量が 120 GiB のクラウドディスクを選択します。
システムディスク: 80 GiB
CPU: 4 CPUコア
メモリ: 8 GiB
重要CPUとメモリの比率が 1:2 のインスタンスタイプを選択することをお勧めします。
コアノードグループ (Kafka broker)
評価対象のビジネス要件
次のパラメーターに基づいてビジネス要件を評価する必要があります。
ファンアウト係数:Kafkaのクラスター内レプリケーションによる消費回数を除き、ビジネスデータがダウンストリームノードによって消費される回数。
ピーク受信トラフィック:ビジネスデータのピークトラフィック。単位:MB/s。
平均受信トラフィック:ビジネスデータの平均トラフィック。単位:MB/s。
データ保持期間:データを保持する日数。デフォルトでは、データは 7 日間保持されます。
パーティションレプリケーション係数:パーティションのレプリカの数。デフォルトでは、各パーティションには 3 つのレプリカがあります。
実際のビジネス状況に基づいて、ピークトラフィックを十分に考慮する必要があります。ピークトラフィックは通常、平均トラフィックよりも 1 桁高くなります。
上記の パラメーターに基づいてビジネス要件を評価する場合は、冗長リソースを適切に保持する必要があります。これにより、極端なビジネスシナリオでクラスターに高負荷がかかっても、クラスターは引き続きサービスを提供できます。上記のパラメーターに基づいて、次のメトリックを計算できます。
クラスターの合計ピーク書き込みトラフィック =
ピーク受信トラフィック × パーティションレプリケーション係数クラスターの合計ピーク読み取りトラフィック =
ピーク受信トラフィック × (ファンアウト係数 + パーティションレプリケーション係数 - 1)合計ストレージ容量:
平均受信トラフィック × データ保持期間 × パーティションレプリケーション係数
推奨ノード仕様
ほとんどの場合、コアノードグループには次の仕様を構成することをお勧めします。
ノード数:ビジネス要件に基づいてノード数を評価します。詳細については、このトピックのブローカーの数セクションを参照してください。
CPU: 16 CPUコア
メモリ: 64 GiB
重要CPUとメモリの比率が 1:4 のインスタンスタイプを選択することをお勧めします。
システムディスク: 80 GiB
データディスク:ビジネス要件に基づいて評価されたストレージ容量を持つ 4 つのクラウドディスクを選択します。
ネットワークインターフェースカード(NIC)帯域幅:ノード上のディスクの合計 I/O に基づいて NIC 帯域幅を計算します。
ディスク障害による O&M ワークロードを防ぐために、クラウドディスクをデータディスクとして使用することをお勧めします。これにより、サービスの可用性を高め、O&M の人件費を削減できます。
データディスクの種類とディスクの数を選択した後、ディスクの合計 I/O スループットを計算できます。ディスクの I/O スループット以上である NIC 帯域幅を選択することをお勧めします。
ブローカーの数
理想的なケースでは、Kafka ブローカーの最大トラフィックは、ディスクの最大 I/O スループットまたはノードの最大 NIC 帯域幅に達する可能性があります。したがって、必要なブローカーの数は、ピークデータトラフィックと各ノードの I/O スループットまたは NIC 帯域幅に基づいて計算できます。
ノードのディスクパフォーマンスメトリックを計算する
ノードのディスクスループット = ディスクのスループット × データディスクの数ディスクの理論上の I/O パフォーマンス値の詳細については、ブロックストレージのパフォーマンスを参照してください。たとえば、PL1 エンタープライズ SSD(ESSD)あたりの最大スループットは 350 MB/s です。ローカルディスクのディスクスループットに関連するメトリックは、理論値の半分に基づいて計算することをお勧めします。たとえば、ローカルディスクのディスクスループットは、ほとんどの場合 50 MB/s で評価されます。
必要なブローカーの数を計算する
パーティションに 3 つのレプリカを構成する場合は、4 つ以上のブローカーを選択することをお勧めします。1 つのブローカーが一時的に使用できない場合でも、3 つのレプリカを持つパーティションを作成できます。ほとんどの場合、ハードウェアリソースの 50% を冗長化することをお勧めします。上記の 前提に基づいて、次の式を使用して必要なブローカーの数を計算できます。
ブローカーの数 = Max(4, (クラスターの合計ピーク読み取りトラフィック + クラスターの合計ピーク書き込みトラフィック)/単一ノードのディスクスループット/50%)さらに、パーティションレプリカの制限を考慮して、各ブローカーに 2,000 以下のパーティションレプリカを構成することをお勧めします。ブローカーは最大 4,000 のパーティションレプリカを持つことができます。クラスター全体で最大 200,000 のパーティションレプリカを持つことができます。クラスター内のパーティションレプリカの合計数が大きいと評価される場合は、パーティションの合計数に基づいてブローカーの数を評価することをお勧めします。この場合、次の式を使用して必要なブローカーの数を計算できます。
ブローカーの数 = Max(4, 評価されたパーティションの合計数 × パーティションレプリケーション係数/2,000)各ブローカーのディスクサイズを評価する
ブローカーあたりのディスクサイズ = データストレージ合計容量/ブローカーの数/ノードあたりのデータディスクの数/50%
(オプション) タスクノードグループ (Kafka Connect)
このノードグループはオプションです。クラスターの作成後、リソースの使用状況に基づいていつでもクラスターのサイズを変更できます。
ほとんどの場合、タスクノードグループには次の仕様を構成することをお勧めします。
ノード数: 2 つ以上のノードを選択することをお勧めします。これにより、Kafka Connect クラスターの高可用性が実現します。
データディスク:ストレージ容量が 80 GiB 以上のクラウドディスクを選択します。
CPU:ノードごとに 8 つ以上の CPU コアを選択し、コネクタの CPU 使用率に基づいていつでも容量を増やすことをお勧めします。
メモリ:コネクタの種類とメモリ使用量に基づいてメモリ容量を選択します。
重要CPUとメモリの比率が 1:2 または 1:4 のインスタンスタイプを選択することをお勧めします。