Este documento descreve como estimar a capacidade necessária para um cluster do Serviço gerenciado para Apache Kafka e como ajustar o tamanho de um cluster atual.
Ao criar um cluster do Serviço Gerenciado para Apache Kafka, você escolhe os seguintes parâmetros para o tamanho do cluster:
vCPUs: o número de vCPUs no cluster. O número mínimo de vCPUs é 3.
Memória: a quantidade de memória por vCPU. É necessário provisionar entre 1 GiB e 8 GiB por vCPU.
É possível atualizar esses valores depois que o cluster for criado.
Escolher o tamanho inicial do cluster
Para escolher o tamanho inicial do cluster, comece estimando os seguintes valores com base na sua carga de trabalho específica.
- Capacidade de processamento de gravação: a taxa total em que os produtores enviam dados para o cluster, em MBps.
- Capacidade de leitura: a taxa total em que os consumidores leem dados do cluster, em MBps.
Para estimar o tamanho de um cluster necessário para processar essa taxa de transferência, siga estas etapas:
Calcule a largura de banda total de gravação, incluindo a replicação.
Total write bandwidth = produce rate * replicasEsse valor inclui a largura de banda do cliente para o broker líder e do líder para os brokers de réplica. O número padrão de réplicas é 3.
Calcule a largura de banda total de leitura, incluindo a replicação.
Total read bandwidth = consume rate + produce rate * ( replicas - 1)Esse valor inclui a largura de banda para as operações de leitura do cliente (taxa de consumo) e a largura de banda necessária para que as réplicas permaneçam sincronizadas. As réplicas sincronizam lendo dados do líder da partição. O termo
(replicas - 1)é usado porque o líder da partição não lê de nenhuma réplica.Calcule a taxa de dados equivalente à gravação.
Como regra geral, a largura de banda de leitura é quatro vezes mais eficiente para processar do que a de gravação. Para considerar essa diferença, calcule a taxa de dados equivalente à gravação da seguinte forma:
Write-equivalent rate = (total write bandwidth) + (total read bandwidth / 4)Determine a meta de utilização da vCPU. Esse valor representa o uso médio de vCPU como uma porcentagem da capacidade de vCPU. A utilização real pode aumentar ou diminuir com o tempo.
- Como uma linha de base, comece com uma meta de utilização de 50%.
- Se você conhece os padrões de tráfego esperados, defina a meta de utilização igual à proporção entre a largura de banda média equivalente de gravação e a largura de banda máxima que você precisa acomodar.
Em geral, aumentar a utilização reduz o custo do cluster diminuindo o tamanho dele, mas também é mais arriscado se o tráfego exceder as estimativas. O uso excessivo de vCPU pode causar latências e erros altos.
Calcule o número de vCPUs.
vCPU count = ceiling (write-equivalent rate / 20 MBps / utilization)A capacidade estimada para uma única vCPU em uma única zona é de 20 MBps. Portanto, se as vCPUs fossem executadas com 100% de utilização, você precisaria de
(write-equivalent rate / 20)vCPUs. Para saber o número real, divida esse valor pela utilização desejada e arredonde para cima.Além disso, o envio de mensagens em lotes menores que 10 KB reduz a taxa de transferência por CPU em relação ao comparativo de mercado aqui. Nesse caso, considere a capacidade de capacidade de processamento reduzida ou envie lotes maiores.
Estime a memória necessária. Recomendamos 4 GiB de RAM para cada vCPU.
Memory = vCPU count * 4 GiB
Teste com sua carga de trabalho real para ter o dimensionamento mais preciso. Monitore o uso de recursos do cluster e faça escalonar verticalmente, se necessário.
Exemplo de cálculo de tamanho
Suponha que uma carga de trabalho tenha uma taxa de gravação de 50 MBps e uma taxa de leitura de 100 MBps, com três réplicas e uma utilização de vCPU de 50%.
Total write bandwidth = 50 MBps * 3 replicas = 150 MBpsTotal read traffic = 100 MBps + 50 MBps * (3 - 1) = 200 MBpsWrite-equivalent rate = 150 MBps + (200 MBps / 4) = 200 MBpsTarget utilization = 0.5Number of vCPUs = ceiling (200 MBps / 20 MBps / 0.5) = 20 vCPUsMemory = 20 vCPUs * 4 GiB = 80 GiB
Limites de réplicas de partição
Há limites no número de réplicas de partição por cluster e por broker que são importantes considerar ao dimensionar o cluster.
O limite por cluster é de 100.000 réplicas de partição. Esse é um limite rígido e independente do número de brokers em um cluster. Se a carga de trabalho exigir mais de 100.000 réplicas de partição, divida-a entre dois ou mais clusters.
O limite por agente é de 4.000 réplicas de partição. Esse não é um limite rígido. Se você precisar processar mais do que esse número de réplicas, considere aumentar o tamanho do cluster para provisionar mais brokers. Para informações sobre como o serviço determina o número de corretores, consulte Provisionamento de corretores.
Quando você tiver um número suficiente de brokers para processar as partições, poderá escalonar os tamanhos dos brokers para acomodar a capacidade.
Atualizar o tamanho do cluster
Depois de criar um cluster do Serviço gerenciado para Apache Kafka, é possível ajustar a contagem de vCPUs e a memória para atender às suas necessidades. Para mais informações, consulte Atualizar um cluster do Serviço Gerenciado para Apache Kafka.
Ao atualizar um cluster, as seguintes regras se aplicam:
A proporção geral de vCPU para memória do cluster precisa sempre permanecer entre 1:1 e 1:8.
É preciso ter pelo menos uma vCPU e 1 GiB de memória para cada broker. O número de brokers nunca diminui.
Se o cluster tiver uma configuração de disco personalizada, a atualização precisará atender aos requisitos de configuração de disco para armazenamento local.
Se você fizer um upgrade, a vCPU e a memória médias por broker não poderão diminuir mais de 10% em comparação com as médias antes da atualização. Por exemplo, se você tentar fazer upgrade de um cluster de 45 vCPUs (3 brokers) para 48 vCPUs (4 brokers), a vCPU média por broker vai diminuir de 15 para 12, o que é uma redução de 20%, excedendo o limite de 10%.
Se você precisar diminuir a contagem de vCPUs em mais de 10%, recomendamos reduzir em várias etapas. Após cada atualização, monitore a utilização de recursos e reequilibre as partições, se necessário.
No entanto, se você tiver certeza de que seus brokers terão capacidade suficiente após a atualização, desative essa verificação executando o comando
gcloud managed-kafka clusters updatecom a flagallow_broker_downscale_on_cluster_upscale=true. Essa flag indica que você aceita o possível risco de performance.
Exemplos de operações de atualização
Os exemplos a seguir começam com um cluster que tem 75 vCPUs, 130 GiB de RAM e 5 brokers.
Exemplo de uma operação de ampliação com falha
Aumente a escala do cluster para 80 vCPUs e 140 GiB de RAM.
O serviço determina se um novo corretor é necessário.
- teto (80 vCPUs / 15) = 6 agentes
O cluster cresceria de 5 para 6 brokers, então a verificação de segurança de 10% seria acionada.
As médias atuais por corretor são:
75 vCPUs / 5 agentes = 15 vCPUs por agente
130 GiB / 5 brokers = 26 GiB por broker
Com seis corretoras, as novas médias são:
80 vCPUs / 6 agentes = 13,33 vCPUs por agente, uma redução de 11,1%
140 GiB / 6 brokers = 23,33 GiB por broker, uma redução de 10,2%
A operação falha porque essas médias excedem 10%.
Exemplo de uma operação de ampliação bem-sucedida
Aumente a escala do cluster para 85 vCPUs e 150 GiB de RAM.
O serviço determina se um novo corretor é necessário.
- teto (85 vCPUs / 15) = 6 agentes
O cluster cresceria de 5 para 6 brokers, então a verificação de segurança de 10% seria acionada.
As médias atuais por corretor são:
75 vCPUs / 5 agentes = 15 vCPUs por agente
130 GiB / 5 brokers = 26 GiB por broker
Com seis corretoras, as novas médias são:
85 vCPUs / 6 agentes = 14,17 vCPUs por agente, uma redução de 5,5%
150 GiB / 6 brokers = 25 GiB por broker, uma redução de 3,8%
Essa operação é bem-sucedida porque a redução na vCPU média e na memória por broker está dentro do limite de 10%.
Estimar o tamanho do disco necessário
Por padrão, o Serviço Gerenciado para Apache Kafka aloca 100 GiB por vCPU para cada broker. A alocação padrão oferece armazenamento local suficiente para a maioria das cargas de trabalho, mas é possível configurar o tamanho do disco do agente para seus requisitos específicos. Nesta seção, descrevemos como estimar a quantidade de capacidade de disco necessária.
Quando um broker recebe uma mensagem, ele a grava em um arquivo de segmento local.
Quando o arquivo de segmento atinge um tamanho ou idade máxima, ele é fechado (ou "rolado") e movido para o armazenamento remoto. O tamanho máximo de um arquivo de segmento é especificado pela configuração log.roll.bytes, e a idade máxima é especificada pela configuração log.segment.ms.
Quando um arquivo de segmento é substituído, o broker abre um novo arquivo de segmento. O segmento remanejado permanece no armazenamento local enquanto o broker o copia para o armazenamento remoto. Portanto, cada partição precisa de espaço suficiente para armazenar um arquivo de segmento acumulado, além de espaço para um novo arquivo de segmento enquanto o acumulado é movido para o armazenamento remoto.
Por padrão, o tamanho máximo de um arquivo de segmento é de 230 MiB. Para clusters com utilização moderada, é possível presumir que 250 MiB são necessários por partição para oferecer espaço de buffer adicional enquanto um segmento rolado está sendo movido. Usando essa proposição, o tamanho mínimo do disco por broker é:
250 MiB * partition count * replication factor / broker count
No entanto, o tamanho necessário depende de fatores como o tamanho máximo do arquivo de segmento, a carga no cluster, a taxa em que novos dados são gravados e a latência das gravações no armazenamento de longo prazo.
É fundamental manter alguma capacidade de disco não utilizada em cada broker. O comportamento de um broker sem capacidade de disco não é previsível e pode resultar em perda de dados e instabilidade do cluster.
Monitore o uso do disco
(disk/used_bytes)
em relação ao tamanho total disponível
(disk/limit).
Se o uso do disco for superior a 80% do tamanho total disponível, configure um tamanho
maior. Para mais informações, consulte
Monitorar a capacidade do cluster.
A seguir
- Criar um cluster do Serviço Gerenciado para Apache Kafka
- Monitorar um cluster do Serviço Gerenciado para Apache Kafka
- Atualizar um cluster do Serviço Gerenciado para Apache Kafka
- Configurar o tamanho do disco do broker