Сервисные чеки для осиротевших консулов

У меня проблема, когда контейнер не может быть успешно развернут, но служба и проверка по-прежнему регистрируются в 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 для регистратора. Что именно это делает и может ли это решить мою проблему?

Спасибо!

0 ответов

Другие вопросы по тегам