O dimensionamento preciso de recursos antes da criação do cluster evita o subdimensionamento, que causa degradação de desempenho sob carga, e o superdimensionamento, que gera custos desnecessários. Este tópico apresenta fórmulas de dimensionamento e especificações recomendadas para cada grupo de nós em um cluster E-MapReduce (EMR) com Kafka. Após a estimativa inicial, valide com kafka-producer-perf-test e kafka-consumer-perf-test. Em seguida, use o recurso de scale-out para ajustar as configurações conforme a evolução da carga de trabalho.
O dimensionamento de um cluster Kafka depende do pico de tráfego de mensagens, tamanho médio das mensagens, quantidade de partições, fatores de replicação e número de clientes. Colete métricas reais de negócio antes de aplicar as fórmulas abaixo.
Visão geral dos grupos de nós
A tabela a seguir resume as especificações recomendadas para cada grupo de nós. As seções subsequentes trazem orientações detalhadas de dimensionamento e fórmulas.
|
Grupo de nós |
Função |
Nós |
CPU |
Memória |
Disco do sistema |
Disco de dados |
|
Master |
ZooKeeper + componentes do ecossistema |
3 |
4 núcleos |
8 GiB |
80 GiB |
Disco em nuvem de 120 GiB |
|
Core |
Broker Kafka |
Consulte Número de brokers |
16 núcleos |
64 GiB |
80 GiB |
4 x discos em nuvem (tamanho variável) |
|
Task (opcional) |
Kafka Connect |
>2 |
>8 núcleos |
Conforme o conector |
— |
Disco em nuvem >80 GiB |
Grupo de nós Master (ZooKeeper)
O grupo de nós Master executa o ZooKeeper e os componentes do ecossistema Kafka: Kafka Manager, Schema Registry e REST Proxy.
Configure três nós Master com as seguintes especificações:
|
Recurso |
Valor recomendado |
|
Nós |
3 |
|
CPU |
4 núcleos |
|
Memória |
8 GiB |
|
Proporção CPU-memória |
1:2 |
|
Disco do sistema |
80 GiB |
|
Disco de dados |
Disco em nuvem de 120 GiB |
Grupo de nós Core (Broker Kafka)
Parâmetros de negócio
Reúna os seguintes parâmetros de negócio antes de calcular a quantidade de brokers e o tamanho do disco:
|
Parâmetro |
Descrição |
Padrão |
|
Fator de fan-out |
Quantidade de vezes que os nós downstream consomem dados de negócio, excluindo a replicação interna do cluster |
— |
|
Pico de tráfego de entrada |
Throughput máximo de dados de negócio (MB/s) |
— |
|
Tráfego médio de entrada |
Throughput médio de dados de negócio (MB/s) |
— |
|
Período de retenção de dados |
Tempo de retenção dos dados (dias) |
7 dias |
|
Fator de replicação de partição |
Número de réplicas por partição |
3 |
O pico de tráfego costuma ser uma ordem de grandeza superior ao tráfego médio. Defina adequadamente o valor de pico de tráfego de entrada e mantenha capacidade redundante suficiente para que o cluster sustente o serviço sob carga extrema.
Use esses parâmetros para derivar as seguintes métricas no nível do cluster:
|
Métrica |
Fórmula |
|
Pico total de tráfego de escrita |
|
|
Pico total de tráfego de leitura |
|
|
Capacidade total de armazenamento |
|
Especificações recomendadas para os nós
Defina os nós Core com as seguintes especificações:
|
Recurso |
Valor recomendado |
|
CPU |
16 núcleos |
|
Memória |
64 GiB |
|
Proporção CPU-memória |
1:4 |
|
Disco do sistema |
80 GiB |
|
Discos de dados |
4 x discos em nuvem (tamanho calculado abaixo) |
Tipo de disco. Use discos em nuvem como discos de dados para evitar a carga operacional e de manutenção (O&M) decorrente de falhas em discos físicos. Essa prática melhora a disponibilidade do serviço e reduz os custos de mão de obra de O&M.
Após selecionar o tipo e a quantidade de discos, calcule o throughput total de E/S do disco do nó. Selecione uma placa de interface de rede (NIC) com largura de banda igual ou superior ao throughput total de E/S do disco.
Número de brokers
Em condições ideais, o teto de throughput de um broker Kafka é limitado pelo throughput de E/S do disco ou pela largura de banda da NIC. Siga as etapas abaixo para calcular a quantidade necessária de brokers.
Etapa 1: Calcular o throughput do disco por nó.
Disk throughput per node = Throughput per disk x Number of data disks
Como referência, o throughput máximo de um SSD Empresarial PL1 (ESSD) é de 350 MB/s. Para discos locais, use metade do valor teórico como throughput efetivo, geralmente 50 MB/s.
Para valores detalhados de desempenho de disco, consulte Desempenho de armazenamento em bloco.
Etapa 2: Calcular o número de brokers com base no tráfego.
Com um fator de replicação de 3, use pelo menos 4 brokers para garantir a criação de uma partição com 3 réplicas mesmo se um broker ficar temporariamente indisponível. Mantenha 50% de capacidade redundante:
Number of brokers = Max(4, (Total peak read traffic + Total peak write traffic) / Disk throughput per node / 50%)
Etapa 3: Verificar os limites de réplicas de partição.
Se o número total de réplicas de partição for elevado, faça uma verificação cruzada com a fórmula baseada em partições:
Number of brokers = Max(4, Total number of partitions x Partition replication factor / 2,000)
Limites de réplicas de partição:
|
Limite |
Valor |
|
Máximo recomendado de réplicas por broker |
2.000 |
|
Máximo absoluto de réplicas por broker |
4.000 |
|
Máximo absoluto de réplicas por cluster |
200.000 |
Etapa 4: Calcular o tamanho do disco por broker.
Disk size per broker = Total storage capacity / Number of brokers / Number of data disks per node / 50%
Dimensionamento após a criação do cluster
A reserva de redundância de 50% incorporada às fórmulas de dimensionamento mantém o cluster abaixo do limiar de carga onde começa o throttling. Após criar o cluster, monitore a utilização de recursos e use o recurso de scale-out para ajustar as configurações com base no uso real.
Grupo de nós Task (Kafka Connect) (opcional)
O grupo de nós Task é opcional e executa o Kafka Connect. É possível redimensioná-lo a qualquer momento após a criação do cluster, conforme o uso real de recursos.
Defina os nós Task com as seguintes especificações:
|
Recurso |
Valor recomendado |
|
Nós |
>2 (para alta disponibilidade) |
|
CPU |
>8 núcleos por nó; aumente conforme a utilização de CPU do conector |
|
Memória |
Conforme o tipo de conector e o uso de memória |
|
Proporção CPU-memória |
1:2 ou 1:4 |
|
Disco de dados |
Disco em nuvem >80 GiB |