【问题标题】:How to stop Akka Cluster member gracefully from supervisord如何从 supervisord 优雅地停止 Akka Cluster 成员
【发布时间】:2018-03-01 06:41:49
【问题描述】:

我运行一个由 supervisord (http://supervisord.org/) 控制的 Akka 集群(版本 2.5.0)。我的问题是,当我用supervisorctl stop my-service 停止一个akka 节点时,akka 节点会停止,但没有足够的时间从akka 集群中注销自己,而且其他节点不会控制(即)单例参与者。

我的主管配置如下所示:

[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

我是否必须在我的 akka 应用程序中添加一些关闭挂钩,或者/并且我是否必须更改我的配置中的 stopsignal 参数?

【问题讨论】:

    标签: akka supervisord akka-cluster


    【解决方案1】:

    停止信号应该是SIGTERMSIGTERM会触发akka的协同关闭系统,此时你的集群节点应该正确的离开集群。见:

    不过,这并不能保证其他节点会及时控制。请参阅此引文 http://doc.akka.io/docs/akka/current/scala/cluster-singleton.html

    请注意,在切换过程中没有活动单例的时间很短。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2018-09-27
      相关资源
      最近更新 更多