У меня проблема, когда контейнер не может быть успешно развернут, но служба и проверка все еще регистрируются в Консуле. Иногда, когда контейнер не может быть развернут снова и снова, несколько раз в минуту, проверка не отменяется вместе со службой, а осиротевшие проверки остаются в / data-dir / check . Зеленые (всегда chmod 755) проверки на изображении ниже являются примерами этого.
У нас есть регистрация регистратора каждые 30 секунд.
Вот пример регистратора, который мы используем
"SERVICE_9000_CHECK_TIMEOUT": "10s",
"SERVICE_9000_CHECK_INTERVAL": "15s",
"SERVICE_9000_CHECK_HTTP": "/_/health",
"SERVICE_9000_NAME": "example-service"
Вот пример осиротевшей проверки. ЕДИНСТВЕННАЯ разница между осиротевшими проверками и действительными проверками - это порт в URL проверки HTTP. В приведенном ниже фрагменте кода вы можете видеть, что он использует порт 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 - я не устанавливаю - отменить регистрацию при успехе / всегда флаг для регистратора. Что именно это делает и может ли это решить мою проблему?
Спасибо!