我遇到一个问题,即容器无法成功部署,但是服务和检查仍在Consul中注册。有时,当容器一次又一次地多次失败部署时,该支票不会随服务一起取消注册,并且孤立的支票仍位于 / data-dir / checks < / em> 。下图中的绿色(始终为chmod 755)检查就是这样的示例。
我们每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的另一件事-我没有为注册人设置-成功/总是注销标志。究竟是做什么的,这可以解决我的问题吗?
谢谢!