Configuraciones personalizadas de MSK - Transmisión gestionada de Amazon para Apache Kafka

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuraciones personalizadas de MSK

Puedes usar Amazon MSK para crear una MSK configuración personalizada en la que establezcas las siguientes propiedades. Las propiedades que no se establecen de forma explícita obtienen los valores que tienen en La MSK configuración por defecto de Amazon. Para obtener más información acerca de las propiedades de configuración, consulte Configuración de Apache Kafka.

Propiedades de configuración de Apache Kafka que se pueden establecer
Nombre Descripción
allow.everyone.if.no.acl.found Si desea establecer esta propiedad enfalse, primero asegúrese de definir Apache Kafka ACLs para su clúster. Si establece esta propiedad en Apache Kafka false y no lo define primeroACLs, perderá el acceso al clúster. Si eso ocurre, puede volver a actualizar la configuración y establecer esta propiedad en true para recuperar el acceso al clúster.
auto.create.topics.enable Habilita la creación automática de temas en el servidor.
compression.type El tipo de compresión final para un tema determinado. Puede establecer esta propiedad en los códecs de compresión estándar (gzip, snappy, lz4 y zstd). Además, acepta uncompressed. Este valor equivale a la ausencia de compresión. Si establece el valor en producer, se retendrá el códec de compresión original que configuró el productor.

connections.max.idle.ms

Tiempo de espera de las conexiones inactivas en milisegundos. Los subprocesos del procesador del socket del servidor cierran las conexiones que están inactivas durante un tiempo superior al valor establecido para esta propiedad.
default.replication.factor El factor de replicación predeterminado de los temas que se han creado automáticamente.
delete.topic.enable Habilita la operación para eliminar un tema. Si desactiva esta configuración, no podrá eliminar un tema usando la herramienta de administración.
group.initial.rebalance.delay.ms Cantidad de tiempo que el coordinador del grupo espera para que otros consumidores de datos se unan a un nuevo grupo antes de que el coordinador del grupo lleve a cabo el primer reequilibrio. Un retraso superior implica posiblemente menos reequilibrios, pero aumenta el tiempo hasta que el procesamiento comience.
group.max.session.timeout.ms Tiempo de espera máximo de la sesión para los consumidores registrados. Unos tiempos de espera superiores proporcionan a los consumidores más tiempo para procesar los mensajes entre latidos, pero se requiere más tiempo para detectar errores.
group.min.session.timeout.ms Tiempo de espera mínimo de la sesión para los consumidores registrados. Unos tiempos de espera inferiores se traducen en una detección de errores más rápida, pero se requieren latidos de consumidores más frecuentes. Esto puede agotar los recursos del agente.
leader.imbalance.per.broker.percentage La proporción de desequilibrio del líder permitida por agente. El controlador desencadena un equilibrio del líder si supera este valor por agente. Este valor se especifica en porcentaje.
log.cleaner.delete.retention.ms Cantidad de tiempo que desea que Apache Kafka conserve los registros eliminados. El valor mínimo es 0.
log.cleaner.min.cleanable.ratio

Esta propiedad de configuración puede tener valores entre 0 y 1. Este valor determina la frecuencia con la que el compactador de registros intenta limpiar el registro (si la compactación de registros está habilitada). De forma predeterminada, Apache Kafka evita limpiar un registro si se ha compactado más del 50 % de este. Esta proporción limita el espacio máximo que el registro desperdicia con duplicados (al 50 %, esto significa que como máximo el 50 % del registro podría estar duplicado). Una proporción mayor se traduce en limpiezas más eficaces y menos frecuentes, pero también implica un gasto de espacio superior en el registro.

log.cleanup.policy La política de limpieza predeterminada de los segmentos que superan el periodo de retención. Una lista de políticas válidas separadas por comas. Las políticas válidas son delete y compact. En el caso de los clústeres habilitados para el almacenamiento por niveles, la única política válida es delete.
log.flush.interval.messages Número de mensajes acumulados en una partición de registro antes de que se vacíen en el disco.
log.flush.interval.ms Tiempo máximo en milisegundos que un mensaje de cualquier tema se conserva en la memoria antes de vaciarlo en el disco. Si no establece este valor, se utiliza el valor de log.flush.scheduler.interval.ms. El valor mínimo es 0.
log.message.timestamp.difference.max.ms La diferencia temporal máxima entre la marca temporal que se produce cuando un agente recibe un mensaje y la marca temporal que se especifica en el mensaje. Si es log.message.timestamp.type=CreateTime, se rechazará un mensaje si la diferencia en la marca de tiempo supera este umbral. Esta configuración se ignora si es LogAppendTime log.message.timestamp.type=.
log.message.timestamp.type Especifica si la marca temporal del mensaje es la hora de creación del mensaje o la hora de adición del registro. Los valores permitidos son CreateTime y LogAppendTime.
log.retention.bytes Tamaño máximo del registro antes de eliminarlo.
log.retention.hours Número de horas que se conserva un archivo de registro antes de eliminarlo, cantidad terciaria de la propiedad log.retention.ms.
log.retention.minutes Número de minutos que se conserva un archivo de registro antes de eliminarlo, cantidad secundaria de la propiedad log.retention.ms. Si no establece este valor, se utiliza el valor de log.retention.hours.
log.retention.ms Número de milisegundos que se conserva un archivo de registro antes de eliminarlo (en milisegundos). Si no se establece, se utiliza el valor de log.retention.minutes.
log.roll.ms Tiempo máximo antes de que un segmento de registro nuevo se implemente (en milisegundos). Si no establece esta propiedad, se utiliza el valor de log.roll.hours. El valor mínimo posible de esta propiedad es 1.
log.segment.bytes Tamaño máximo de un único archivo de registro.
max.incremental.fetch.session.cache.slots Número máximo de sesiones de recuperación incrementales que se conservan.
message.max.bytes

Tamaño de lote de registros más grande que admite Kafka. Si aumenta este valor y hay consumidores anteriores a 0.10.2, también debe aumentar el tamaño de recuperación de los consumidores para que se puedan recuperar lotes de registros de este tamaño.

La versión de formato de mensaje más reciente siempre agrupa los mensajes en lotes para aumentar la eficacia. Las versiones de formato de mensaje anteriores no agrupan los registros sin comprimir en lotes y, en este caso, este límite se aplica únicamente a un solo registro.

Puede establecer este valor por tema con la configuración de temas max.message.bytes.

min.insync.replicas

Cuando un productor establece las confirmaciones en "all" (o "-1"), el valor de min.insync.replicas especifica el número mínimo de réplicas que debe confirmar una escritura para que se considere como correcta. Si no se puede alcanzar este mínimo, el productor hace una excepción (o bien). NotEnoughReplicas NotEnoughReplicasAfterAppend

Puede utilizar valores de min.insync.replicas y confirmaciones para reforzar las garantías de durabilidad. Por ejemplo, puede crear un tema con un factor de replicación de 3, establecer min.insync.replicas en 2 y producirlo con las confirmaciones de "all". Esto garantiza que el productor emita una excepción si la mayoría de las réplicas no reciben una escritura.

num.io.threads El número de subprocesos que utiliza el servidor para procesar las solicitudes, puede incluir la E/S del disco.
num.network.threads El número de subprocesos que utiliza el servidor para recibir solicitudes desde la red y enviarle las respuestas a dichas solicitudes.
num.partitions Número predeterminado de particiones de registro por tema.
num.recovery.threads.per.data.dir El número de subprocesos por directorio de datos que se va a utilizar para la recuperación de registros en el arranque y para el vaciado en el apagado.
num.replica.fetchers El número de subprocesos del recuperador que se utilizan para replicar los mensajes desde un agente de origen. Aumentar este valor puede incrementar el grado de paralelismo de E/S del agente del seguidor.
offsets.retention.minutes Después de que un grupo de consumidores pierda todos sus consumidores (es decir, se quede vacío), sus compensaciones se conservan durante este periodo de retención antes de que se descarten. Para los consumidores independientes (es decir, los que utilizan asignación manual), las compensaciones vencen después de la hora de la última confirmación más este periodo de retención.
offsets.topic.replication.factor El factor de replicación del tema de compensación. Establezca este valor en un valor más alto para garantizar la disponibilidad. Se produce un error en la creación del tema interno hasta que el tamaño del clúster cumpla este requisito de factor de replicación.
replica.fetch.max.bytes Número de bytes de los mensajes para intentar recuperar cada partición. Esto no es un valor máximo absoluto. Si el primer lote de registros de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registros se devuelve para asegurar el progreso. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) definen el tamaño de lote de registro máximo que acepta el agente.
replica.fetch.response.max.bytes El número máximo de bytes previsto para la respuesta de recuperación completa. Los registros se recuperan en lotes y, si el primer lote de registro de la primera partición que no está vacía de la recuperación es superior a este valor, el lote de registro se devolverá para asegurar que se lleva a cabo el progreso. Esto no es un valor máximo absoluto. Las propiedades message.max.bytes (configuración del agente) o max.message.bytes (configuración del tema) especifican el tamaño de lote de registro máximo que acepta el agente.
replica.lag.time.max.ms Si un seguidor no ha enviado ninguna solicitud de búsqueda o no ha consumido hasta el límite del registro del líder durante al menos este número de milisegundos, el líder eliminará al seguidor del. ISR

MinValue: 10000

MaxValue = 30000

replica.selector.class El nombre de clase totalmente cualificado que se implementa. ReplicaSelector El agente utiliza este valor para encontrar la réplica de lectura preferida. Si utiliza la versión 2.4.1 o superior de Apache Kafka y desea permitir que los consumidores puedan recuperar desde la réplica más cercana, establezca esta propiedad en org.apache.kafka.common.replica.RackAwareReplicaSelector. Para obtener más información, consulte Versión 2.4.1 de Apache Kafka (utilice 2.4.1.1 en su lugar).
replica.socket.receive.buffer.bytes El búfer de recepción de sockets para las solicitudes de red.
socket.receive.buffer.bytes El RCVBUF búfer SO_ de los sockets del servidor de sockets. El valor mínimo que puede establecer para esta propiedad es -1. Si el valor es -1, Amazon MSK usa el sistema operativo predeterminado.
socket.request.max.bytes El número máximo de bytes de una solicitud de conector.
socket.send.buffer.bytes El SNDBUF búfer SO_ de los sockets del servidor de sockets. El valor mínimo que puede establecer para esta propiedad es -1. Si el valor es -1, Amazon MSK usa el sistema operativo predeterminado.
transaction.max.timeout.ms Tiempo de espera máximo para las transacciones. Si el tiempo de transacción solicitado por un cliente supera este valor, el bróker devuelve un error InitProducerIdRequest. Esto evita que un cliente experimente un tiempo de espera demasiado grande, lo que puede detener la lectura de los temas que se incluyen en la transacción por parte de los consumidores.
transaction.state.log.min.isr Se ha anulado la configuración min.insync.replicas para el tema de la transacción.
transaction.state.log.replication.factor El factor de replicación del tema de transacción. Establezca esta propiedad en un valor más elevado para aumentar la disponibilidad. Se produce un error en la creación del tema interno hasta que el tamaño del clúster cumpla este requisito de factor de replicación.
transactional.id.expiration.ms El tiempo en milisegundos que el coordinador de transacciones espera para recibir cualquier actualización del estado de la transacción actual antes de que venza el ID de la transacción del coordinador. Esta configuración también influye en la caducidad del ID de productor, ya que hace que el productor IDs caduque cuando este tiempo transcurre después de la última escritura con el ID de productor indicado. IDsEs posible que el productor caduque antes si se elimina la última escritura del ID de productor debido a la configuración de retención del tema. El valor mínimo de esta propiedad es de 1 milisegundo.
unclean.leader.election.enable Indica si las réplicas que no estén en el ISR conjunto deben servir como líderes como último recurso, aunque esto pueda provocar la pérdida de datos.
zookeeper.connection.timeout.ms

ZooKeeper clústeres de modos. Tiempo máximo que el cliente espera para establecer una conexión. ZooKeeper Si no establece este valor, se utiliza el valor de zookeeper.session.timeout.ms.

MinValue = 6000

MaxValue (incluido) = 18000

zookeeper.session.timeout.ms

ZooKeeper clústeres de modos. El tiempo de espera ZooKeeper de la sesión de Apache en milisegundos.

MinValue = 6000

MaxValue (incluido) = 18000

Para obtener información sobre cómo crear una MSK configuración personalizada, enumerar todas las configuraciones o describirlas, consulteOperaciones de MSK configuración de Amazon. Para crear un MSK clúster con una MSK configuración personalizada o para actualizar un clúster con una nueva configuración personalizada, consulteAmazonMSK: Cómo funciona.

Cuando actualizas tu MSK clúster existente con una MSK configuración personalizada, Amazon MSK realiza reinicios sucesivos cuando es necesario y utiliza las mejores prácticas para minimizar el tiempo de inactividad de los clientes. Por ejemplo, después de que Amazon MSK reinicie cada corredor, Amazon MSK intenta dejar que el corredor se ponga al día con los datos que el corredor podría haber pasado por alto durante la actualización de la configuración antes de pasar al siguiente corredor.

Configuración dinámica

Además de las propiedades de configuración que MSK proporciona Amazon, puedes establecer dinámicamente las propiedades de configuración a nivel de clúster y de broker que no requieren el reinicio del broker. Puede establecer de forma dinámica algunas propiedades de configuración. Estas son las propiedades que no están marcadas como de solo lectura en la tabla en Broker Configs en la documentación de Apache Kafka. Para obtener más información acerca de configuraciones dinámicas y ejemplos de comandos, consulte Updating Broker Configs en la documentación de Apache Kafka.

nota

Puede establecer la propiedad advertised.listeners, pero no la propiedad listeners.

Configuración de temas

Puede utilizar los comandos de Apache Kafka para establecer o modificar propiedades de configuración de nivel de tema para temas nuevos y existentes. Para obtener más información acerca de las propiedades de configuración de temas y ejemplos de cómo establecerlas, consulte Topic-Level Configs en la documentación de Apache Kafka.

Estados de configuración

Una MSK configuración de Amazon puede estar en uno de los siguientes estados. Para realizar una operación en una configuración, la configuración debe estar en el estado ACTIVE o DELETE_FAILED:

  • ACTIVE

  • DELETING

  • DELETE_FAILED