Gestión de Configuraciones de Cluster

Cada cluster de Kafka en Streaming con Apache Kafka tiene un archivo de configuración de cluster que contiene todas las propiedades de configuración del servidor.

También debe gestionar configuraciones de cliente.

Propiedades configurables del agente

Con Streaming con Apache Kafka, puede personalizar la configuración de Kafka actualizando propiedades específicas del broker. El servicio optimiza la configuración de Kafka limitando las propiedades que se pueden actualizar. Valide el archivo de configuración del cluster con las propiedades admitidas para evitar un comportamiento inesperado.

Si se proporcionan configuraciones no válidas o incorrectas, se ignoran y se utilizan los valores por defecto tal como define Apache Kafka. Esto garantiza la estabilidad del cluster y evita que la configuración incorrecta afecte la disponibilidad del servicio.

Para conocer las configuraciones por defecto definidas por OCI Streaming con Apache Kafka, consulte Opciones por defecto de cluster.

Puede actualizar las siguientes propiedades de broker:

Propiedad Valor de muestra Finalidad
client.quota.callback.static.storage.soft 97% de totalStorageBytes Establece un límite variable en la capacidad de almacenamiento en disco del broker.
client.quota.callback.static.storage.hard El 98 % de totalStorageBytes Establece un límite estricto en la capacidad de almacenamiento del disco del broker.
default.replication.factor 1 Define el factor de replicación por defecto para temas nuevos.
log.retention.hours 168 Define el tiempo mínimo para retener los segmentos de log.
log.segment.bytes 1.073.741.824 Define el tamaño máximo de un único archivo de segmento de log.
log.cleanup.policy suprimir Define la estrategia de retención de logs (delete o compact).
message.max.bytes 1.048.588 Define el tamaño máximo de un mensaje que acepta el broker.
min.insync.replicas 1 Define el número mínimo de réplicas sincronizadas necesarias para que se confirme una escritura.
num.io.threads 8 Define el número de subprocesos para las operaciones de E/S de disco.
num.replica.fetchers 1 Define el número de threads utilizados para replicar datos de otros agentes.
unclean.leader.election.enable falso Permite la elección de réplicas no sincronizadas como líderes.

Definir cuotas de disco de broker personalizadas

Puede definir cuotas de disco de broker personalizadas.

  1. Cree o actualice el archivo JSON de configuración de cluster con la configuración de cuota necesaria. Por ejemplo, actualice el archivo kafka-config.json con los siguientes detalles sobre las cuotas 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 el archivo de configuración creado o actualizado en el paso anterior como archivo de configuración para el cluster. Por ejemplo, especifique --latest-config file://kafka-config.json en el comando de la CLI create o update cluster-config.
  3. Actualice el cluster de Kafka mediante la API o la CLI y especifique el archivo de configuración nuevo o actualizado kafka-config.json.
Nota

No puede definir valores de cuota de disco superiores a los límites por defecto.

Propiedades de agente no configurables

La transmisión con Apache Kafka define algunas propiedades del broker como no editables y, si configura estas propiedades, el servicio las ignora. Debe validar el archivo de configuración con las propiedades de soporte para evitar un comportamiento inesperado.

No puede actualizar las siguientes propiedades del intermediario:

  • 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 ejemplo, Streaming con Apache Kafka no soporta listeners de texto sin formato y, por lo tanto, la configuración del valor "listeners": "PLAINTEXT://:9092" en el archivo de configuración de cluster tampoco está soportada. Si aplica este valor para configurar un listener de texto sin formato, la configuración se ignora silenciosamente y el listener de texto sin formato no se activa y se registra una advertencia.

A continuación, se muestra un ejemplo de configuraciones personalizadas no válidas. Aquí, se ignoran todos los valores y se aplican los valores por defecto.

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