领事孤儿服务检查

时间:2019-09-30 22:24:06

标签: consul registrator

我遇到一个问题,即容器无法成功部署,但是服务和检查仍在Consul中注册。有时,当容器一次又一次地多次失败部署时,该支票不会随服务一起取消注册,并且孤立的支票仍位于 / data-dir / checks < / em> 。下图中的绿色(始终为chmod 755)检查就是这样的示例。

enter image description here

我们每30秒同步一次注册人。

以下是我们使用的注册商变量的示例

"SERVICE_9000_CHECK_TIMEOUT": "10s",
"SERVICE_9000_CHECK_INTERVAL": "15s",
"SERVICE_9000_CHECK_HTTP": "/_/health",
"SERVICE_9000_NAME": "example-service"

这是孤立支票的示例。孤立检查和有效检查之间的唯一区别是HTTP检查URL中的端口。在下面的代码片段中,您可以看到它使用端口0,而有效的检查具有已分配的随机主机端口

{
"Check": {
    "CheckID": "service:node-a-0-239-3BE2.example.com:ecs-example-service-a8a7b6dff6c1b5d31300:9000",
    "CreateIndex": 0,
    "ModifyIndex": 0,
    "Name": "Service 'example-service' check",
    "Node": "node-a-0-239-3BE2.example.com",
    "Notes": "",
    "Output": "",
    "ServiceID": "service:node-a-0-239-3BE2.example.com:ecs-example-service-a8a7b6dff6c1b5d31300:9000",
    "ServiceName": "example-service",
    "ServiceTags": null,
    "Status": "critical"
},
"ChkType": {
    "CheckID": "",
    "DeregisterCriticalServiceAfter": 0,
    "DockerContainerID": "",
    "HTTP": "http://10.10.0.239:0/_/health",
    "Header": null,
    "Interval": 10000000000,
    "Method": "",
    "Name": "",
    "Notes": "",
    "Script": "",
    "ScriptArgs": null,
    "Shell": "",
    "Status": "",
    "TCP": "",
    "TLSSkipVerify": false,
    "TTL": 0,
    "Timeout": 3000000000
},
"Token": ""
}

到目前为止,我只是通过curl -X PUT localhost:8500/v1/agent/check/deregister/${CHECK_ID}

手动注销了孤立的支票

另一件事-我尝试将 SERVICE_CHECK_DEREGISTER_AFTER 注册器变量添加到我们当前的部署中,但似乎没有出现在检查中。我不知道这是否是解决我的问题的方法,并且我不想花时间尝试使其解决问题。

v2的另一件事-我没有为注册人设置-成功/总是注销标志。究竟是做什么的,这可以解决我的问题吗?

谢谢!

0 个答案:

没有答案