Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Utilice LinkedIn el control de crucero para Apache Kafka con Amazon MSK
Puede utilizar el LinkedIn Cruise Control para reequilibrar el clúster de Amazon MSK, detectar y corregir anomalías y supervisar el estado y el estado del clúster.
nota
Si está activado el reequilibrio inteligente en los clústeres basados en Express recién creados, no podrá utilizar herramientas de terceros, como Cruise Control, para reequilibrar las particiones. Primero debes pausar el reequilibrio inteligente para usar la API de reasignación de particiones proporcionada por estas herramientas de terceros.
Descarga y compilación de Cruise Control
Cree una EC2 instancia de Amazon en la misma Amazon VPC que el clúster de Amazon MSK.
Instala Prometheus en la instancia de EC2 Amazon que creaste en el paso anterior. Anote la IP privada y el puerto. El número de puerto predeterminado es 9090. Para obtener información acerca de cómo configurar Prometheus para agregar métricas para su clúster, consulte Supervisión de un clúster de MSK aprovisionado con Prometheus.
-
Descarga Cruise Control
en la EC2 instancia de Amazon. (Si lo prefieres, puedes usar una EC2 instancia de Amazon independiente para Cruise Control). Si el clúster tiene una versión de Apache Kafka anterior a la 2.4.*, utilice la última versión 2.4.* de Cruise Control. Si el clúster tiene una versión de Apache Kafka anterior a la 2.4.*, utilice la última versión 2.0.* de Cruise Control. -
Descomprima el archivo de Cruise Control y, a continuación, vaya a la carpeta descomprimida.
-
Ejecute el siguiente comando para instalar git.
sudo yum -y install git -
Ejecute el siguiente comando para inicializar el repositorio local.
Your-Cruise-Control-FolderSustitúyelo por el nombre de la carpeta actual (la carpeta que obtuviste al descomprimir la descarga de Cruise Control).git init && git add . && git commit -m "Init local repo." && git tag -aYour-Cruise-Control-Folder-m "Init local version." -
Ejecute el comando siguiente para instalar y compilar el código fuente.
./gradlew jar copyDependantLibs
Configuración y ejecución de Cruise Control
-
Lleve a cabo las siguientes actualizaciones en el archivo
config/cruisecontrol.properties. Sustituya los servidores de arranque de ejemplo y la cadena bootstrap-brokers con los valores de su clúster. Para obtener estas cadenas para su clúster, puede ver los detalles del clúster en la consola. Como alternativa, puede usar las operaciones GetBootstrapBrokersy DescribeClusterAPI o sus equivalentes de CLI.# If using TLS encryption, use 9094; use 9092 if using plaintext bootstrap.servers=b-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094 # SSL properties, needed if cluster is using TLS encryption security.protocol=SSL ssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks # Use the Prometheus Metric Sampler metric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.prometheus.PrometheusMetricSampler # Prometheus Metric Sampler specific configuration prometheus.server.endpoint=1.2.3.4:9090 # Replace with your Prometheus IP and port # Change the capacity config file and specify its path; details below capacity.config.file=config/capacityCores.jsonEn el caso de los agentes Express, recomendamos no utilizar
DiskCapacityGoalen ninguno de los objetivos configurados en las configuraciones del analizador. -
Edite el
config/capacityCores.jsonarchivo para especificar el tamaño de disco, los núcleos de CPU y in/out los límites de red correctos. En el caso de los agentes Express, la entrada de capacidadDISKsolo es necesaria para configurar Cruise Control. Dado que Amazon MSK administra todo el almacenamiento de los agentes Express, debe establecer este valor en un número extremadamente alto, comoInteger.MAX_VALUE (2147483647). Para los corredores estándar, puede usar la operación DescribeClusterAPI (o la CLI describe-cluster) para obtener el tamaño del disco. Para conocer los núcleos de CPU y in/out los límites de la red, consulte Tipos de EC2 instancias de Amazon . -
Si lo desea, puede instalar la interfaz de usuario de Cruise Control. Para descargarla, vaya a Setting Up Cruise Control Frontend
. -
Ejecute el siguiente comando para iniciar Cruise Control. Considere usar una herramienta como
screenotmuxpara mantener abierta una sesión de larga duración.<path-to-your-CRUISE-CONTROL-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091 Usa el Cruise Control APIs o la interfaz de usuario para asegurarte de que Cruise Control tiene los datos de carga del clúster y de que hace sugerencias de reequilibrio. Podría llevarle varios minutos a obtener una ventana de métricas válida.
importante
Solo las versiones de Cruise Control 2.5.60 o posteriores son compatibles con agentes Express, ya que los agentes Express no exponen puntos de conexión de ZooKeeper.
Utilización de la plantilla de implementación automatizada de Cruise Control para Amazon MSK
También puede utilizar esta CloudFormation plantilla
Características clave:
Aprovisionamiento automatizado de una EC2 instancia de Amazon con Cruise Control y Prometheus preconfigurados.
Compatibilidad con el clúster aprovisionado de Amazon MSK.
Cruise Control no depende de Zookeeper.
Proporcione sus propios archivos de configuración almacenados en un bucket de Amazon S3 para personalizar fácilmente los destinos de Prometheus, los ajustes de capacidad de Cruise Control y otras configuraciones.
Guía de reequilibrio de la partición
Guía para la reasignación de particiones de Kafka
La reasignación de particiones en Kafka puede requerir un uso intensivo de recursos, ya que implica transferir grandes volúmenes de datos entre agentes, lo que puede provocar congestión de red y afectar las operaciones de los clientes. Las siguientes prácticas recomendadas ayudan a administrar la reasignación de particiones de forma eficaz mediante el ajuste de las tasas de limitación controlada, el aprovechamiento de los controles de simultaneidad y la comprensión de los tipos de reasignación, con el fin de minimizar la interrupción de las operaciones del clúster.
nota
Si tiene un clúster basado en Express recién creado, utilice el reequilibrio inteligente para la distribución automática de las particiones a medida que amplíe o reduzca los clústeres.
Administración de la simultaneidad en Cruise Control
Cruise Control proporciona parámetros de ajuste automático para controlar la simultaneidad de los movimientos de particiones y de liderazgo. Los siguientes parámetros ayudan a mantener una carga aceptable durante las reasignaciones:
Movimientos máximos de particiones simultáneos: defina
num.concurrent.partition.movements.per.brokerpara limitar la cantidad de movimientos de particiones entre agentes que se ejecutan de forma simultánea, lo que evita una utilización excesiva de la red.ejemplo Ejemplo
num.concurrent.partition.movements.per.broker = 5Esta configuración limita a cada agente a mover no más de 10 particiones en un momento dado, lo que permite equilibrar la carga entre los agentes.
Uso de la limitación controlada para controlar el ancho de banda
Parámetro de limitación controlada: al realizar una reasignación de particiones con
kafka-reassign-partitions.sh, utilice--throttle parameterpara establecer una tasa máxima de transferencia (en bytes por segundo) para el movimiento de datos entre agentes.ejemplo Ejemplo
--throttle 5000000Esto establece un ancho de banda máximo de 5 MB/s.
-
Equilibrio de la configuración de limitación controlada: la elección de una tasa de limitación controlada adecuada es fundamental:
Si se configura un valor demasiado bajo, la reasignación puede tardar considerablemente más.
Si se configura un valor demasiado alto, los clientes pueden experimentar aumentos de latencia.
Comience con una tasa de limitación controlada conservadora y ajústela en función de la supervisión del rendimiento del clúster. Pruebe la limitación controlada seleccionada antes de aplicarla en un entorno de producción para encontrar el equilibrio óptimo.
Prueba y validación en un entorno de preproducción
Antes de implementar reasignaciones en producción, realice pruebas de carga en un entorno de preproducción con configuraciones similares. Esto permite refinar con mayor precisión los parámetros y minimizar impactos inesperados en la producción activa.