Gerenciando Configurações de Cluster

Cada cluster Kafka no serviço Streaming com Apache Kafka tem um arquivo de configuração de cluster que contém todas as propriedades de configuração do servidor.

Também é necessário gerenciar configurações de cliente.

Propriedades Configuráveis do Broker

Com o Streaming com Apache Kafka, você pode personalizar a configuração do Kafka atualizando propriedades específicas do broker. O serviço simplifica a configuração do Kafka limitando as propriedades que podem ser atualizadas. Valide o arquivo de configuração do cluster em relação às propriedades suportadas para evitar comportamento inesperado.

Se forem fornecidas configurações inválidas ou incorretas, elas serão ignoradas e os valores padrão conforme definidos pelo Apache Kafka serão usados. Isso garante a estabilidade do cluster e impede que a configuração incorreta afete a disponibilidade do serviço.

Para obter as configurações padrão definidas pelo OCI Streaming com Apache Kafka, consulte Opções Padrão do Cluster.

Você pode atualizar as seguintes propriedades de broker:

Propriedade Valor de amostra Finalidade
client.quota.callback.static.storage.soft 97% de totalStorageBytes Define um limite flexível na capacidade de armazenamento em disco do broker.
client.quota.callback.static.storage.hard 98% de totalStorageBytes Define um limite rígido na capacidade de armazenamento em disco do broker.
default.replication.factor 1 Define o fator de replicação padrão para novos tópicos.
log.retention.hours 168 Define o tempo mínimo para reter segmentos de log.
log.segment.bytes 1,073,741,824 Define o tamanho máximo de um único arquivo de segmento de log.
log.cleanup.policy excluir Define a estratégia de retenção de log (delete ou compact).
message.max.bytes 1,048,588 Define o tamanho máximo de uma mensagem que o broker aceita.
min.insync.replicas 1 Define o número mínimo de réplicas de sincronização necessárias para que uma gravação seja confirmada.
num.io.threads 8 Define o número de threads para operações de E/S de disco.
num.replica.fetchers 1 Define o número de threads usados para replicar dados de outros brokers.
unclean.leader.election.enable falso Permite que réplicas fora de sincronia sejam eleitas como líderes.

Definir cotas de disco do broker personalizado

Você pode definir cotas de disco do broker personalizado.

  1. Crie ou atualize o arquivo JSON de configuração de cluster com a configuração de cota necessária. Por exemplo, atualize o arquivo kafka-config.json com os seguintes detalhes sobre as cotas de 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. Especifique o arquivo de configuração criado ou atualizado na etapa anterior como o arquivo de configuração do cluster. Por exemplo, especifique --latest-config file://kafka-config.json no comando da CLI create ou update cluster-config.
  3. Atualize o cluster Kafka usando a API ou a CLI e especifique o arquivo de configuração novo ou atualizado kafka-config.json.
Observação

Não é possível definir valores de cota de disco maiores que os limites padrão.

Propriedades do Corretor Não Configurável

O streaming com o Apache Kafka define algumas propriedades de broker como não editáveis e, se você configurar essas propriedades, elas serão ignoradas pelo serviço. Você deve validar o arquivo de configuração em relação às propriedades de suporte para evitar comportamento inesperado.

Não é possível atualizar as seguintes propriedades do 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

Por exemplo, o Streaming com Apache Kafka não suporta listeners de texto simples e, portanto, não há suporte para a configuração da definição "listeners": "PLAINTEXT://:9092" no arquivo de configuração do cluster. Se você aplicar essa configuração para configurar um listener de texto sem formatação, a configuração será ignorada silenciosamente e o listener de texto sem formatação não será ativado e um aviso será registrado.

Veja a seguir um exemplo de configurações personalizadas inválidas. Aqui, todas as definições são ignoradas e os padrões aplicados.

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