2017-09-20 7 views
0

Je lance un Akka Cluster (Version 2.5.0) ce qui est contrôlé par supervord (http://supervisord.org/). Mon problème est que quand j'arrête un nœud akka avec supervisorctl stop my-service, le nœud akka s'arrête, mais n'a pas assez de temps pour se désinscrire du cluster akka et de plus les autres nœuds ne prennent pas le contrôle sur (c'est-à-dire) les acteurs singleton.Comment faire pour arrêter le membre Akka Cluster gracieusement de supervord

Ma config superviseur ressemble à ceci:

[program:my-service] 
command=java -jar -Dconfig.file=application-1.conf -Dfile.encoding=UTF-8 my_service.jar 
directory=/data/my-service 
autorestart=true 
autostart=true 
user=lm-service 
startsecs=3 
startretries=3 
stopsignal=KILL 
stopwaitsecs=10 
redirect_stderr=false 
stdout_logfile=/data/my-service/logs/stdout 
stdout_logfile_maxbytes=1MB 
stdout_logfile_backups=10 
stdout_capture_maxbytes=1MB 
stderr_logfile=/data/my-service/logs/stderr 
stderr_logfile_maxbytes=1MB 
stderr_logfile_backups=10 
stderr_capture_maxbytes=1MB 

Dois-je ajouter un peu de crochet d'arrêt dans mon application Akka, et/ou dois-je changer le paramètre stopsignal dans ma configuration?

Répondre

2

Le signal d'arrêt doit être SIGTERM. SIGTERM déclenchera le système d'arrêt coordonné de akka, votre nœud de cluster doit quitter correctement le cluster dans ce cas. Voir:

Pourtant, cela ne garantit pas que les autres nœuds prendre le contrôle dans le temps. Voir cette citation de http://doc.akka.io/docs/akka/current/scala/cluster-singleton.html:

Soyez conscient qu'il ya une période de temps où il n'y a pas singleton actif au cours du processus de transfert sur.

+0

Merci, cela a fonctionné pour moi! –