0

微服务新手在这里。

我一直在研究使用弹簧执行器开发微服务,同时让 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"
    }
  ]
 } 

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

问候, 克里斯汉

4

1 回答 1

1

仔细看官方文档中对服务监听类型的描述。它有一个示例,您可以如何指定它:

{
  "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"]
    }
  ]
于 2018-02-13T12:23:01.437 回答