使用Consul重新启动服务器节点故障

时间:2018-02-09 13:48:54

标签: microservices consul spring-cloud-consul

新手到微服务。

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

任何帮助/提示都会非常感激。

此致 克里斯汉

1 个答案:

答案 0 :(得分: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"]
    }
  ]
相关问题