Fermer

septembre 24, 2024

Supprimez en toute sécurité les courtiers Kafka des clusters provisionnés Amazon MSK

Supprimez en toute sécurité les courtiers Kafka des clusters provisionnés Amazon MSK


Introduction

À mesure que les entreprises se développent et que leurs besoins en matière de streaming de données évoluent, il est important d’optimiser les ressources pour rester efficace et contrôler les coûts. AWS a déployé une nouvelle fonctionnalité pour Amazon Managed Streaming pour Apache Kafka (Amazon MSK) qui permet la suppression des courtiers des clusters MSK. Cette fonctionnalité vous permet d’ajuster la taille de vos clusters pour mieux répondre à vos besoins sans compromettre la disponibilité. Dans ce blog, je vais vous guider à travers les étapes permettant de supprimer en toute sécurité des courtiers d’un cluster provisionné Amazon MSK, avec des instructions détaillées et des captures d’écran.

Annonce AWS : capacité de suppression du courtier

La fonctionnalité de suppression de courtier d’Amazon MSK est introduite pour simplifier la gestion des clusters et offrir de la flexibilité aux charges de travail dynamiques. AWS a annoncé cette fonctionnalité pour répondre aux besoins des clients en matière d’optimisation des coûts et de meilleure gestion des ressources.

Amazon MSK

Amazon MSK

En permettant aux utilisateurs de supprimer en toute sécurité des courtiers d’un cluster MSK existant, AWS a facilité l’adaptation à l’évolution des modèles de trafic et aux exigences commerciales sans temps d’arrêt ni risque de perte de données. Annonce officielle ici.

Pourquoi supprimer les courtiers ?

Avec le temps, vous constaterez peut-être que votre cluster Kafka est surprovisionné en raison d’une réduction du trafic de données ou de changements dans les exigences de l’entreprise. Garder inutilement des courtiers supplémentaires non seulement augmente les coûts mais complique également la gestion. La suppression des courtiers surprovisionnés permet de réduire les coûts, optimiser l’utilisation des ressourceset simplifier la gestion des infrastructures. La capacité de suppression de courtier d’Amazon MSK garantit que le processus est sûr et sans interruption, permettant ainsi à vos applications de streaming de continuer à fonctionner sans problème. Maintenant que nous avons compris Pourquoi, passons au Comment. Suivez les étapes indiquées ci-dessous :

Conditions préalables

  • Un cluster Amazon MSK.
  • Outils CLI Kafka installés sur un ordinateur client.
  • L’AWS CLI est configurée avec les autorisations nécessaires pour gérer MSK.
  • Une compréhension de base des sujets, des partitions et des courtiers Kafka.

Démo étape par étape : Suppression d’un courtier d’un cluster Amazon MSK

Ce guide utilise une configuration de cluster de démonstration avec 6 courtiers répartis dans 3 zones de disponibilité (AZ)avec 2 courtiers par AZ. La configuration de votre cluster peut varier ; les étapes restent les mêmes. Il y a 3 sujets : sujet1, sujet2 et sujet3. Ces 3 sujets ont 30 partitions chaque.

Schéma architectural

Schéma architectural

Remarque importante

Before removing brokers from a MSK cluster, it’s important to ensure that no user partitions are assigned to them. This includes reassigning partitions to other brokers in the cluster.In case user partitions exist on brokers amazon doesn’t allow us to remove brokers and you will see the below error.
Suppression du courtier

Suppression du courtier

Étape 1 : répertorier tous les sujets du cluster MSK

Tout d’abord, répertoriez tous les sujets de votre cluster MSK. Cela permet d’identifier les sujets utilisateur qui doivent être réaffectés lorsque les courtiers sont supprimés.

./bin/kafka-topics.sh --bootstrap-server "<CLUSTER_BOOTSTRAP_STRING>" --list

Remplacer avec l’URL du serveur d’amorçage de votre cluster.

liste de sujets

liste de sujets

Étape 2 : Préparez un fichier JSON avec les sujets à déplacer

Créez un fichier nommé ‘sujets.json‘ pour inclure tous les sujets utilisateur que vous souhaitez déplacer, à l’exclusion des sujets internes Amazon MSK tels que __amazon_msk_canary. Ce fichier guidera le processus de réaffectation.

{
  "topics": [
    {"topic": "topic1"},
    {"topic": "topic2"},
    {"topic": "topic3"},

    {"topic": "__consumer_offsets"}
  ],
  "version": 1
}

Étape 3 : Générer une proposition de réaffectation de partition

Utilisez le ‘Kafka-réaffecter-partitions.sh‘ pour générer une proposition de réaffectation qui exclut les courtiers que vous souhaitez supprimer. Cette étape garantit que les partitions sont correctement redistribuées avant d’exécuter des modifications.

Qu’est-ce que Kafka-reassign-partitions.sh ?

Ce script est utilisé pour gérer les affectations de partitions Kafka. Il vous aide à équilibrer les partitions entre les courtiers ou à éloigner en toute sécurité les partitions des courtiers que vous envisagez de supprimer.

./bin/kafka-reassign-partitions.sh --bootstrap-server "<CLUSTER_BOOTSTRAP_STRING>" --topics-to-move-json-file topics.json --broker-list 1,2,3 --generate
  1. –bootstrap-serveur : se connecte à votre cluster Kafka. Remplacez par l’URL de votre cluster.
  2. –sujets-à-déplacer-fichier-json : Spécifie les sujets et les partitions à réaffecter.
  3. –liste de courtiers : Répertorie les courtiers à conserver dans le processus de réaffectation.
  4. Le -générer L’option crée un fichier de proposition détaillant la façon dont les partitions seront redistribuées. Examinez cette proposition avant de passer à l’étape suivante.
Résultat : affectation actuelle de la réplique de partition
Attribution actuelle de la réplique de partition

Attribution actuelle de la réplique de partition

L’affectation actuelle du réplica de partition est répartie sur six courtiers (1 à 6). Chaque partition de topic1, topic2 et topic3 ​​possède deux réplicas répartis sur différents courtiers, tels que :

  1. sujet1 Partition 0 : [3,2]
  2. sujet2 Partition 0 : [2,5]
  3. sujet3 Partition 0 : [5,3]
    The goal of the reassignment is to move all replicas to brokers 1, 2, and 3.
Configuration de réaffectation de partition proposée

Configuration de réaffectation de partition proposée

Configuration de réaffectation de partition proposée
La configuration proposée redistribue toutes les répliques de partition entre les courtiers 1, 2 et 3. Pour chaque partition, les répliques sont transférées vers les courtiers 1, 2 et 3 uniquement. Voici quelques exemples de la manière dont la réaffectation affecte les partitions :

sujet1 :

  1. Partition 0 : se déplace de [3, 2] à [1, 3]
  2. Partition 1 : passe de [1, 5] à [2, 3]
  3. Partition 2 : passe de [6, 3] à [3, 1]
    This pattern continues for the remaining partitions of all the topics.

Résumé

Courtiers impliqués : les courtiers 1, 2 et 3 hébergeront toutes les répliques.
Courtiers supprimés : les courtiers 4, 5 et 6 sont supprimés de l’attribution de réplica.
Modèle de réaffectation : la réaffectation répartit les partitions de manière égale entre les courtiers 1, 2 et 3, en répétant un modèle dans lequel les répliques de chaque partition se déplacent vers une combinaison de ces trois courtiers.
Chaque partition est réaffectée de telle sorte que le jeu de réplicas figure dans la liste des courtiers. [1, 2, 3]. La réaffectation contribuera à maintenir une répartition uniforme entre les courtiers sélectionnés et à supprimer la dépendance vis-à-vis des courtiers 4, 5 et 6.

Étape 4 : Exécuter la réaffectation de la partition

Créez un fichier de réaffectation.json avec la configuration proposée à l’étape précédente. Ensuite, exécutez la commande de réaffectation :

./bin/kafka-reassign-partitions.sh --bootstrap-server "<CLUSTER_BOOTSTRAP_STRING>" --reassignment-json-file reassignment-file.json --execute

Cette commande commencera à déplacer les partitions des courtiers en cours de suppression vers les courtiers restants. La dernière partie du résultat confirme que le processus de réaffectation des partitions a démarré avec succès pour toutes les partitions répertoriées dans toutes les rubriques. Il mentionne les sujets et leurs partitions respectives qui ont lancé le processus de réaffectation :

Étape 5 : Vérifier la réaffectation

Après avoir exécuté la réaffectation, vérifiez-la pour vous assurer que toutes les partitions ont été déplacées comme prévu :

./bin/kafka-reassign-partitions.sh --bootstrap-server "<CLUSTER_BOOTSTRAP_STRING>" --reassignment-json-file reassignment-file.json --verify
vérifier-réaffectation

vérifier-réaffectation

vérifier-réaffectation

vérifier-réaffectation

Cette étape de vérification est cruciale pour confirmer que la réaffectation a été réalisée avec succès.

Étape 6 : Surveiller les métriques et supprimer les courtiers

Nous pouvons désormais constater que l’utilisation du disque pour les courtiers 4, 5 et 6 diminue à mesure que nous déplaçons les partitions des courtiers.

Utilisation du disque par les courtiers

Utilisation du disque par les courtiers

Une fois le mouvement de partition confirmé, vous pouvez réduire en toute sécurité le nombre de courtiers dans votre cluster. Utilisez l’AWS Management Console CLI ou l’API pour réduire le nombre de courtiers.

Depuis la console AWS :

suppression du courtier

suppression du courtier

suppression du courtier

suppression du courtier

AWS CLI :

aws kafka update-broker-count --cluster-arn <ClusterArn> --current-version <Current-Cluster-Version> --target-number-of-broker-nodes <Target-Number-of-Brokers>

Remplacer , et avec les valeurs correctes pour votre cluster.

Choses à prendre en charge

  1. Modèles de trafic: Avant de supprimer des courtiers, observez attentivement les modèles de trafic pour vous assurer que les courtiers restants peuvent gérer la charge sans impact négatif sur les performances.
  2. Surveiller la distribution des partitions: Une distribution inégale peut entraîner une performance affectée.
  3. Réplication des données: Il est important de s’assurer que le facteur de réplication des sujets est suffisant pour tolérer la perte d’un courtier. Ajustez les facteurs de réplication si nécessaire pour maintenir une haute disponibilité.
  4. Sauvegarder les données critiques: Bien qu’Amazon MSK offre de solides garanties quant à la durabilité des données, il est recommandé de disposer d’un plan de sauvegarde pour les données critiques.
  5. Surveiller la santé du cluster: surveillez régulièrement les métriques du cluster telles que l’utilisation du processeur du courtier, le débit du réseau, la distribution des partitions et le décalage du consommateur. Ces métriques sont essentielles pour garantir que votre cluster reste sain après la suppression des courtiers.
  6. Planifier le retour en arrière: Comprenez l’impact sur vos clients Kafka, en particulier en ce qui concerne les rééquilibrages des groupes de consommateurs et l’augmentation potentielle du décalage des consommateurs lors du processus de suppression du courtier. Assurez-vous que les applications utilisant Kafka sont résilientes à ces changements.
  7. Test dans un environnement hors production: Pour être plus sûr, testez d’abord l’activité de suppression du courtier dans un environnement inférieur pour comprendre l’impact et vous assurer que toutes les étapes fonctionnent comme prévu.

Conclusion

La suppression de courtiers d’un cluster Amazon MSK est désormais plus simple que jamais avec Amazon MSK nouvelle fonctionnalité de suppression de courtier. Grâce à une planification et une exécution minutieuses, vous pouvez optimiser vos clusters Kafka, réduire les coûts et garantir une haute disponibilité et des performances pour vos applications de streaming.

À AU NOUVEAUnotre équipe d’experts DevOps est spécialisée dans AWS MSK et les tâches associées, proposant des solutions pour faire évoluer dynamiquement vos charges de travail Kafka et maintenir les performances. Contactez-nous aujourd’hui pour savoir comment nous pouvons vous aider à améliorer votre infrastructure cloud et Pratiques DevOps! Si vous êtes intéressé par la migration vers AWS MSK, consultez ce blog.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link