Régulateur LinkedIn de vitesse d'utilisation pour Apache Kafka avec Amazon MSK - Amazon Managed Streaming for Apache Kafka

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
  1. Créez une EC2 instance Amazon dans le même Amazon VPC que le MSK cluster Amazon.

  2. 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.

  3. 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.

  4. Décompressez le fichier Cruise Control, puis accédez au dossier décompressé.

  5. Exécutez la commande suivante pour installer git.

    sudo yum -y install git
  6. Exécutez la commande suivante pour initialiser le référentiel local. Your-Cruise-Control-FolderRemplacez-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."
  7. Exécutez la commande suivante pour créer le code source.

    ./gradlew jar copyDependantLibs
Pour configurer et exécuter Cruise Control
  1. 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.

  2. 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ée DISK 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.

    Standard broker config/capacityCores.json
    { "brokerCapacities": [ { "brokerId": "-1", "capacity": { "DISK": "10000", "CPU": { "num.cores": "2" }, "NW_IN": "5000000", "NW_OUT": "5000000" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ] }
    Express broker config/capacityCores.json
    { "brokerCapacities":[ { "brokerId": "-1", "capacity": { "DISK": "2147483647", "CPU": {"num.cores": "16"}, "NW_IN": "1073741824", "NW_OUT": "1073741824" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ] }
  3. Vous pouvez éventuellement installer l'interface utilisateur de Cruise Control. Pour le télécharger, rendez-vous sur Configuration du frontend de Cruise Control.

  4. Exécutez la commande suivante pour démarrer Cruise Control. Envisagez d'utiliser un outil tel que screen ou tmux pour maintenir une session de longue durée ouverte.

    <path-to-your-kafka-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
  5. 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 pour déployer facilement Cruise Control et Prometheus afin de mieux comprendre les performances de votre cluster MSK Amazon et d'optimiser l'utilisation des ressources.

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 aveckafka-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.