クラスタ構成の管理

Apache Kafkaを使用したストリーミングの各Kafkaクラスタには、すべてのサーバー構成プロパティを含むクラスタ構成ファイルがあります。

クライアント構成を管理する必要もあります。

構成可能なブローカ・プロパティ

Streaming with Apache Kafkaを使用すると、特定のブローカ・プロパティを更新することでKafka構成をカスタマイズできます。サービスは、更新可能なプロパティを制限することで、Kafka構成を合理化します。予期しない動作を回避するために、サポートされているプロパティに対してクラスタ構成ファイルを検証します。

無効な構成または不正な構成が指定されている場合、それらは無視され、Apache Kafkaによって定義されたデフォルト値が使用されます。これにより、クラスタの安定性が確保され、構成ミスによるサービスの可用性への影響が回避されます。

OCI Streaming with Apache Kafkaによって設定されるデフォルト構成については、クラスタのデフォルト・オプションを参照してください。

次のブローカ・プロパティを更新できます。

プロパティ サンプル値 目的
client.quota.callback.static.storage.soft totalStorageBytesの97% ブローカディスクストレージ容量に弱い制限を設定します。
client.quota.callback.static.storage.hard totalStorageBytesの98% ブローカディスクストレージ容量に強い制限を設定します。
default.replication.factor 1 新しいトピックのデフォルトのレプリケーション係数を設定します。
log.retention.hours 168 ログ・セグメントを保持する最小時間を設定します。
log.segment.bytes 1073741824 単一のログ・セグメント・ファイルの最大サイズを設定します。
log.cleanup.policy 削除 ログ保存方針(deleteまたはcompact)を設定します。
message.max.bytes 1048588 ブローカが受け入れるメッセージの最大サイズを設定します。
min.insync.replicas 1 書込みが確認されるために必要な同期レプリカの最小数を設定します。
num.io.threads 8 ディスク I/O操作のスレッド数を設定します。
num.replica.fetchers 1 他のブローカからのデータのレプリケートに使用されるスレッド数を設定します。
unclean.leader.election.enable 誤り 非同期レプリカをリーダーとして選択できます。

カスタム・ブローカ・ディスク割当て制限の定義

カスタム・ブローカ・ディスク割当て制限を定義できます。

  1. 必要な割当て制限構成でクラスタ構成JSONファイルを作成または更新します。たとえば、ディスク割当てに関する次の詳細でファイルkafka-config.jsonを更新します。
    {
    "properties": {
     "client.quota.callback.class": "io.strimzi.kafka.quotas.StaticQuotaCallback",
     "client.quota.callback.static.storage.soft": "1000000000",
     "client.quota.callback.static.storage.hard": "2000000000",
     "client.quota.callback.static.storage.check-interval": "30"
     }
    }
  2. 前のステップで作成または更新した構成ファイルをクラスタの構成ファイルとして指定します。たとえば、createまたはupdate cluster-config CLIコマンドで--latest-config file://kafka-config.jsonを指定します。
  3. APIまたはCLIを使用してKafkaクラスタを更新し、新規または更新された構成ファイルkafka-config.jsonを指定します。
ノート

デフォルトの制限を超えるディスク割当て制限値を設定することはできません。

構成不可ブローカ・プロパティ

Apache Kafkaを使用したストリーミングでは、一部のブローカ・プロパティが編集不可として設定され、これらのプロパティを構成すると、サービスによって無視されます。予期しない動作を回避するには、サポート・プロパティに対して構成ファイルを検証する必要があります。

次のブローカ・プロパティは更新できません:

  • advertised.
  • authorizer.
  • broker.
  • controller
  • cruise.control.metrics.reporter.bootstrap.
  • cruise.control.metrics.topic
  • host.name
  • inter.broker.listener.name
  • listener.
  • listeners.
  • log.dir
  • password.
  • port
  • process.roles
  • sasl.
  • security.
  • servers.node.id
  • ssl.
  • super.user

たとえば、Apache Kafkaを使用したストリーミングはプレーン・テキスト・リスナーをサポートしていないため、クラスタ構成ファイルでの設定"listeners": "PLAINTEXT://:9092"の構成もサポートされていません。この設定を適用してプレーン・テキスト・リスナーを構成すると、構成は暗黙的に無視され、プレーン・テキスト・リスナーはアクティブになりず、警告が記録されます。

無効なカスタム構成の例を次に示します。ここでは、すべての設定が無視され、デフォルトが適用されます。

{
  "listeners": "PROTOCOL://:9092",                  // Ignored: Protocol not supported.
  "num.network.threads": -5,                        // Ignored: Cannot be negative.
  "num.io.threads": "eight",                        // Ignored: Should be an integer (like, 8).
  "socket.send.buffer.bytes": 0,                    // Ignored: Value is too low.
  "socket.receive.buffer.bytes": 9999999999,        // Ignored: Value is too high.
  "socket.request.max.bytes": -104857600,           // Ignored: Negative value.
  "log.retention.hours": "one hundred",             // Ignored: Should be an integer.
  "log.segment.bytes": 123.45,                      // Ignored: Should be an integer, not a decimal.
  "log.retention.check.interval.ms": "five minutes",// Ignored: Should be an integer in ms.
  "num.partitions": 0,                              // Ignored: Should be at least 1.
  "default.replication.factor": 5,                  // Ignored: May fail if fewer than 5 brokers.
  "min.insync.replicas": 10,                        // Ignored: Higher than replication factor.
  "message.max.bytes": -1000012,                    // Ignored: Negative value.
  "replica.fetch.max.bytes": "1MB",                 // Ignored: Should be an integer.
  "offsets.topic.replication.factor": "three",      // Ignored: Should be an integer.
  "transaction.state.log.replication.factor": -1,   // Ignored: Negative value.
  "transaction.state.log.min.isr": 0                // Ignored: Should be at least 1.
}