【问题标题】:Restart server on node failure with Consul使用 Consul 在节点故障时重新启动服务器
【发布时间】:2018-02-09 13:48:54
【问题描述】:

这里是微服务新手。

我一直在研究使用弹簧执行器开发微服务,同时让 Consul 用于服务发现和故障恢复。 我已经按照 Consul 文档中的说明配置了一个集群。

现在我要做的是配置一个 Consul Watch 以在我的任何服务关闭时触发并执行一个 shell 脚本来重新启动我的服务。以下是我的配置文件。

{
 "bind_addr": "127.0.0.1",
 "datacenter": "dc1",
 "encrypt": "EXz7LsrhpQ4idwqffiFoQ==",
 "data_dir": "/data",
 "log_level": "INFO",
 "enable_syslog": true,
 "enable_debug": true,
 "enable_script_checks": true,
 "ui":true,
 "node_name": "SpringConsulClient",
 "server": false,
 "service": { "name": "Apache", "tags": ["HTTP"], "port": 8080,
   "check": {"script": "curl localhost >/dev/null 2>&1", "interval": "10s"}},
 "rejoin_after_leave": true,
 "watches": [
    {
      "type": "service",
      "handler": "/Consul-Script.sh"
    }
  ]
 } 

任何帮助/提示将不胜感激。

问候, 克莉珊

【问题讨论】:

    标签: microservices consul spring-cloud-consul


    【解决方案1】:

    仔细看官方文档中service watch type的描述。它有一个例子,你可以如何指定它:

    {
      "type": "service",
      "service": "redis",
      "args": ["/usr/bin/my-service-handler.sh", "-redis"]
    }
    

    请注意,它没有属性handler,而是将脚本的路径作为参数。还有一个:

    需要“服务”参数

    看来,在您的情况下,您需要按如下方式指定它:

    "watches": [
        {
          "type": "service",
          "service": "Apache",
          "args": ["/fully/qualified/path/to/Consul-Script.sh"]
        }
      ]
    

    【讨论】:

    • 非常感谢。我会先尝试实现这一点,然后再回来。
    猜你喜欢
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2021-05-23
    • 2013-09-22
    • 2018-01-28
    • 1970-01-01
    • 2017-08-12
    相关资源
    最近更新 更多