Появилась такая проблема как health check мониторинг виндовой (.NET /.NET Core ) аппликухи которая ранится на EC2 инстансе.
Что хотелось бы.
В AWS Elastic Beanstalk есть такая настройка как health checking WebApp — просто запрос на80й порт GET /health и если ответ не устраивает то инстанс убивается и поднимается новый.
Вот примерно то же самое хочется но только для виндовой аппликухи которая ранится как консоль или как win service на EC2 что бы если ответ от нее будет unhealthy то EC2 инстанс как то автоматом убивался и autoscale group создавала новый.
Виндовая аппликуха слушает очередь сообщений от RabbitMQ и обрабатывает их соответственно если с ней что то не так — потерян коннект к очереди или сервис стопнулся из за ошибки то healthcheck должен это обнаружить и выслать сообщение что с EC2 инстансом что то не то и его нужно убить и создать новый автоматом.
Есть какие -либо идеи по поводу того как это можно сделать?
Я так понимаю, есть 2 вещи, которые нужно сделать:
1. Выставить HTTP /health из win-службы
Если не тащить в приложение лишние зависимости, то
Для классического .NET — есть HttpListener
Для .NET Core — есть TcpListener
Реализовать поверх любого из них HTTP обработчик для единственного endpoint'a — не архисложная задача.
2. Переподнимать инстанс, если /health зарепортил проблему
Если пользуешь ELB с автоскейлингом — у тебя это будет из коробки.
Иначе, проще/дешевле всего будет поднять Lambda с периодическим запуском.
Пусть дергает /health и пересоздает инстанс если что не так.
Здравствуйте, RushDevion, Вы писали:
RD>Я так понимаю, есть 2 вещи, которые нужно сделать:
.... RD>Реализовать поверх любого из них HTTP обработчик для единственного endpoint'a — не архисложная задача.
Да вы все правильно поняли.
Когда я писал начальное сообщение то не обладал полными знаниями об .net core и то что в воркере можно совместить 2 типа обработчиков воркер + HTTP endpoint для healthcheck.
Сейчас проблема решена..
Просто я больше на full .net FW работал и не знал особенностей .net core