4 votes

Le plugin Enterprise Jenkins HA ne fonctionne pas comme il le devrait

J'ai essayé de mettre en place Enterprise Jenkins avec la configuration Haute disponibilité. La configuration actuelle consiste en deux maîtres Jenkins partageant le même home Jenkins, disons master1 et master2, une installation du rpm jenkins-ha-monitor-1.1-1.1 sur ces deux maîtres, disons monitor1 et monitor2. Avec cette configuration, selon la documentation au moins, le plugin HA devrait fonctionner comme prévu. Les scripts scripts sont similaires à ceux de la documentation (seules l'adresse IP et l'interface sont différentes, mais l'approche est la même).

Pour la rétrogradation

ifconfig eth0:2 down

Pour la promotion

ifconfig eth0:2 the.floating.ip

Maintenant, pour que les nœuds soient enregistrés correctement, je dois démarrer master1, master2, monitor1 et monitor2 dans cet ordre. Je vois que lorsque les services sont démarrés dans cet ordre, ils sont enregistrés correctement par les deux services de surveillance en tant que nœuds d'un cluster, et dans l'interface de statut HA de la console jenkins.

Maintenant, lorsque master1 est tué en lui envoyant un signal KILL, monitor2 le reconnaît et exécute le script de promotion script. Mais le moniteur 1 continue de lancer :

Oct 24, 2012 3:47:36 PM com.cloudbees.jenkins.ha.singleton.HASingleton$3 suspect INFO : Suspecter une défaillance de nœud dans un cluster : jenkins-master-1-285 Oct 24, 2012 3:47:39 PM com.cloudbees.jenkins.ha.singleton.HASingleton$3 suspect INFO : Suspecter une défaillance de nœud dans un cluster : jenkins-master-1-285

continuellement sans jamais exécuter le script de rétrogradation. Maintenant, puisque master2 a pris l'ip flottante via sa promotion script, et que master1 a toujours cette ip parce que la démotion script n'a pas été exécutée, la configuration se retrouve avec deux boîtes revendiquant la même ip. De plus, redémarrer master1 ne fait rien, c'est-à-dire que master1 n'est pas ajouté au cluster en tant que second nœud, monitor1 continue de cracher les messages ci-dessus dans le journal, l'ip flottante continue de renvoyer "Unable to connect" et master2 et monitor2 affichent le cluster comme master2, monitor2 et monitor1. Ma question/problème est donc double : pourquoi master1 n'est-il pas accepté à nouveau dans le cluster ? Et pourquoi le script de rétrogradation script ne s'exécute-t-il pas comme il le devrait ?

Pour information, j'ai essayé de faire un

service jenkins stop

et dans ce cas, le script de rétrogradation script s'exécute, mais il y a à nouveau des problèmes similaires lorsque

service jenkins start

est exécuté sur le maître qui a été arrêté plus tôt puisque la promotion script est exécutée indépendamment de l'existence d'un jenkins primaire. Et dans ce cas, les deux moniteurs enregistrent des clusters différents comme monitor1 : master1,monitor1 et monitor2 : master2,monitor2. L'exécution d'un ifconfig montre que les deux maîtres ont pris l'ip flottante à ce stade.

Toute aide est la bienvenue ! Merci d'avance !

1voto

Jesse Glick Points 3877

L'enquête est toujours en cours et bénéficie d'un soutien. Le problème initialement signalé (ici) suggère que les deux nœuds communiquent correctement, mais que les promotions/démotions ne sont pas exécutées correctement - soit un bug dans JGroups, soit dans son utilisation dans la haute disponibilité de Jenkins.

Mais des tests plus poussés ont révélé des problèmes de communication UDP multicast, qui ont été signalés pour les hôtes RedHat/CentOS. Des travaux sont en cours pour proposer une autre pile JGroups qui ne repose pas du tout sur le multicast (ou l'UDP), en utilisant la pile partagée de $JENKINS_HOME pour enregistrer Jenkins et surveiller les instances (sous forme d'enregistrements adresse TCP:port).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X