Configurações personalizadas do Amazon MSK - Amazon Managed Streaming for Apache Kafka

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurações personalizadas do Amazon MSK

É possível usar o Amazon MSK para criar uma configuração personalizada do MSK na qual você define as seguintes propriedades. As propriedades que você não define explicitamente obtêm os valores que têm em Configuração padrão do Amazon MSK. Para obter mais informações sobre as propriedades da configuração, consulte Configuração do Apache Kafka.

Propriedades de configuração do Apache Kafka
Nome Descrição
allow.everyone.if.no.acl.found Se você quiser definir essa propriedade comofalse, primeiro certifique-se de definir o Apache Kafka ACLs para seu cluster. Se você definir essa propriedade como false e não definir primeiro o Apache Kafka ACLs, perderá o acesso ao cluster. Se isso acontecer, é possível atualizar a configuração novamente e definir essa propriedade como true para recuperar o acesso ao cluster.
auto.create.topics.enable Habilita a criação automática de tópicos no servidor.
compression.type O tipo de compactação final de um determinado tópico. Você pode definir essa propriedade para os codecs de compactação padrão (gzip, snappy, lz4 e zstd). Além disso, também aceita uncompressed. Esse valor é equivalente a nenhuma compactação. Se você definir o valor como producer, isso significa reter o codec de compactação original definido pelo produtor.

connections.max.idle.ms

O tempo limite de conexões ociosas em milissegundos. Os threads do processador de soquete do servidor fecham as conexões que estiverem ociosas há mais tempo que o que o valor definido para essa propriedade.
default.replication.factor O fator de replicação padrão para tópicos criados automaticamente.
delete.topic.enable Habilita a operação de exclusão de tópico. Se desativar essa configuração, você não poderá excluir um tópico por meio da ferramenta de administração.
group.initial.rebalance.delay.ms O período que o coordenador do grupo espera que mais consumidores de dados ingressem em um novo grupo antes de executar a primeira operação de rebalanceamento. Um atraso mais longo significa potencialmente menos rebalanceamentos, mas aumenta o tempo até o início do processamento.
group.max.session.timeout.ms Tempo limite máximo de sessão para consumidores registrados. Tempos limite mais longos permitem que os consumidores tenham mais tempo para processar mensagens entre pulsações ao custo de mais tempo para detectar falhas.
group.min.session.timeout.ms Tempo limite mínimo de sessão para consumidores registrados. Tempos limite mais curtos resultam em detecção mais rápida de falhas ao custo de pulsações mais frequentes do consumidor. Isso pode sobrecarregar os recursos do agente.
leader.imbalance.per.broker.percentage A proporção de desequilíbrio de líder permitida por agente. O controlador aciona um balanceamento de líder caso ele ultrapasse esse valor por agente. Esse valor é especificado em porcentagem.
log.cleaner.delete.retention.ms Período de tempo que você deseja que o Apache Kafka mantenha registros excluídos. O valor mínimo é 0.
log.cleaner.min.cleanable.ratio

Essa propriedade de configuração pode ter valores entre 0 e 1. Esse valor determina a frequência na qual o compactador de logs tenta limpar o log (se a compactação de logs estiver habilitada). Por padrão, o Apache Kafka evita limpar um log se mais de 50% do log tiver sido compactado. Essa proporção limita o espaço máximo que o log desperdiça com duplicatas (em 50%, isso significa que até 50% do log pode ser de duplicatas). Uma proporção maior significa menos limpezas mais eficientes, mas também mais espaço desperdiçado no log.

log.cleanup.policy A política de limpeza padrão para segmentos além da janela de retenção. Uma lista de políticas válidas separadas por vírgulas. As políticas válidas são delete e compact. Para clusters habilitados para armazenamento em camadas, a política válida é somente delete.
log.flush.interval.messages O número de mensagens acumuladas em uma partição de log antes que as mensagens sejam liberadas para o disco.
log.flush.interval.ms O período máximo em milissegundos no qual uma mensagem em qualquer tópico permanece na memória antes de ser liberada para o disco. Se você não definir esse valor, o sistema usará o valor em log.flush.scheduler.interval.ms. O valor mínimo é 0.
log.message.timestamp.difference.max.ms Essa configuração está obsoleta no Kafka 3.6.0. Duas configurações, log.message.timestamp.before.max.ms elog.message.timestamp.after.max.ms, foram adicionadas. A diferença máxima de tempo entre o carimbo de data/hora em que um agente recebe uma mensagem e o carimbo de data/hora especificado na mensagem. Se log.message.timestamp.type=CreateTime, uma mensagem será rejeitada se a diferença no timestamp exceder esse limite. Essa configuração será ignorada se log.message.timestamp.type=. LogAppendTime
log.message.timestamp.type Especifica se o carimbo de data/hora na mensagem é o horário de criação da mensagem ou da adição no log. Os valores permitidos são CreateTime e LogAppendTime.
log.retention.bytes Tamanho máximo do log antes de ser excluído.
log.retention.hours Número de horas para manter um arquivo de log antes de excluí-lo, terciário à propriedade log.retention.ms.
log.retention.minutes Número de minutos para manter um arquivo de log antes de excluí-lo, secundário à propriedade log.retention.ms. Se você não definir esse valor, o sistema usará o valor de log.retention.hours.
log.retention.ms Número de milissegundos para manter um arquivo de log antes de excluí-lo (em milissegundos). Se não for definido, o valor de log.retention.minutes será usado.
log.roll.ms Tempo máximo para que um novo segmento de log seja implantado (em milissegundos). Se você não definir essa propriedade, o sistema usará o valor de log.roll.hours. O valor mínimo possível para essa propriedade é 1.
log.segment.bytes Tamanho máximo de um único arquivo de log.
max.incremental.fetch.session.cache.slots Número máximo de sessões de busca incrementais mantidas.
message.max.bytes

O maior tamanho de lote de registros que o Kafka permite. Se você aumentar esse valor e houver consumidores anteriores à versão 0.10.2, também será necessário aumentar o tamanho de busca dos consumidores para que eles possam buscar lotes de registros desse tamanho.

O formato de mensagem mais recente sempre agrupa as mensagens em lotes visando eficiência. As versões anteriores de formato de mensagem não agrupam em lotes os registros não compactados, e, nesse caso, esse limite é aplicável somente a um único registro.

É possível definir esse valor por tópico com a configuração max.message.bytes de nível do tópico.

min.insync.replicas

Quando um produtor define acks como "all" (ou "-1"), o valor em min.insync.replicas especifica o número mínimo de réplicas que devem confirmar uma gravação para que a gravação seja considerada bem-sucedida. Se esse mínimo não puder ser atingido, o produtor cria uma exceção ( NotEnoughReplicas ou NotEnoughReplicasAfterAppend).

Você pode usar valores em min.insync.replicas e acks para forçar maiores garantias de durabilidade. Por exemplo, você poderia criar um tópico com um fator de replicação de 3, definir min.insync.replicas como 2 e produzir com acks de "all". Isso garante que o produtor gere uma exceção se a maioria das réplicas não receber uma gravação.

num.io.threads O número de threads que o servidor usa para processar solicitações, que podem incluir E/S de disco.
num.network.threads O número de threads que o servidor usa para receber solicitações da rede e enviar respostas para ela.
num.partitions Número padrão de partições de log por tópico.
num.recovery.threads.per.data.dir O número de threads por diretório de dados a ser usado para recuperar logs na inicialização e para liberá-los no desligamento.
num.replica.fetchers O número de threads de busca usados para replicar mensagens de um agente de origem. Se você aumentar esse valor, poderá aumentar o nível de paralelismo de E/S no agente seguidor.
offsets.retention.minutes Depois que um grupo de consumidores perde todos os consumidores (isto é, torna-se vazio), seus deslocamentos são mantidos durante esse período de retenção antes de serem descartados. Para consumidores autônomos (ou seja, que usam atribuição manual), os deslocamentos expiram depois da última confirmação somada a esse período de retenção.
offsets.topic.replication.factor O fator de replicação do tópico de deslocamento. Defina esse valor mais alto para garantir a disponibilidade. A criação do tópico interno falha até que o tamanho do cluster atenda a esse requisito de fator de replicação.
replica.fetch.max.bytes O número de bytes de mensagens para tentar buscar para cada partição. Esse não é um máximo absoluto. Se o primeiro lote de registros na primeira partição não vazia da busca for maior que esse valor, o lote de registros será retornado para garantir o progresso. As propriedades message.max.bytes (configuração do agente) ou max.message.bytes (configuração do tópico) definem o tamanho máximo do lote de registros aceito pelo agente.
replica.fetch.response.max.bytes O número máximo de bytes esperado para toda a resposta de busca. Os registros são buscados em lotes e, se o primeiro lote de registros na primeira partição não vazia da busca for maior que esse valor, o lote de registros ainda será retornado para garantir o progresso. Esse não é um máximo absoluto. As propriedades message.max.bytes (configuração do agente) ou max.message.bytes (configuração do tópico) especificam o tamanho máximo do lote de registros aceito pelo agente.
replica.lag.time.max.ms Se um seguidor não enviou nenhuma solicitação de busca ou se não consumiu até o deslocamento final do log do líder por pelo menos esse número de milissegundos, o líder remove o seguidor do ISR.

MinValue: 10000

MaxValue = 30000

replica.selector.class O nome da classe totalmente qualificado que implementa. ReplicaSelector O agente usa esse valor para encontrar a réplica de leitura preferencial. Se estiver usando a versão 2.4.1 ou mais recente do Apache Kafka e quiser permitir que os clientes busquem da réplica mais próxima, defina essa propriedade como org.apache.kafka.common.replica.RackAwareReplicaSelector. Para obter mais informações, consulte Apache Kafka versão 2.4.1 (use 2.4.1.1 alternativamente).
replica.socket.receive.buffer.bytes O buffer de recebimento do soquete para solicitações de rede.
socket.receive.buffer.bytes O buffer SO_RCVBUF dos soquetes do servidor de soquetes. O valor mínimo que você pode definir para essa propriedade é -1. Se o valor for -1, o Amazon MSK usará o sistema operacional padrão.
socket.request.max.bytes O número máximo de bytes em uma solicitação de soquete.
socket.send.buffer.bytes O buffer SO_SNDBUF dos soquetes do servidor de soquetes. O valor mínimo que você pode definir para essa propriedade é -1. Se o valor for -1, o Amazon MSK usará o sistema operacional padrão.
transaction.max.timeout.ms Tempo limite máximo para transações. Se o tempo de transação solicitado de um cliente exceder esse valor, o corretor retornará um erro em InitProducerIdRequest. Isso impede que um cliente use um tempo limite muito grande e pode impedir que os consumidores leiam os tópicos incluídos na transação.
transaction.state.log.min.isr A configuração de min.insync.replicas substituída para o tópico de transação.
transaction.state.log.replication.factor O fator de replicação do tópico de transação. Defina essa propriedade com um valor maior para aumentar a disponibilidade. A criação do tópico interno falha até que o tamanho do cluster atenda a esse requisito de fator de replicação.
transactional.id.expiration.ms O tempo em milissegundos que o coordenador da transação deve aguardar para receber qualquer atualização do status da transação atual antes que o coordenador expire sua ID transacional. Essa configuração também influencia a expiração do ID do produtor porque faz com que o produtor IDs expire quando esse tempo decorre após a última gravação com o ID do produtor fornecido. O produtor IDs pode expirar mais cedo se a última gravação do ID do produtor for excluída devido às configurações de retenção do tópico. O valor mínimo para essa propriedade é de 1 milissegundo.
unclean.leader.election.enable Indica se as réplicas que não estão no conjunto ISR devem atuar como líderes em último recurso, mesmo que isso possa resultar em perda de dados.
zookeeper.connection.timeout.ms

ZooKeeper clusters de modos. Tempo máximo que o cliente espera para estabelecer uma conexão. ZooKeeper Se você não definir esse valor, o sistema usará o valor de zookeeper.session.timeout.ms.

MinValue = 6000

MaxValue (inclusive) = 18000

zookeeper.session.timeout.ms

ZooKeeper clusters de modos. O tempo limite da ZooKeeper sessão do Apache em milissegundos.

MinValue = 6000

MaxValue (inclusive) = 18000

Para saber como criar uma configuração personalizada do MSK, listar todas as configurações ou descrevê-las, consulte Operações de configuração do broker. Para criar um cluster do MSK com uma configuração personalizada do MSK ou para atualizar um cluster com uma nova configuração personalizada, consulte Principais recursos e conceitos do Amazon MSK.

Quando você atualiza o cluster existente do MSK com uma configuração personalizada do MSK, o Amazon MSK faz reinicializações contínuas quando necessário, empregando as práticas recomendadas para minimizar o tempo de inatividade do cliente. Por exemplo, depois que o Amazon MSK reinicia cada agente, o Amazon MSK tenta deixar o agente recuperar os dados que possam ter sido perdidos pelo agente durante a atualização da configuração antes de avançar para o próximo agente.

Configuração dinâmica do Amazon MSK

Além das propriedades de configuração fornecidas pelo Amazon MSK, você pode definir dinamicamente as propriedades de configuração em nível de cluster e de agente que não exigem uma reinicialização do agente. É possível definir dinamicamente algumas propriedades de configuração. Trata-se das propriedades que não estão marcadas como somente leitura na tabela em Configurações do agente na documentação do Apache Kafka. Para obter informações sobre a configuração dinâmica e comandos de exemplo, consulte Atualização das configurações do agente na documentação do Apache Kafka.

nota

É possível definir a propriedade advertised.listeners, mas não a propriedade listeners.

Configuração no nível de tópico do Amazon MSK

Você pode usar os comandos do Apache Kafka para definir ou modificar propriedades de configuração em nível de tópico para tópicos novos e existentes. Para obter mais informações sobre as propriedades de configuração no nível de tópico e exemplos sobre como defini-las, consulte Configurações no nível de tópico na documentação do Apache Kafka.