Gestione delle configurazioni dei cluster

Ogni cluster Kafka in Streaming con Apache Kafka dispone di un file di configurazione cluster contenente tutte le proprietà di configurazione del server.

È inoltre necessario gestire le configurazioni client.

Proprietà broker configurabili

Con Streaming con Apache Kafka, è possibile personalizzare la configurazione Kafka aggiornando proprietà broker specifiche. Il servizio semplifica la configurazione di Kafka limitando le proprietà che è possibile aggiornare. Convalidare il file di configurazione del cluster rispetto alle proprietà supportate per evitare un funzionamento imprevisto.

Se vengono fornite configurazioni non valide o errate, vengono ignorate e vengono utilizzati i valori predefiniti come definiti da Apache Kafka. Ciò garantisce la stabilità del cluster e impedisce che una configurazione errata influisca sulla disponibilità del servizio.

Per le configurazioni predefinite impostate da OCI Streaming con Apache Kafka, vedere Opzioni predefinite del cluster.

È possibile aggiornare le seguenti proprietà del broker:

Property Valore di esempio Scopo
client.quota.callback.static.storage.soft 97% di totalStorageBytes Imposta un limite relativo alla capacità di storage su disco del broker.
client.quota.callback.static.storage.hard 98% di totalStorageBytes Imposta un limite assoluto per la capacità di storage su disco del broker.
default.replication.factor 1 Imposta il fattore di replica predefinito per i nuovi argomenti.
log.retention.hours 168 Imposta il tempo minimo per conservare i segmenti di log.
log.segment.bytes 1.073.741.824 Imposta la dimensione massima di un singolo file di segmento di log.
log.cleanup.policy elimina Imposta la strategia di conservazione dei log (delete o compact).
message.max.bytes 1.048.588 Imposta la dimensione massima di un messaggio accettato dal broker.
min.insync.replicas 1 Imposta il numero minimo di repliche in-sync necessarie per confermare una scrittura.
num.io.threads 8 Imposta il numero di thread per le operazioni di I/O su disco.
num.replica.fetchers 1 Imposta il numero di thread utilizzati per replicare i dati da altri broker.
unclean.leader.election.enable falso Consente di eleggere come leader le repliche non sincronizzate.

Definisci quote disco broker personalizzate

È possibile definire quote disco broker personalizzate.

  1. Creare o aggiornare il file JSON di configurazione cluster con la configurazione quota richiesta. Ad esempio, aggiornare il file kafka-config.json con i seguenti dettagli sulle quote del disco:
    {
    "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. Specificare il file di configurazione creato o aggiornato nel passo precedente come file di configurazione per il cluster. Ad esempio, specificare --latest-config file://kafka-config.json nel comando CLI create o update cluster-config.
  3. Aggiornare il cluster Kafka utilizzando l'API o l'interfaccia CLI e specificare il file di configurazione kafka-config.json nuovo o aggiornato.
Nota

Non è possibile impostare valori di quota del disco superiori ai limiti predefiniti.

Proprietà broker non configurabile

Streaming con Apache Kafka imposta alcune proprietà del broker come non modificabili e se si configurano queste proprietà vengono ignorate dal servizio. Per evitare un comportamento imprevisto, è necessario convalidare il file di configurazione in base alle proprietà di supporto.

Impossibile aggiornare le seguenti proprietà del broker:

  • 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

Ad esempio, Streaming con Apache Kafka non supporta i listener in testo semplice, pertanto la configurazione dell'impostazione "listeners": "PLAINTEXT://:9092" nel file di configurazione del cluster non è supportata. Se si applica questa impostazione per configurare un listener con testo non codificato, la configurazione viene ignorata silenziosamente e il listener con testo non codificato non viene reso attivo e viene registrata un'avvertenza.

Di seguito è riportato un esempio di configurazioni personalizzate non valide. Qui, tutte le impostazioni vengono ignorate e vengono applicate le impostazioni predefinite.

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