5
votes

Pendant la mise à niveau / redémarrage progressif, comment détecter quand un courtier kafka est "terminé"?

J'ai besoin d'automatiser un redémarrage progressif d'un cluster kafka (3 courtiers kafka). Je peux facilement le faire manuellement - redémarrez l'un après l'autre, tout en vérifiant le journal pour voir quand ça va (par exemple, quand le nouveau processus a rejoint le cluster).

Quel est le bon moyen d'automatiser cette vérification? Comment puis-je demander au courtier s'il est opérationnel, connecté à ses pairs, tous les sujets à jour et autres? Dans mon script de redémarrage, j'ai accès aux métriques, mais pour être franc, je n'en ai pas vraiment vu une qui me donne une image claire.

Une autre façon serait de demander ce que serait une bonne sonde de "disponibilité" qui ne vérifie pas simplement un port TCP / IP, mais regarde le serveur réel ...


0 commentaires

3 Réponses :


3
votes

Je suggérerais d'exposer les métriques JMX et de suivre les éléments suivants pour la santé du cluster

  • le nombre de contrôleurs (doit être 1 sur tout le cluster)
  • sous les partitions répliquées (doit être égal à zéro pour un cluster sain)
  • élections de dirigeants impures (si vous ne désactivez pas cette option dans server.properties , assurez-vous qu'il n'y en a pas dans le décompte des métriques)
  • L'ISR se réduit dans un délai raisonnable, par exemple une fenêtre de 10 minutes (ne devrait pas être)

De plus, Yelp a implémenté des outils pour les redémarrages progressifs en Python, qui nécessite l'installation d'agents Jolokia JMX sur les courtiers, et il interroge les métriques pour s'assurer que certaines des conditions ci-dessus sont vraies


2 commentaires

Pensez que la solution Yelps est uniquement lorsque votre cluster est en mode non-sécurité. Corrigez-moi si j'ai tort, s'il-vous plait


Je ne pense pas que le protocole de sécurité Kafka compte. Le script semble utiliser SSH et HTTP.



1
votes

En supposant que votre cluster était sain au début de l'opération de redémarrage, au minimum, après chaque redémarrage du courtier, vous devez vous assurer que le nombre de partitions sous-répliquées revient à zéro avant de redémarrer le courtier suivant.

Comme les intervenants précédents l'ont mentionné, il existe du code pour automatiser cela. Je n’utilise pas Jolikia moi-même, mais ma solution (sur laquelle je travaille actuellement) utilise également des métriques JMX.


0 commentaires

1
votes

Kakfa Utils de Yelp est l'un des meilleurs outils qui peuvent être utilisés pour détecter quand un courtier kafka est "terminé". Plus précisément, kafka_rolling_restart est l'outil qui obtient les détails du courtier du gardien de zoo et les métriques URP (Under Replicated Partitions) de chaque courtier. Lorsqu'un courtier est redémarré, le total des URP dans le cluster Kafka est périodiquement collecté et lorsqu'il passe à zéro, il redémarre un autre courtier. Le courtier contrôleur est redémarré au dernier.


0 commentaires