Удалить мертвые сервисы из Консул
У нас есть несколько приложений 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-запрос вручную.