Сироты Консул - PullRequest
       45

Сироты Консул

0 голосов
/ 01 октября 2019

У меня проблема, когда контейнер не может быть успешно развернут, но служба и проверка все еще регистрируются в Консуле. Иногда, когда контейнер не может быть развернут снова и снова, несколько раз в минуту, проверка не отменяется вместе со службой, а осиротевшие проверки остаются в / data-dir / check . Зеленые (всегда 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"

Вот пример осиротевшей проверки. ЕДИНСТВЕННАЯ разница между осиротевшими проверками и действительными проверками - это порт в 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 - я не устанавливаю - отменить регистрацию при успехе / всегда флаг для регистратора. Что именно это делает и может ли это решить мою проблему?

Спасибо!

...