Je lance un connecteur Kafka en mode distribué dans un conteneur Docker local 'launch' (séparé du conteneur de noeud Kafka). Le connecteur fonctionne comme prévu, mais lorsque je tue le conteneur de lancement, le connecteur cesse de fonctionner. Je m'attendais à ce qu'il continue de fonctionner puisque je croyais qu'il était enregistré et fonctionnait sur un employé du nœud Kafka dans un autre conteneur. Mon installation plus en détail suit:Pourquoi le connecteur distribué Kafka est-il en train de mourir lorsque le noeud sur lequel je l'ai créé est détruit?
Actuellement, je cours tout à travers les conteneurs Docker localement. Je:
- Un noeud Zookeeper (3.4.9)
- Un noeud Kafka (Apache, 0.10.1.0)
- Un nœud 'lance'.
Le noeud de lancement télécharge la version Kafka appropriée et décompresse son contenu. Il construit ensuite la source de connecteur, définit le chemin de classe pour inclure les fichiers JAR nécessaires, exécute alors le connecteur en tant que tel:
connect-distributed.sh config/connect-distributed.properties
Le fichier de propriétés distribué définit l'ID de groupe, les différents noms de sujets, des schémas et des convertisseurs et aussi les serveurs bootstrap (qui pointent vers le noeud Kafka (2) ci-dessus).
Cette commande semble s'exécuter correctement, le service reposant du service http étant démarré correctement. Je peux ensuite émettre la demande POST à http://example:8083/connectors, fournissant la configuration pour les tâches de connecteur. La commande se termine sans erreur et le connecteur est démarré avec succès. Je peux consommer à partir d'un sujet dans le noeud Kafka (2) et je vois la sortie qui indique que le connecteur fonctionne et envoie des données. Lorsque je tue le nœud de lancement (3), je m'attends à ce que le connecteur continue à fonctionner depuis que je l'ai enregistré avec le cluster Kafka, même s'il s'agit d'un cluster de 1. Le connecteur ne continue pas à fonctionner et semble mourir avec le noeud de lancement. Le connecteur n'est-il pas supposé être géré maintenant par un travailleur du cluster? Dois-je changer la façon dont je lance le connecteur ou suis-je en train de mal comprendre quelque chose?
Merci pour la réponse. Cela signifie donc qu'une partie de ma configuration de nœud Kafka doit démarrer le connecteur, si je veux qu'un processus de travail exécute au moins une tâche de connecteur sur chaque nœud de mon cluster Kafka? Deuxième question: Si le connecteur tombe en panne pour une raison quelconque, j'ai besoin de quelque chose de surveiller la rubrique d'état du connecteur qui le redémarrera automatiquement sur le nœud nécessaire? – LaserJesus
Les travailleurs distribuent automatiquement les tâches, aussi longtemps que vous démarrez au moins 1 connecteur et avez assez de tâches, tous les travailleurs traiteront activement les données. Pour surveiller, oui, vous pouvez surveiller le sujet d'état et prendre l'action appropriée pour redémarrer (* si * cela a du sens, cela pourrait être un problème avec l'autre système qui ne sera pas résolu juste en redémarrant la tâche). –
Merci encore pour votre aide. Donc, si j'ai un ensemble de trois nœuds dans mon cluster Kafka, je devrais démarrer le connecteur sur chaque nœud pour qu'un worker exécute des tâches pour ce connecteur sur chaque nœud, en s'assurant que si un seul nœud tombe, des connecteurs seront exécutés autres nœuds? C'est à dire. le démarrage d'un connecteur sur un nœud n'entraînera pas automatiquement le démarrage des connecteurs et de leurs employés respectifs sur d'autres nœuds? – LaserJesus