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.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à supportate.

Impossibile aggiornare le seguenti proprietà del broker:

  • advertised.
  • authorizer.
  • broker.
  • client.quota.callback.class
  • 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 listener in testo semplice e 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.

Nota

Le operazioni del cluster e le richieste di lavoro associate non riescono se i valori di configurazione non sono validi. Un valore predefinito viene applicato solo quando non viene specificato alcun valore per una proprietà di configurazione. Se si specifica un valore, l'operazione non riesce se il valore non è corretto, poiché il servizio non torna ai valori predefiniti quando viene impostato un valore.

Di seguito è riportato un esempio di configurazioni personalizzate non valide che causano l'errore della richiesta di lavoro.


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