Сервисные чеки для осиротевших консулов
У меня проблема, когда контейнер не может быть успешно развернут, но служба и проверка по-прежнему регистрируются в Consul. Иногда, когда контейнер не удается развернуть снова и снова, несколько раз в минуту, проверка не снимается с регистрации вместе со службой, и осиротевшие проверки остаются в / 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 var к нашему текущему развертыванию, но, похоже, он не отображается в проверке. Я не знаю, является ли это решением моих проблем, и я не хочу тратить время на попытки заставить его работать, если это не так.
Еще одна вещь v2 - я не устанавливаю флаг --deregister on-success/always для регистратора. Что именно это делает и может ли это решить мою проблему?
Спасибо!