У меня есть 2 виртуальных машины Ubuntu в Azure (классические виртуальные машины на старой панели управления). Я создал оба находятся в одной облачной службе. Я также создал конечную точку с балансировкой нагрузки 80 (общедоступная)
- 80 (частная)
с обеими машинами, имеющими эту конечную точку, протокол HTTP
и путь пробы / probe
.
Когда я просматриваю IP-адрес облачной службы с обеими виртуальными машинами, я получаю ожидаемый ответ.
Если я выключу ВМ 2 и оставлю ВМ 1 работать, она все равно будет работать, но когда я закрываю ВМ 1 и покидаю ВМ 2, я получаю сбой соединения в браузере.
Я поигрался, и ВМ2 никогда не получает никакого трафика, направленного на нее. У меня есть конечная точка в моем приложении / probe
, которая возвращает некэшируемый ответ состояния 200 для зондов Load Balancer. Я попробовал протестировать их на виртуальных машинах, вызвав
wget localhost / probe
. Я попробовал это на обеих машинах и получил правильный результат только тогда, когда VM1 запущена. Когда ВМ 1 выключена, и я запускаю эту команду на ВМ 2, она не может подключиться к адресу. Я думаю, что именно в этом и заключается проблема, но не могу понять, как ее исправить.
Обновление:
Я добавил ведение журнала в приложения, и кажется, что оно проверяет только первую виртуальную машину.
Мне пришлось добавить конечную точку с балансировкой нагрузки на обеих виртуальных машинах в панели управления Azure. Очень глупая ошибка.
Также каждая виртуальная машина должна иметь действующую конечную точку, для меня это была <адрес> / healthcheck
. Все, что нужно делать этой конечной точке, - это всегда возвращать не кэшируемый ответ со статусом 200
. Больше ничего не нужно, все остальное сделает внутренний балансировщик нагрузки Azure.