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 específica.
- Capacidad de procesamiento de escritura: Es la tasa total a la que los productores envían datos al clúster, en MB/s.
- Capacidad de procesamiento de lectura: Es la tasa total a la que los consumidores leen datos del clúster, en MB/s.
Para estimar el tamaño de un clúster necesario para controlar este 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 broker líder y del líder a los brokers 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) y el 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 de 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. La utilización real puede aumentar o disminuir con el tiempo.
- Como referencia, comienza con un objetivo de utilización del 50%.
- Si conoces los patrones de tráfico esperados, establece el objetivo de utilización en el mismo valor que la proporción entre el ancho de banda promedio equivalente a escritura y el ancho de banda máximo que debes admitir.
En general, aumentar la utilización reduce el costo del clúster, ya que disminuye su tamaño, pero también es más riesgoso si el tráfico supera las estimaciones. El uso excesivo de CPU virtuales puede causar latencias altas y errores.
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 100% de utilización, 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 comparación con la 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 por cada CPU virtual.
Memory = vCPU count * 4 GiB
Realiza pruebas con tu carga de trabajo real para obtener el dimensionamiento más preciso. Supervisa el uso de recursos del clúster y aumenta la escala si es necesario.
Ejemplo de cálculo del tamaño
Supongamos que una carga de trabajo tiene una tasa de escritura de 50 MB/s y una tasa de lectura de 100 MB/s, con 3 réplicas y una utilización objetivo de 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 intermediarios se distribuyen de la manera más uniforme posible entre las zonas, y todos los intermediarios tienen la misma cantidad de CPU virtuales. La cantidad de intermediarios 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 intermediarios.
Si cambias la cantidad de CPU virtuales, estas se distribuirán entre los agentes existentes, hasta un máximo de 15 CPU virtuales por agente. Si aumentas el tamaño del clúster a más de 15 CPU virtuales por agente, el sistema aprovisionará un agente nuevo. Una vez que se aprovisiona un nuevo agente, se puede reducir su escala a 1 CPU virtual, pero no se puede borrar.
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 intermediarios nunca disminuye.
Si aumentas la escala y el cambio genera la incorporación de nuevos intermediarios, el promedio de CPU virtuales y memoria por intermediario no puede disminuir en más del 10% en comparación con los promedios anteriores a la actualización.
Por ejemplo, si intentas aumentar la escala de un clúster de 45 CPU virtuales (3 intermediarios) a 48 CPU virtuales (4 intermediarios), la operación fallará. 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%, que supera el límite del 10%.
Si necesitas reducir el recuento de CPU en más de un 10%, te recomendamos que lo hagas en varias etapas. Después de cada actualización, supervisa el uso de recursos y reequilibra las particiones si es necesario.
Sin embargo, si tienes la certeza de que tus intermediarios 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.
Ejemplo 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 intermediarios.
Ejemplo de una operación de aumento de resolución fallida
Aumenta la capacidad del clúster a 80 CPU virtuales y 140 GiB de RAM.
El servicio determina si se necesita un nuevo agente.
- ceil (80 CPU virtuales / 15) = 6 intermediarios
El clúster crecería de 5 a 6 intermediarios, por lo que se activaría la verificación de seguridad del 10%.
Los promedios actuales por corredor son los siguientes:
75 CPUs virtuales / 5 intermediarios = 15 CPUs virtuales por intermediario
130 GiB / 5 agentes = 26 GiB por agente
Con 6 corredores, los nuevos promedios son los siguientes:
80 vCPUs / 6 intermediarios = 13.33 vCPUs por intermediario, 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 resolución exitosa
Aumenta la capacidad del clúster a 85 CPU virtuales y 150 GiB de RAM.
El servicio determina si se necesita un nuevo agente.
- techo (85 CPU virtuales / 15) = 6 intermediarios
El clúster crecería de 5 a 6 intermediarios, por lo que se activaría la verificación de seguridad del 10%.
Los promedios actuales por corredor son los siguientes:
75 CPUs virtuales / 5 intermediarios = 15 CPUs virtuales por intermediario
130 GiB / 5 agentes = 26 GiB por agente
Con 6 corredores, los nuevos promedios son los siguientes:
85 CPU virtuales / 6 intermediarios = 14.17 CPU virtuales por intermediario, 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 la cantidad 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