

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
<a name="cruise-control"></a>

Vous pouvez utiliser LinkedIn le régulateur de vitesse pour rééquilibrer votre cluster Amazon MSK, détecter et corriger les anomalies, et surveiller l'état et l'état de santé du cluster.

**Note**  
Si le [rééquilibrage intelligent](intelligent-rebalancing.md) est activé pour vos clusters basés sur Express récemment créés, vous ne pourrez pas utiliser d'outils tiers, tels que le régulateur de vitesse, pour le rééquilibrage des partitions. Vous devez d'abord suspendre le rééquilibrage intelligent pour utiliser l'API de réattribution de partition fournie par ces outils tiers.

**Pour télécharger et créer Cruise Control**

1. Créez une instance Amazon EC2 dans le même Amazon VPC que le cluster Amazon MSK.

1. Installez Prometheus sur l'instance Amazon EC2 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 provisionné MSK avec Prometheus](open-monitoring.md).

1. Téléchargez [Cruise Control](https://github.com/linkedin/cruise-control/releases) sur l'instance Amazon EC2. (Vous pouvez également utiliser une instance Amazon EC2 distincte pour Cruise Control si vous préférez.) Pour un cluster doté de la version 2.4.\$1 d'Apache Kafka, utilisez la dernière version 2.4.\$1 de Cruise Control. Si votre cluster possède une version d'Apache Kafka antérieure à la version 2.4.\$1, utilisez la dernière version 2.0.\$1 de Cruise Control.

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

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

   ```
   sudo yum -y install git
   ```

1. 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."
   ```

1. 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 opérations [GetBootstrapBrokers](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-bootstrap-brokers.html#GetBootstrapBrokers)et [DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API ou leurs équivalents 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.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](https://github.com/linkedin/cruise-control/wiki/Configurations#analyzer-configurations).

1. Modifiez le `config/capacityCores.json` fichier pour spécifier la bonne taille de disque, le nombre de cœurs de processeur et les in/out limites 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 MSK gère tout le stockage pour les courtiers Express, vous devez définir cette valeur sur un nombre extrêmement élevé, tel que`Integer.MAX_VALUE (2147483647)`. Pour les courtiers standard, vous pouvez utiliser l'opération [DescribeCluster](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)API (ou la [CLI describe-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster.html)) pour obtenir la taille du disque. Pour connaître les cœurs de processeur et in/out les limites du réseau, consultez la section Types d'[instances Amazon EC2](https://aws.amazon.com/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."
       }
     ]
   }
   ```

------

1. Vous pouvez éventuellement installer l'interface utilisateur de Cruise Control. Pour le télécharger, rendez-vous sur [Configuration du frontend de Cruise Control](https://github.com/linkedin/cruise-control-ui/wiki/Single-Kafka-Cluster#setting-up-cruise-control-frontend).

1. 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-CRUISE-CONTROL-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
   ```

1. 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
<a name="cruise-control-cfn-template"></a>

Vous pouvez également utiliser ce [CloudFormation modèle](https://github.com/aws-samples/cruise-control-for-msk) pour déployer facilement Cruise Control et Prometheus afin de mieux comprendre les performances de votre cluster Amazon MSK et d'optimiser l'utilisation des ressources.

**Fonctions principales :**
+ Provisionnement automatisé d'une instance Amazon EC2 avec Cruise Control et Prometheus préconfigurés.
+ Support pour le cluster provisionné Amazon MSK.
+ Authentification flexible avec [PlainText IAM](kafka_apis_iam.md).
+ 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
<a name="cruise-control-partition-rebalancing"></a>

### Directives pour la réaffectation des partitions Kafka
<a name="cruise-control-partition-reassignment"></a>

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.

**Note**  
Si vous avez récemment créé un cluster basé sur Express, utilisez le [rééquilibrage intelligent](intelligent-rebalancing.md) pour la distribution automatique des partitions lorsque vous augmentez ou diminuez vos clusters.

#### Gestion de la simultanéité dans le régulateur de vitesse
<a name="cruise-control-managing-concurrency"></a>

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.  
**Example 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
<a name="cruise-control-control-bandwidth"></a>
+ **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.  
**Example 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
<a name="cruise-control-partition-rebalancing-test"></a>

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.