2.5. resources
Streams for Apache Kafka のリソースを制御するために、リソース 要求 と 制限 を設定します。memory および cpu リソースの要求および制限を指定できます。要求には、Kafka の安定したパフォーマンスを確保できる十分な値が必要です。
実稼働環境でリソースを設定する方法は、さまざまな要因によって異なります。たとえば、アプリケーションは OpenShift クラスターでリソースを共有する可能性があります。
Kafka では、デプロイメントの以下の要素が、必要なリソースに影響を与える可能性があります。
- メッセージのスループットとサイズ
- メッセージを処理するネットワークスレッドの数
- プロデューサーおよびコンシューマーの数
- トピックおよびパーティションの数
リソース要求に指定の値は予約され、常にコンテナーで利用可能になります。リソース制限によって、指定のコンテナーが消費可能な最大リソースが指定されます。要求数から制限数の間は予約されず、常に利用できるとは限りません。コンテナーは、リソースが利用できる場合のみ、制限以下のリソースを使用できます。リソースの制限は一時的で、再割り当てが可能です。
リソース要求および制限
要求なしに制限を設定する場合や、その逆の場合、OpenShift は両方に同じ値を使用します。OpenShift は制限を超えない限りコンテナーを強制終了しないため、リソースに対して、要求と制限を同じ数に設定すると、QoS (Quality of Service) が保証されます。
次のカスタムリソースの spec で resources プロパティーを使用して、コンポーネントのリソース要求および制限を設定します。
次のコンポーネントには KafkaNodePool カスタムリソースを使用します。
-
KRaft ベースの Kafka ノード (
spec.resources) -
ノードプールを使用する ZooKeeper ベースの Kafka ノード (
spec.resources)
次のコンポーネントには Kafka カスタムリソースを使用します。
-
ノードプールを使用しない ZooKeeper ベースのクラスターの Kafka (
spec.kafka.resources) -
ZooKeeper (
spec.zookeeper.resources) -
Topic Operator (
spec.entityOperator.topicOperator.resources) -
User Operator (
spec.entityOperator.userOperator.resources) -
Cruise Control (
spec.cruiseControl.resources) -
Kafka Exporter (
spec.kafkaExporter.resources)
その他のコンポーネントには、対応するカスタムリソースでリソースを設定します。以下に例を示します。
-
Kafka Connect の場合は
KafkaConnectリソース (spec.resources) -
MirrorMaker の場合は
KafkaMirrorMaker2リソース (spec.resources) -
Kafka Bridge の場合は
KafkaBridgeリソース (spec.resources)
ノードプールのリソース設定の例
Topic Operator のリソース設定の例
リソース要求が OpenShift クラスターで利用可能な空きリソースを超える場合、Pod はスケジュールされません。
Streams for Apache Kafka では、OpenShift 構文を使用して memory および cpu リソースを指定します。OpenShift におけるコンピュートリソースの管理に関する詳細は、Managing Compute Resources for Containers を参照してください。
- メモリーリソース
メモリーリソースを設定する場合は、コンポーネントの合計要件を考慮してください。
Kafka は JVM 内で実行され、オペレーティングシステムページキャッシュを使用してディスクに書き込む前にメッセージデータを保存します。Kafka のメモリー要求は、JVM ヒープおよびページキャッシュに適合する必要があります。
jvmOptionsプロパティーを設定 すると、最小および最大ヒープサイズを制御できます。他のコンポーネントはページキャッシュに依存しません。メモリーリソースは、ヒープサイズを制御する
jvmOptionsを指定せずに、設定できます。メモリー要求および制限は、メガバイト、ギガバイト、メビバイト、およびギビバイトで指定されます。仕様では、以下の接尾辞を使用します。
-
M(メガバイト) -
G(ギガバイト) -
Mi(メビバイト) -
Gi(ギビバイト)
異なるメモリー単位を使用するリソースの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow メモリーの指定およびサポートされるその他の単位に関する詳細は、Meaning of memory を参照してください。
-
- CPU リソース
常に信頼できるパフォーマンスを発揮させるには、CPU 要求を十分に指定する必要があります。CPU の要求および制限は、コア または ミリ cpu/ミリコア として指定します。
CPU コアは、整数 (
5CPU コア) または小数 (2.5CPU コア) で指定します。1000 ミリコア は1CPU コアと同じです。CPU の単位の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つの CPU コアのコンピューティング能力は、OpenShift がデプロイされたプラットフォームによって異なることがあります。
CPU 仕様の詳細は、Meaning of CPU を参照してください。