Tous les produits
Search
Centre de documentation

E-MapReduce:Limiter le trafic de maintenance côté serveur Kafka

Dernière mise à jour :Aug 09, 2026

La réaffectation des partitions, la migration des réplicas au sein d'un broker et la récupération d'un broker génèrent toutes des E/S de réplication susceptibles d'évincer le trafic normal des producteurs et des consommateurs. Appliquez une limitation pour plafonner ces E/S de maintenance afin que votre trafic métier ne soit pas affecté.

Ce document s'applique à E-MapReduce (EMR) Kafka 2.4.1.

Paramètres de limitation

Quatre paramètres contrôlent la limitation de la réplication. Deux sont définis au niveau du topic pour sélectionner les réplicas à limiter ; deux sont définis au niveau du broker pour plafonner le débit.

Paramètre Portée Description
leader.replication.throttled.replicas Topic Réplicas leaders dont le trafic de maintenance est limité. Format : [PartitionId]:[BrokerId],[PartitionId]:[BrokerId],... ou * pour tous les réplicas leaders du topic.
follower.replication.throttled.replicas Topic Réplicas followers dont le trafic de maintenance est limité. Même format que ci-dessus.
leader.replication.throttled.rate Broker Plafond de débit en lecture pour les réplicas leaders sur le broker (octets par seconde).
follower.replication.throttled.rate Broker Plafond de débit en écriture pour les réplicas followers sur le broker (octets par seconde).

Notes d'utilisation

  • Déterminez s'il convient de limiter le trafic de maintenance en fonction de la composition du trafic, des scénarios métier et des scénarios de maintenance de Kafka.

  • Basez le seuil de limitation sur le volume réel de votre trafic métier, votre tolérance à la latence, la possibilité d'une brève interruption du service Kafka, ainsi que sur la bande passante E/S de vos disques et de votre réseau.

  • Un seuil trop bas peut bloquer entièrement l'opération de maintenance. À l'inverse, une valeur de seuil trop élevée risque de provoquer des problèmes tels qu'une compétition pour les E/S ou une saturation de la bande passante, ce qui pourrait affecter le trafic métier normal.

  • Planifiez les opérations de maintenance pendant les heures creuses dans la mesure du possible.

Interroger la configuration actuelle de limitation

Utilisez kafka-configs.sh pour inspecter les paramètres de limitation sur n'importe quel broker ou topic.

Interrogez un broker :

kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name <broker-id> --describe

Interrogez un topic :

kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name <topic-name> --describe

Limiter le trafic lors de la réaffectation des partitions

kafka-reassign-partitions.sh applique directement la limitation via l'indicateur --throttle. Une fois la réaffectation terminée, exécutez --verify pour supprimer les paramètres de limitation des topics et des brokers concernés.

Important
  • La limitation s'applique uniquement au trafic de réaffectation, et non aux opérations normales de récupération des réplicas.

  • Pour ajuster la limitation pendant l'exécution d'une réaffectation, relancez --execute avec la nouvelle valeur --throttle.

  • Si la réaffectation a déjà commencé et que vous n'avez pas utilisé --throttle, configurez leader.replication.throttled.replicas, follower.replication.throttled.replicas, leader.replication.throttled.rate et follower.replication.throttled.rate directement avec kafka-configs.sh.

Procédure :

  1. Connectez-vous au nœud maître de votre cluster Kafka via SSH. Pour plus de détails, consultez Se connecter à un cluster.

  2. Créez un topic de test.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Vérifiez les détails du topic :

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Simulez l'écriture de données pour générer du trafic en arrière-plan.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Créez un plan de réaffectation des partitions. Créez un fichier nommé reassign.json contenant le contenu suivant :

    {"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","any","any"]}]}
  5. Exécutez la réaffectation avec une limitation. Dans cet exemple, la vitesse d'écriture simulée est de 10 Mbit/s ; la limitation est définie à 30 Mbit/s.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --throttle 30000000 --execute

    Pour modifier la limitation pendant l'exécution de la réaffectation, relancez la commande avec la nouvelle valeur :

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --throttle <new-rate-in-bytes> --execute
  6. (Facultatif) Vérifiez que les paramètres de limitation sont appliqués. Vérifiez le broker 2 :

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --entity-name 2 --describe

    Vérifiez le topic :

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --entity-name test-throttled --describe
  7. Vérifiez la réaffectation et supprimez la limitation.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verify

    Une fois la tâche terminée, exécutez à nouveau la commande précédente pour supprimer les paramètres de la fonctionnalité de limitation.

Limiter le trafic lors du déplacement des réplicas entre répertoires

Utilisez kafka-reassign-partitions.sh avec --replica-alter-log-dirs-throttle pour limiter les E/S intra-broker lors de la migration des répertoires de réplicas. La limitation se reflète dans le paramètre au niveau du broker replica.alter.log.dirs.io.max.bytes.per.second.

Procédure :

  1. Connectez-vous au nœud maître de votre cluster Kafka via SSH. Pour plus de détails, consultez Se connecter à un cluster.

  2. Créez un topic de test.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Vérifiez les détails du topic :

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Simulez l'écriture de données.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Créez le plan de réaffectation avec le répertoire cible. Créez un fichier nommé reassign.json contenant le contenu suivant :

    {"version":1,"partitions":[{"topic":"test-throttled","partition":0,"replicas":[2,0,3],"log_dirs":["any","/mnt/disk1/kafka/log","any"]}]}
  5. Exécutez le déplacement des réplicas avec une limitation.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --replica-alter-log-dirs-throttle 30000000 --execute
  6. Vérifiez que le paramètre de limitation est appliqué sur le broker.

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --describe --entity-name 0
  7. Vérifiez que le déplacement est terminé et supprimez la limitation.

    Remarque

    Exécutez à nouveau

    --verify

    une fois la tâche terminée pour supprimer les paramètres de limitation.

    kafka-reassign-partitions.sh --bootstrap-server core-1-1:9092 --reassignment-json-file reassign.json --verify

Limiter le trafic lors de la récupération d'un broker

Après le redémarrage d'un broker, celui-ci resynchronise les données des réplicas depuis les réplicas leaders. Dans des scénarios tels que la migration de broker ou la réparation de disque, ce trafic de synchronisation peut être substantiel. Configurez la limitation avant d'arrêter le broker pour éviter que le trafic de récupération n'affecte le trafic métier.

Important
  • La limitation s'applique uniquement à la réplication de maintenance, et non aux opérations normales de récupération des réplicas.

  • Une fois le broker récupéré et ses réplicas réintégrés à la liste des réplicas synchronisés (ISR), supprimez les paramètres de limitation avec kafka-configs.sh. Si vous ignorez cette étape, la limitation continuera de s'appliquer à tout le trafic de réplication.

Procédure :

  1. Connectez-vous au nœud maître de votre cluster Kafka via SSH. Pour plus de détails, consultez Se connecter à un cluster.

  2. Créez un topic de test.

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --partitions 1 --replication-factor 3 --create

    Vérifiez les détails du topic :

    kafka-topics.sh --bootstrap-server core-1-1:9092 --topic test-throttled --describe
  3. Écrivez des données de test.

    kafka-producer-perf-test.sh --topic test-throttled --record-size 1000 --num-records 600000000 --print-metrics --throughput 10240 --producer-props acks=-1 linger.ms=0 bootstrap.servers=core-1-1:9092
  4. Configurez la limitation sur le topic et sur chaque broker avant d'arrêter le broker 1. Appliquez la limitation à tous les réplicas du topic :

    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type topics --entity-name test-throttled --alter --add-config "leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*"

    Appliquez les débits de limitation à chaque broker. Répétez l'opération pour chaque broker du cluster :

    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 0
    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 1
    kafka-configs.sh --bootstrap-server core-1-1:9092 --entity-type brokers --alter --add-config "leader.replication.throttled.rate=1024,follower.replication.throttled.rate=1024" --entity-name 2
    ......
  5. Arrêtez le broker 1 dans la console EMR.

  6. Supprimez les données des réplicas sur le broker 1 pour simuler une perte de données.

    rm -rf /mnt/disk2/kafka/log/test-throttled-0/
  7. Démarrez le broker 1 dans la console EMR et confirmez que les paramètres de limitation sont actifs. Utilisez les commandes indiquées dans Interroger la configuration actuelle de limitation pour vérifier.

  8. Une fois les réplicas du broker 1 récupérés et visibles dans la liste ISR, supprimez les paramètres de limitation. Supprimez-les du topic :

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type topics --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas' --entity-name test-throttled

    Supprimez-les de chaque broker :

    kafka-configs.sh --bootstrap-server core-1-1:9092 -entity-type brokers --alter --delete-config 'leader.replication.throttled.replicas,follower.replication.throttled.replicas,leader.replication.throttled.rate,follower.replication.throttled.rate' --entity-name 0
    ......