Для начала стоит запомнить: в общем случае статус инстанса и решение Azure load balancer'а посылать ли трафик на него, никак не связаны. Т.е. инстанс может быть в состоянии busy, но трафик на него будет идти. Или наоборот, инстанс может быть ready, но трафик на него не попадет.
Рассмотрим самый простой вариант - Вы не настраивали load balancer probe. В этом случае LB решает посылать ли трафик по статусу инстанса. Если ready - шлем, busy - не шлем. Все просто. Однако стоит Вам добавить probe как эта логика перестает работать, из-за чего возникает тот самый вопрос из ката. Идея простая - Вы написали свою логику для LB, а значит она и должна все учитывать, чтобы Вы не делали со статусом инстанса (если вы конечно не запросили recycle).
Допустим Вы реализовали всю необходимую логику и инстанс не попадает в ротацию пока он не проинициализирован или имеет какие-то проблемы. Тогда у Вас появилась другая проблема - инстанс трафик не обрабатывает, но в дашборде он виден как ready. Если таких инстансов становится все больше и больше, то пользовательские запросы будут обрабатываться все медленнее и медленнее, а может и вовсе перестанут. Значит Вам нужно как-то нотифицировать себя, что инстанс вышел из ротации. Вы можете реализовать это через свои инструменты (какая-то своя дашборда у вас полюбому будет), а можете просто выставить статус инстансу. В этом случае Вы хотя бы увидите где проблемы, когда Вас разбудят ночью. А можете реализовать автоматический ребут инстанса при долгом нахождении в busy state, тогда может и будить не будут:).
Как связывать статус инстанса с результатом probe - решать вам. Можете посылать запрос на probe endpoint, можете использовать объект ядра, а можете named pipe. Все что придумаете. Стоит только помнить следующте моменты:
- Класс web role и Asp.Net application работают в разных процессах.
- Asp.Net application не стартует вместе с web role. IIS запскает его только при первом запросе.
- В общем случае временных ограничений на выполнение OnStart метода нет (напомню на OnStop дается только 5 минут). Однако в случае обновления host'а на выполнение OnStart отводится 15 минут. При окончании 15 минут с инстансом ничего не делают, просто начинают рестартить следующий, который может быть в другом upgrade domain, что в свою очередь может привести к отсутствию работающих инстансов.
Комментариев нет:
Отправить комментарий