Особенности реализации
Примечание
В регионе Казахстан доступна только зона доступности kz1-a
.
Обработчик во всех зонах доступности
IP-адрес обработчика трафика балансировщика анонсируется во внешний мир как префикс /32
из всех зон доступности Yandex Cloud. Если одна из зон доступности выйдет из строя, сетевое оборудование перенаправит входящий трафик на IP-адрес обработчика в другие работающие зоны доступности.
Потоки трафика
Алгоритм работы внешнего (EXTERNAL
) балансировщика:
- Обработчик принимает от граничного маршрутизатора Yandex Cloud трафик для IP-адреса и порта, на которые он настроен.
- Обработчик вычисляет
5-tuple
хеш-функцию от параметров принятого IP-пакета, в которую передаются:- Протокол передачи информации (TCP или UDP).
- Публичный IP-адрес отправителя.
- Порт отправителя (TCP или UDP).
- Публичный IP-адрес обработчика трафика балансировщика.
- Порт обработчика трафика балансировщика (TCP или UDP).
- Обработчик направляет трафик на один из работающих ресурсов в целевой группе на основе результата вычисления хеш-функции.
- Ресурс в целевой группе обрабатывает полученный трафик и отправляет результат обратно сетевому балансировщику.
Ниже на схеме представлен пример работы внешнего клиентского приложения с веб-сервисом в Yandex Cloud.
Путь трафика от клиентского приложения к веб-сервису:
- Трафик от клиентского приложения
1.2.3.4:30325
(номер сокета/порта может быть любой) в виде последовательности IP-пакетов отправляется к балансировщику и обработчик трафика158.160.0.x:443
получает его. - Обработчик вычисляет хеш-функцию с адресацией по принципу
5-tuple
от параметров принятого IP-пакета и направляет трафик к ВМvm-a1
в целевой группе. При этом в виртуальной сети сохраняется информация о том, что трафик на обработчик158.160.0.x:443
был отправлен к ресурсу10.0.1.1:8443
. - ВМ
vm-a1
обрабатывает полученный запрос и отправляет ответ обратно в сторону клиентского приложения, используя свой IP-адрес10.0.1.1
. - Виртуальная сеть уже знает (см. п.2), что ранее трафик от клиентского приложения был принят обработчиком балансировщика и отправлен на обработку к ВМ
vm-a1
. Эта информация даёт возможность виртуальной сети поменять адрес и порт отправителя (сделать Source NAT ) для всех пакетов от10.0.1.1:8443
к158.160.0.x:443
. Далее трафик отправляется к адресу назначения согласно политикам маршрутизации и доходит до клиентского приложения. - Трафик отправляется к адресу назначения согласно политикам маршрутизации и доходит до клиентского приложения.
Примечание
На схеме выше пунктиром показан резервный путь к ВМ vm-b1
, который выбрал бы обработчик, если проверка доступности для ВМ vm-a1
была бы неудачной.
Обработка UDP-трафика
Обработка UDP-трафика для сетевого балансировщика по умолчанию выключена из-за невозможности обеспечить консистентное распределение UDP-пакетов с одинаковой хеш-функцией 5-tuple
на один и тот же ресурс в целевой группе. Однако, сетевой балансировщик может использоваться, например, для обработки трафика протокола DNS, не требующего сохранения состояния соединения.
Чтобы включить обработку UDP-трафика на сетевом балансировщике, обратитесь в техническую поддержку.
Локальность при обработке трафика внутренним балансировщиком
Если клиент, находящийся внутри VPC, отправляет трафик на внутренний сетевой балансировщик, то обработчик будет распределять этот трафик только по ресурсам в целевых группах, которые находятся в той же зоне доступности, что и клиент.
Если в зоне доступности, в которой находится клиент, нет работающих целевых ресурсов, трафик будет равномерно распределяться по целевым ресурсам в других зонах.
Сходимость маршрутизации в зоне доступности
Если последний целевой ресурс в зоне доступности отключен (или проверка его состояния завершена неудачно), эта зона исключается из маршрутизации трафика через балансировщик. Процесс сходимости протоколов маршрутизации при этом может занимать до 2 минут. В течение этого интервала сходимости трафик, поступающий на данный целевой ресурс, будет отбрасываться.
Если первый целевой ресурс в зоне доступности становится доступен после успешной проверки его состояния, фактический возврат ресурса к обработке трафика произойдет также спустя интервал сходимости, необходимый для анонсирования префикса ресурса из данной зоны доступности.
Сетевой балансировщик и Cloud Interconnect
При использовании внутреннего сетевого балансировщика допускается взаимодействие между IP-адресом обработчика балансировщика и ресурсами на удаленной площадке (On-Prem).
Нельзя использовать ресурсы из On-Prem в составе групп балансировщика, поскольку сетевой балансировщик и ресурсы в целевых группах за ним должны быть в одной сети.
Маршрутизация трафика через внутренний балансировщик
Внутренний сетевой балансировщик использует маршруты всех подсетей в выбранной сети Virtual Private Cloud. К ним относятся динамические маршруты из Cloud Interconnect и статические маршруты из таблиц маршрутизации VPC.
Если в таблице маршрутизации у нескольких маршрутов будет одинаковый префикс назначения, но разные next hop
Если трафик к балансировщику не проходил через сетевую ВМ, она может отбросить ответный трафик от целевых ресурсов. Чтобы избежать потерь трафика, настройте маршрутизацию в зависимости от вашего случая:
- таблицы маршрутизации имеют статические маршруты с одинаковыми префиксами;
- на сетевых ВМ настроен Source NAT.
Вариант, в котором таблицы маршрутизации имеют статические маршруты с одинаковыми префиксами и разными next hop адресами сетевых ВМ, не поддерживается.
Таблицы маршрутизации имеют статические маршруты с одинаковыми префиксами
У маршрутов должен быть next hop адрес одной из сетевых ВМ. Сетевые ВМ работают в режиме Active/Standby
. Для обеспечения отказоустойчивости исходящего трафика настройте переадресацию трафика, например с помощью route-switcher
На сетевых ВМ настроен Source NAT
На ВМ необходимо настроить трансляцию Source NATActive/Active
. Для настройки Source NAT обратитесь к документации ПО, развернутого на сетевой ВМ. Посмотрите пример настройки Source NAT на Check Point NGFW.
Таблицы маршрутизации имеют статические маршруты с одинаковыми префиксами и разными next hop адресами сетевых ВМ
Внимание
Данный сценарий не поддерживается. Используйте один из вариантов, описанных выше.