En este documento, se describe cómo estimar la capacidad que necesitas para un clúster de Managed Service para Apache Kafka y cómo ajustar el tamaño de un clúster existente.
Cuando creas un clúster de Managed Service para Apache Kafka, eliges los siguientes parámetros para el tamaño del clúster:
vCPUs: Es la cantidad de CPU virtuales en el clúster. La cantidad mínima de CPU virtuales es 3.
Memoria: Es la cantidad de memoria por CPU virtual. Debes aprovisionar entre 1 GiB y 8 GiB por CPU virtual.
Puedes actualizar estos valores después de crear el clúster.
Elige el tamaño inicial del clúster
Para elegir el tamaño inicial del clúster, comienza por estimar los siguientes valores, según tu carga de trabajo en particular.
- Capacidad de procesamiento de escritura: Es la tasa total a la que los productores envían datos al clúster, en MBps.
- Capacidad de procesamiento de lectura: Es la tasa total a la que los consumidores leen datos del clúster, en MBps.
Para estimar el tamaño de un clúster necesario para controlar esta capacidad de procesamiento, realiza los siguientes pasos:
Calcula el ancho de banda de escritura total, incluida la replicación.
Total write bandwidth = produce rate * replicasEste valor incluye el ancho de banda del cliente al agente líder y del líder a los agentes de réplica. La cantidad predeterminada de réplicas es 3.
Calcula el ancho de banda de lectura total, incluida la replicación.
Total read bandwidth = consume rate + produce rate * ( replicas - 1)Este valor incluye el ancho de banda para las operaciones de lectura del cliente (tasa de consumo), además del ancho de banda necesario para que las réplicas permanezcan sincronizadas. Las réplicas se sincronizan leyendo datos del líder de la partición. Se usa el término
(replicas - 1)porque el líder de la partición no lee de ninguna réplica.Calcula la tasa de datos equivalente a la escritura.
Como regla general, el ancho de banda de lectura es 4 veces más eficiente para procesar que el ancho de banda de escritura. Para tener en cuenta esta diferencia, calcula la tasa de datos equivalente a la escritura de la siguiente manera:
Write-equivalent rate = (total write bandwidth) + (total read bandwidth / 4)Determina el uso objetivo de la CPU virtual. Este valor representa el uso promedio de la CPU virtual como un porcentaje de la capacidad de la CPU virtual. El uso real puede aumentar o disminuir con el tiempo.
- Como línea de base, comienza con un objetivo de uso del 50%.
- Si conoces los patrones de tráfico esperados, establece el objetivo de uso igual a la proporción del ancho de banda promedio equivalente a la escritura con el ancho de banda máximo que debes admitir.
En general, aumentar el uso disminuye el costo del clúster, ya que reduce su tamaño, pero también es más riesgoso si el tráfico excede las estimaciones. El uso excesivo de la CPU virtual puede causar latencias y errores altos.
Calcula la cantidad de CPU virtuales.
vCPU count = ceiling (write-equivalent rate / 20 MBps / utilization)La capacidad estimada para una sola CPU virtual en una sola zona es de 20 MBps. Por lo tanto, si las CPU virtuales se ejecutaran con un uso del 100%, necesitarías
(write-equivalent rate / 20)CPU virtuales. Para obtener la cantidad real, divide ese valor por el uso objetivo y redondea hacia arriba.Además, enviar mensajes en lotes más pequeños que 10 KB reduce la capacidad de procesamiento por CPU, en relación con el parámetro de referencia aquí. En ese caso, ten en cuenta la capacidad de procesamiento reducida o considera enviar lotes más grandes.
Estima la memoria requerida. Recomendamos 4 GiB de RAM para cada CPU virtual.
Memory = vCPU count * 4 GiB
Realiza pruebas con tu carga de trabajo real para obtener el tamaño más preciso. Supervisa el uso de recursos del clúster y escala verticalmente si es necesario.
Ejemplo de cálculo de tamaño
Supongamos que una carga de trabajo tiene una tasa de escritura de 50 MBps y una tasa de lectura de 100 MBps, con 3 réplicas y un uso objetivo de la CPU virtual del 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
Agentes
Cuando creas un clúster, el sistema aprovisiona al menos un agente en cada una de las tres zonas. Los agentes se distribuyen de la manera más uniforme posible entre las zonas, y todos los agentes tienen la misma cantidad de CPU virtuales. La cantidad de agentes se puede calcular con la siguiente fórmula:
number of brokers = max(3, ceiling(vCPUs / 15))
Por ejemplo, un clúster con 75 CPU virtuales comienza con 5 agentes.
Si cambias la cantidad de CPU virtuales, se distribuyen entre los agentes existentes, hasta un máximo de 15 CPU virtuales por agente. Si aumentas el tamaño del clúster más allá de 15 CPU virtuales por agente, el sistema aprovisiona un agente nuevo. Una vez que se aprovisiona un agente nuevo, se puede reducir a 1 CPU virtual, pero no se puede borrar.
Límites de réplica de partición
Existen límites en los recuentos de réplicas de partición por clúster y por agente que son importantes tener en cuenta cuando se dimensiona el clúster.
El límite por clúster es de 100,000 réplicas de partición. Este es un límite estricto y es independiente de la cantidad de agentes en un clúster. Si tu carga de trabajo requiere más de 100,000 réplicas de partición, considera dividirla entre dos o más clústeres.
El límite por agente es de 4,000 réplicas de partición. Este no es un límite estricto. Si necesitas controlar más de esta cantidad de réplicas, considera aprovisionar más agentes. Puedes aumentar el recuento de agentes aumentando el tamaño de la CPU virtual del clúster según el tamaño máximo del agente. Una vez que tengas una cantidad suficiente de agentes para controlar tus particiones, puedes ajustar los tamaños de los agentes para adaptarse a la capacidad de procesamiento.
Actualiza el tamaño del clúster
Después de crear un clúster de Managed Service para Apache Kafka, puedes ajustar la cantidad de CPU virtuales y la memoria para satisfacer tus necesidades. Cuando actualizas un clúster existente, se aplican las siguientes reglas:
La proporción general de CPU virtuales a memoria del clúster siempre debe permanecer entre 1:1 y 1:8.
Si reduces la escala, debe haber al menos 1 CPU virtual y 1 GiB de memoria para cada agente existente. La cantidad de agentes nunca disminuye.
Si aumentas la escala y el cambio genera la adición de agentes nuevos, el promedio de CPU virtuales y memoria por agente no puede disminuir en más del 10% en comparación con los promedios antes de la actualización.
Por ejemplo, si intentas aumentar la escala de un clúster de 45 CPU virtuales (3 agentes) a 48 CPU virtuales (4 agentes), la operación falla. Esto se debe a que el promedio de CPU virtuales por agente disminuye de 15 a 12, lo que representa una reducción del 20% y supera el límite del 10%.
Si necesitas disminuir la cantidad de CPU en más del 10%, te recomendamos que reduzcas la cantidad en varias etapas. Después de cada actualización, supervisa el uso de recursos y vuelve a balancear las particiones si es necesario.
Sin embargo, si estás seguro de que tus agentes tendrán suficiente capacidad después de la actualización, puedes inhabilitar esta verificación. Para inhabilitar la verificación, establece la marca allow_broker_downscale_on_cluster_upscale en true en el comando gcloud managed-kafka clusters update. Esta marca indica que aceptas el posible riesgo de rendimiento.
Para actualizar un clúster, consulta Actualiza un clúster de Managed Service para Apache Kafka.
Ejemplos de operaciones de actualización
En los siguientes ejemplos, se comienza con un clúster que tiene 75 CPU virtuales, 130 GiB de RAM y 5 agentes.
Ejemplo de una operación de aumento de escala fallida
Aumenta la escala del clúster a 80 CPU virtuales y 140 GiB de RAM.
El servicio determina si se necesita un agente nuevo.
- ceiling (80 vCPUs / 15) = 6 brokers
El clúster crecerá de 5 a 6 agentes, por lo que se activará la verificación de seguridad del 10%.
Los promedios actuales por agente son los siguientes:
75 CPU virtuales / 5 agentes = 15 CPU virtuales por agente
130 GiB / 5 agentes = 26 GiB por agente
Con 6 agentes, los promedios nuevos son los siguientes:
80 CPU virtuales / 6 agentes = 13.33 CPU virtuales por agente, una reducción del 11.1%
140 GiB / 6 agentes = 23.33 GiB por agente, una reducción del 10.2%
La operación falla porque estos promedios superan el 10%.
Ejemplo de una operación de aumento de escala exitosa
Aumenta la escala del clúster a 85 CPU virtuales y 150 GiB de RAM.
El servicio determina si se necesita un agente nuevo.
- ceiling (85 vCPUs / 15) = 6 brokers
El clúster crecerá de 5 a 6 agentes, por lo que se activará la verificación de seguridad del 10%.
Los promedios actuales por agente son los siguientes:
75 CPU virtuales / 5 agentes = 15 CPU virtuales por agente
130 GiB / 5 agentes = 26 GiB por agente
Con 6 agentes, los promedios nuevos son los siguientes:
85 CPU virtuales / 6 agentes = 14.17 CPU virtuales por agente, una reducción del 5.5%
150 GiB / 6 agentes = 25 GiB por agente, una reducción del 3.8%
Esta operación se realiza correctamente porque la reducción en el promedio de CPU virtuales y memoria por agente está dentro del límite del 10%.
¿Qué sigue?
- Crea un clúster de Managed Service para Apache Kafka
- Supervisa un clúster de Managed Service para Apache Kafka
- Actualiza un clúster de Managed Service para Apache Kafka