Clusterkonfigurationen verwalten

Jedes Kafka-Cluster in Streaming mit Apache Kafka verfügt über eine Clusterkonfigurationsdatei, die alle Serverkonfigurationseigenschaften enthält.

Sie müssen auch Clientkonfigurationen verwalten.

Konfigurierbare Broker-Eigenschaften

Mit Streaming mit Apache Kafka können Sie die Kafka-Konfiguration anpassen, indem Sie bestimmte Broker-Eigenschaften aktualisieren. Der Service optimiert die Kafka-Konfiguration, indem die aktualisierbaren Eigenschaften begrenzt werden. Validieren Sie die Clusterkonfigurationsdatei anhand der unterstützten Eigenschaften, um unerwartetes Verhalten zu vermeiden.

Wenn ungültige oder falsche Konfigurationen angegeben werden, werden sie ignoriert, und die Standardwerte wie von Apache Kafka definiert werden verwendet. Dadurch wird die Clusterstabilität sichergestellt und verhindert, dass sich eine falsche Konfiguration auf die Serviceverfügbarkeit auswirkt.

Die Standardkonfigurationen, die von OCI Streaming mit Apache Kafka festgelegt werden, finden Sie unter Clusterstandardoptionen.

Sie können die folgenden Broker-Eigenschaften aktualisieren:

Eigenschaft Beispielwert Zweck
client.quota.callback.static.storage.soft 97% von totalStorageBytes Legt einen Soft-Limit für die Broker-Datenträgerspeicherkapazität fest.
client.quota.callback.static.storage.hard 98% von totalStorageBytes Legt einen festen Grenzwert für die Broker-Festplattenspeicherkapazität fest.
default.replication.factor 1 Legt den Standardreplikationsfaktor für neue Themen fest.
log.retention.hours 168 Legt die Mindestzeit für die Beibehaltung von Logsegmenten fest.
log.segment.bytes 1.073.741.824 Legt die maximale Größe einer einzelnen Logsegmentdatei fest.
log.cleanup.policy löschen Legt die Strategie zur Logaufbewahrung fest (delete oder compact).
message.max.bytes 1.048.588 Legt die maximale Größe einer Nachricht fest, die der Broker akzeptiert.
min.insync.replicas 1 Legt die Mindestanzahl an synchronen Replikaten fest, die für die Bestätigung eines Schreibvorgangs erforderlich sind.
num.io.threads 8 Legt die Anzahl der Threads für Datenträger-I/O-Vorgänge fest.
num.replica.fetchers 1 Legt die Anzahl der Threads fest, die zum Replizieren von Daten von anderen Brokern verwendet werden.
unclean.leader.election.enable falsch Ermöglicht die Auswahl von nicht synchronen Replikaten als Führungskräfte.

Benutzerdefinierte Broker-Festplatten-Quotas definieren

Sie können benutzerdefinierte Broker-Festplattenkontingente definieren.

  1. Erstellen oder aktualisieren Sie die JSON-Datei der Clusterkonfiguration mit der erforderlichen Quota-Konfiguration. Aktualisieren Sie beispielsweise die Datei kafka-config.json mit den folgenden Details zu den Festplattenkontingenten:
    {
    "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. Geben Sie die Konfigurationsdatei an, die im vorherigen Schritt als Konfigurationsdatei für das Cluster erstellt oder aktualisiert wurde. Beispiel: Geben Sie --latest-config file://kafka-config.json im CLI-Befehl create oder update cluster-config an.
  3. Aktualisieren Sie das Kafka-Cluster mit der API oder CLI, und geben Sie die neue oder aktualisierte Konfigurationsdatei kafka-config.json an.
Hinweis

Sie können Datenträgerquotenwerte nicht höher als die Standardlimits festlegen.

Nicht konfigurierbare Broker-Eigenschaften

Beim Streaming mit Apache Kafka werden einige Broker-Eigenschaften als nicht editierbar festgelegt. Wenn Sie diese Eigenschaften konfigurieren, werden sie vom Service ignoriert. Sie müssen die Konfigurationsdatei anhand der Unterstützungseigenschaften validieren, um unerwartetes Verhalten zu vermeiden.

Sie können die folgenden Broker-Eigenschaften nicht aktualisieren:

  • 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

Beispiel: Streaming mit Apache Kafka unterstützt keine Klartext-Listener. Daher wird die Konfiguration der Einstellung "listeners": "PLAINTEXT://:9092" in der Clusterkonfigurationsdatei nicht ebenfalls unterstützt. Wenn Sie diese Einstellung anwenden, um einen Klartext-Listener zu konfigurieren, wird die Konfiguration im Hintergrund ignoriert, und der Klartext-Listener wird nicht aktiviert, und eine Warnung wird protokolliert.

Im Folgenden finden Sie ein Beispiel für ungültige benutzerdefinierte Konfigurationen. Hier werden alle Einstellungen ignoriert und Standardwerte angewendet.

{
  "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.
}