Настройка однорукого режима (one-armed mode)#
Введение#
Однорукий режим (one-armed mode, одноинтерфейсный режим) — это способ балансировки нагрузки, при котором весь входящий и исходящий трафик (между клиентами и системой балансировки, между системой балансировки и upstream-серверами) проходит через один логический интерфейс. В отличие от режима работы с двумя интерфейсами (two-armed mode, двурукий режим), в одноруком режиме балансировщик работает как промежуточное звено, используя один интерфейс для передачи данных в обоих направлениях.
Этот режим подходит для использования в виртуализованных средах и облачных решениях, где может быть сложно разделить сетевые интерфейсы балансировщика: он проще настраивается, не требует существенных изменений в сети и может использоваться в уже существующей инфраструктуре. Также этот режим подходит для сценариев с SSL-терминацией или кэшированием. К минусам можно отнести повышенную нагрузку на интерфейс балансировщика и возможность проблем с асимметричной маршрутизацией (если отключить SNAT).
Схема работы#
Типовая схема для однорукого режима представлена ниже:

Здесь клиенты, серверы и сама система балансировки располагаются в одной подсети.
IP-адреса виртуальных серверов, трафик которых балансируется, должны принадлежать этой же подсети.
На этой схеме все устройства используют адреса из подсети 192.168.0.0/24
.
Значение последнего октета IP-адреса устройства представлено на схеме. Зеленым указан адрес виртуального сервера.
Для упрощения будем рассматривать только один виртуальный сервер с одним IP-адресом.
Клиент подключается к ресурсу по адресу виртуального сервера (в данном случае это 192.168.0.50
).
Система балансировки с помощью настроенного метода балансировки выбирает сервер, к которому подключается.
Для примера будем считать, что подключение инициирует устройство Client #1, а нагрузка была распределена на сервер Server #1.
В итоге мы получаем две независимые TCP-сессии: первая сессия устанавливается
между адресами 192.168.0.101
и 192.168.0.50
, а вторая – между адресами 192.168.0.10
и 192.168.0.201
.
Система балансировки «перекладывает» данные из одной TCP-сессии в другую:

При такой схеме соединений сервер не может точно установить по IP-адресу отправителя пакета, какой клиент к нему подключается, то есть, по сути, выполняется SNAT, поэтому обратный трафик от сервера возвращается в систему балансировки, а не напрямую клиенту. Опция SNAT отключаемая, однако в данном случае ее отключение приведет к тому, что обратный трафик (от сервера к клиенту) будет передаваться напрямую, что приведет к невозможности установления соединения, так как Angie ADC не поддерживает DSR (Direct Server Response).

Angie ADC может передать серверу информацию об IP-адресе клиента двумя способами:
с помощью XFF-заголовка (X-Forwarded-For) для протокола HTTP;
с помощью протокола PROXY.
Обеспечение отказоустойчивости#
Отказоустойчивость можно обеспечить несколькими стандартными способами: с помощью протокола VRRP, либо путем использования протоколов динамической маршрутизации OSPF или BGP. Для типовой схемы выше можно применять резервирование с помощью протокола VRRP. Адреса виртуальных серверов в этом случае назначаются VRRP-интерфейсу:

Обратный трафик (от сервера к клиенту) возвращается через ту же систему балансировки, через которую прошел трафик в прямом направлении. Это достигается за счет применения SNAT.
При применении Angie ADC в критически важных сегментах сети можно зарезервировать не только всю систему балансировки целиком, но и физические интерфейсы, которыми она подключается к сети. Такое резервирование позволит не только повысить доступность системы, но также и увеличит производительность сетевой инфраструктуры. однорукий режим работы подразумевает использование одного логического интерфейса в data-plane, тогда как физических интерфейсов, входящих в состав этого логического интерфейса, может быть несколько. Физические интерфейсы в этом случае объединяются в группу (Bundle, LAG, Port-Channel, EtherChannel). IP-адрес назначается на такой логический интерфейс:

Для обеспечения максимальной доступности в такой сети следует также зарезервировать коммутатор по любой доступной технологии: стек, виртуальный стек, VPC, VSS, mLAG, VLT и т. п.
Масштабирование#
Вы можете горизонтально масштабировать систему балансировки Angie ADC, работающую в одноруком режиме, организовав работу нескольких Angie ADC в режиме псевдо active-active с помощью применения multigroup VRRP. Суть такого подхода состоит в том, что между системами балансировки Angie ADC поднимается несколько VRRP-групп, каждая из которых имеет собственный уникальный набор адресов виртуальных серверов. Для одной группы роль мастера получает первая система балансировки, тогда как для второй группы роль мастера получает вторая система.
На схеме ниже представлены две VRRP-группы (1 и 2). Первой группе назначен
виртуальный адрес 192.168.0.50
, тогда как второй – 192.168.0.51
.

Прочие схемы#
Обсуждаемая схема — не единственная с точки зрения взаимного расположения клиентов, серверов и систем балансировки. Серверы и клиенты могут располагаться как в одном сетевом сегменте с системой балансировки, так и в разных.
На схеме ниже представлен пример сети, когда клиенты и серверы расположены в отдельных сегментах:

Заключение#
При выборе режима работы системы балансировки (однорукий, one-armed или двурукий, two-armed) следует опираться на особенности дизайна сети, требования отдела информационной безопасности, а также прочие внутренние правила и регламенты. Angie ADC поддерживает оба режима.