Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Régulateur LinkedIn de vitesse d'utilisation pour Apache Kafka avec Amazon MSK
Vous pouvez utiliser LinkedIn le régulateur de vitesse pour rééquilibrer votre MSK cluster Amazon, détecter et corriger les anomalies, et surveiller l'état et l'état de santé du cluster.
Pour télécharger et créer Cruise Control
Créez une EC2 instance Amazon dans le même Amazon VPC que le MSK cluster Amazon.
Installez Prometheus sur l'instance EC2 Amazon que vous avez créée à l'étape précédente. Notez l'adresse IP privée et le port. Le numéro de port par défaut est 9090. Pour de plus amples informations sur la configuration de Prometheus pour agréger les métriques de votre cluster, consultez Surveillez un cluster MSK provisionné avec Prometheus.
-
Téléchargez Cruise Control
sur l'EC2instance Amazon. (Vous pouvez également utiliser une EC2 instance Amazon distincte pour le régulateur de vitesse si vous préférez.) Pour un cluster doté de la version 2.4.* d'Apache Kafka, utilisez la dernière version 2.4.* de Cruise Control. Si votre cluster possède une version d'Apache Kafka antérieure à la version 2.4.*, utilisez la dernière version 2.0.* de Cruise Control. -
Décompressez le fichier Cruise Control, puis accédez au dossier décompressé.
-
Exécutez la commande suivante pour installer git.
sudo yum -y install git
-
Exécutez la commande suivante pour initialiser le référentiel local.
Your-Cruise-Control-Folder
Remplacez-le par le nom de votre dossier actuel (le dossier que vous avez obtenu lorsque vous avez décompressé le téléchargement du Cruise Control).git init && git add . && git commit -m "Init local repo." && git tag -a
Your-Cruise-Control-Folder
-m "Init local version." -
Exécutez la commande suivante pour créer le code source.
./gradlew jar copyDependantLibs
Pour configurer et exécuter Cruise Control
-
Effectuez les mises à jour suivantes du fichier
config/cruisecontrol.properties
. Remplacez les exemples de serveurs bootstrap et de chaîne bootstrap-brokers par les valeurs de votre cluster. Pour obtenir ces chaînes pour votre cluster, vous pouvez consulter les détails du cluster dans la console. Vous pouvez également utiliser les DescribeClusterAPIopérations GetBootstrapBrokerset ou leurs CLI équivalents.# 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.json
Pour les courtiers express, nous vous recommandons de n'utiliser le
DiskCapacityGoal
dans aucun des objectifs configurés dans les configurations de votre analyseur. -
Modifiez le
config/capacityCores.json
fichier pour spécifier la bonne taille de disque, le nombre de CPU cœurs et les limites d'entrée/sortie du réseau. Pour les courtiers Express, l'entréeDISK
de capacité n'est nécessaire que pour configurer le régulateur de vitesse. Comme il MSK gère tout le stockage pour les courtiers Express, vous devez définir cette valeur sur un nombre extrêmement élevé, tel queInteger.MAX_VALUE (2147483647)
. Pour les courtiers standard, vous pouvez utiliser l'DescribeClusterAPIopération (ou describe-clusterCLI) pour obtenir la taille du disque. Pour les CPU cœurs et les limites d'entrée/sortie du réseau, consultez Amazon EC2 Instance Types . -
Vous pouvez éventuellement installer l'interface utilisateur de Cruise Control. Pour le télécharger, rendez-vous sur Configuration du frontend de Cruise Control
. -
Exécutez la commande suivante pour démarrer Cruise Control. Envisagez d'utiliser un outil tel que
screen
outmux
pour maintenir une session de longue durée ouverte.<path-to-your-kafka-installation>
/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091 Utilisez le régulateur de vitesse APIs ou l'interface utilisateur pour vous assurer que le régulateur de vitesse dispose des données de charge du cluster et qu'il propose des suggestions de rééquilibrage. L'obtention d'une fenêtre de métriques valide peut durer plusieurs minutes.
Important
Seules les versions 2.5.60 et supérieures de Cruise Control sont compatibles avec les courtiers Express, car les courtiers Express n'exposent pas les points de terminaison Zookeeper.
Utiliser un modèle de déploiement automatique de Cruise Control pour Amazon MSK
Vous pouvez également utiliser ce CloudFormation modèle
Fonctions principales :
Provisionnement automatisé d'une EC2 instance Amazon avec Cruise Control et Prometheus préconfigurés.
Support pour le cluster MSK provisionné par Amazon.
Authentification flexible avec PlainText et IAM.
Aucune dépendance à Zookeeper pour le régulateur de vitesse.
Personnalisez facilement les cibles Prometheus, les paramètres de capacité du régulateur de vitesse et les autres configurations en fournissant vos propres fichiers de configuration stockés dans un compartiment Amazon S3.
Directive de rééquilibrage des partitions
Directives pour la réaffectation des partitions Kafka
La réattribution de partitions dans Kafka peut être gourmande en ressources, car elle implique le transfert de données importantes entre courtiers, ce qui peut entraîner une congestion du réseau et affecter les opérations des clients. Les meilleures pratiques suivantes vous aident à gérer efficacement la réaffectation des partitions en ajustant les taux d'accélération, en tirant parti des contrôles de simultanéité et en comprenant les types de réaffectation afin de minimiser les perturbations des opérations du cluster.
Gestion de la simultanéité dans le régulateur de vitesse
Le régulateur de vitesse fournit des paramètres de réglage automatique pour contrôler la simultanéité des mouvements de partition et de direction. Les paramètres suivants permettent de maintenir une charge acceptable lors des réaffectations :
Mouvements de partition simultanés maximaux : définissez le
num.concurrent.partition.movements.per.broker
pour plafonner les mouvements de partition simultanés entre courtiers, en évitant une utilisation excessive du réseau.Exemple
num.concurrent.partition.movements.per.broker = 5
Ce paramètre limite chaque courtier à ne pas déplacer plus de 10 partitions à la fois, ce qui permet d'équilibrer la charge entre les courtiers.
Utiliser la régulation pour contrôler la bande passante
Paramètre d'accélération : lorsque vous effectuez une réaffectation de partition avec
kafka-reassign-partitions.sh
, utilisez le--throttle parameter
pour définir un taux de transfert maximal (en octets par seconde) pour le mouvement des données entre les courtiers.Exemple
--throttle 5000000
Cela définit une bande passante maximale de 5 Mo/s.
-
Équilibrer les réglages de l'accélérateur : il est crucial de choisir un taux d'accélérateur approprié :
Si ce paramètre est trop bas, la réaffectation peut prendre beaucoup plus de temps.
Si cette valeur est trop élevée, les clients peuvent connaître une augmentation de la latence.
Commencez par un taux d'accélération prudent et ajustez-le en fonction de la surveillance des performances du cluster. Testez l'accélérateur que vous avez choisi avant de l'appliquer à un environnement de production afin de trouver l'équilibre optimal.
Tester et valider dans un environnement intermédiaire
Avant de mettre en œuvre des réaffectations en production, effectuez des tests de charge dans un environnement intermédiaire avec des configurations similaires. Cela vous permet d'affiner les paramètres et de minimiser les impacts inattendus lors de la production en direct.