Удалить мертвые сервисы из Консул

У нас есть несколько приложений Spring Boot, которые регистрируются в Consul (через Spring Cloud Consul). Если я остановлю эти приложения через docker-compose stop myservice затем они корректно отменяют регистрацию и исчезают из консула.

Если я использую docker-compose kill myservice тогда отмены регистрации не происходит. Я понимаю, что в системе UNIX невозможно отловить событие SIGKILL, поэтому нет способа принудительно отменить регистрацию.

Поэтому мы видим службы в Консуле, которые никогда не удаляются (помечены как critical но все равно видно в интерфейсе). Есть ли способ заставить Консул обновить то, что зарегистрировано, чтобы удалить мертвые сервисы?

Спасибо

Ник

1 ответ

Похоже, вам нужно использовать HTTP-консул API и вручную отменить регистрацию недоступных сервисов. API дает вам 2 различных способа отменить регистрацию какого-либо сервиса, первый из которых выполняется через конечную точку агента

curl -v -X PUT http://%CONSUL_IP%:8500/v1/agent/service/deregister/<ServiceID>

а второй через каталог. К сожалению, в обоих случаях вы должны сделать http-запрос вручную.

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