Работа с прокси-серверами

Прокси-сервер используется для маршрутизации как пользовательского трафика между источниками и приёмниками в процессе миграции, так и управляющего трафика между машинами и Контроллером. Прокси функционирует как транспарентный узел: он не модифицирует и не кеширует данные, скрывает реальные IP-адреса, не проверяет активность соединений и просто перенаправляет потоки с помощью NAT-правил iptables. Конфигурация правил осуществляется Контроллером.

В случае сетевых ошибок исходная машина может автоматически переключиться на другой прокси-сервер из группы. Работа обеспечивается процессом mind_proxy, установленным как Агент, с собственным хранилищем для ключей доступа.

Комплекс поддерживает следующие сценарии работы с прокси-серверами:

  • Использование двух прокси-серверов: на источнике и приёмнике. В данном режиме исключено какое-либо прямое сетевое взаимодействие между источниками, приёмниками и Контроллером. При выполнении миграции источник отправляет данные на прокси-источник, который затем транслирует их на прокси-приёмник, а прокси-приёмник передаёт данные на приёмник.
  • Использование одного прокси-сервера: на источнике. При выполнении миграции источник отправляет данные на прокси-источник, который затем передаёт данные на приёмник. Прокси используется не только для передачи данных от источника к приёмнику, но и для связи источника с оркестратором. Приёмник также использует этот прокси для отправки служебного трафика (watermill) на источник, но сам связывается с оркестратором напрямую.
  • Использование одного прокси-сервера: на приёмнике. При выполнении миграции источник отправляет данные на прокси-приёмник, который затем передаёт данные на приёмник. Источник напрямую взаимодействует с оркестратором, но для передачи данных и watermill-трафика использует прокси приёмника. Приёмник слушает входящий трафик на открытых портах, принимая его через прокси. Все соединения с оркестратором производятся также через прокси приёмника.
  • Работа без прокси-серверов. В этом режиме данные передаются напрямую между источником, приёмником и Контроллером.

При использовании прокси с обеих сторон (у источника и у приёмника) автоматически формируются так называемые прокси-пары — соответствия между прокси из группы источника и прокси из группы приёмника. Это обеспечивает однозначность маршрутизации трафика.

Важно – Для корректной работы количество прокси в обеих группах должно быть одинаковым. Если прокси указаны только с одной стороны, пары не формируются — прокси сразу перенаправляют трафик на нужную машину.

Работа с прокси-серверами выполняется в разделе "Прокси" в веб-интерфейсе Контроллера. На вкладке "Список" отображаются все прокси-серверы, зарегистрированные на данном Контроллере (рисунок 14).

В данном разделе отображаются только те прокси-серверы, которые зарегистрированы на текущем Контроллере Комплекса. Один прокси-сервер может быть привязан только к одному Контроллеру; использование одного и того же прокси несколькими Контроллерами не поддерживается.

Рисунок 14 — Раздел "Прокси"

На вкладке "Прокси группы" отображаются группы, включающие один или несколько прокси-серверов.

Чтобы создать новый прокси-сервер, необходимо нажать на кнопку + Добавить, и справа появится всплывающее окно с параметрами, которые необходимо заполнить (рисунок 15).

Рисунок 15 — Создание прокси-сервера

В открывшейся форме создания прокси-сервера необходимо заполнить следующие поля:

  • Имя — название записи для отображения в интерфейсе Комплекса;
  • IP/FQDN — статический адрес машины или её полное доменное имя;
  • Расширенные настройки:
  • Порт SSH — открытый порт для удалённого подключения к машине. По умолчанию — 22 для SSH;
  • Ключи доступа — (необязательно) данные для доступа к добавляемой машине необходимы только в случае автоматической установки Агента.

Далее нужно нажать кнопку Сохранить.

После этого созданный прокси-сервер отобразится в списке в разделе "Прокси". В столбце "Действия" каждой из строк можно нажать на соответствующие значки для редактирования информации, удаления прокси-сервера и выполнения действий с Агентом. Подробная информация по работе с агентами приведена в документе "РОСА Миграция. Руководство пользователя".

После добавления одного или нескольких прокси-серверов требуется создать прокси-группу, которую затем можно привязать к источнику и (или) приёмнику во время создания машины или задания на миграцию.

Примечание – В прокси-группе должен присутствовать как минимум один прокси-сервер. Рекомендуется добавить несколько прокси-серверов для обеспечения отказоустойчивости и автоматического переключения на резервные прокси-серверы в случае сбоя одного из прокси-серверов в группе.

Для создания новой группы требуется перейти на вкладку "Прокси группы" и нажать на кнопку + Добавить (рисунок 16). В открывшейся форме необходимо выбрать прокси-серверы, которые необходимо включить в группу, отметив их флажком. Затем необходимо ввести название группы в поле "Имя" и нажать Сохранить. После этого созданная прокси-группа отобразится в списке на вкладке "Прокси группы". В столбце "Действия" каждой из строк можно нажать на соответствующие значки для редактирования информации или удаления прокси группы.

Рисунок 16 — Раздел "Прокси-группы"

Важно – Все прокси-серверы в группе используют одинаковый набор NAT-правил iptables, синхронизируемых с Контроллером. Прокси-агент периодически пингует оркестратор, проверяя актуальность правил. При несоответствии правила загружаются заново через API, после чего старые удаляются, а новые применяются автоматически.

После настройки прокси при создании источника и приёмника в разделе "Машины" в расширенных настройках будет отображаться возможность привязки машины к прокси-группе.

Ресурсы для прокси-серверов

Принцип работы прокси-серверов

Прокси-сервер обеспечивают сетевую связность между компонентами Комплекса, такими как машины-источники, машины-приёмники и Контроллер посредством трансляции сетевых адресов.

Для этого прокси-сервер использует стандартные средства ядра Linux: подсистему iptables и цепочки PREROUTING, DNAT и FORWARD.

Такой подход обеспечивает высокую пропускную способность при минимальной нагрузке на процессор и оперативную память, так как не требуется глубокая инспекция или модификация трафика на уровне приложений.

Базовые рекомендации по ресурсам (CPU и RAM)

Поскольку iptables сам по себе не требует значительных вычислительных ресурсов, базовая нагрузка на CPU и RAM остаётся низкой. Однако по мере увеличения числа активных соединений и объёма проходящего трафика возрастает нагрузка на сетевой стек ядра.

Рекомендации по ресурсам приведены в таблице 3 на основе обобщённой практики и документации (включая источники от Linux Foundation, Red Hat и Netgate).

Чтобы точно рассчитать требуемые ресурсы, необходимо выполнить следующие действия:

  1. оценить трафик репликации:
  • получить список ВМ, участвующих в репликации через данный прокси;
  • проанализировать средний и пиковый трафик от каждой ВМ;
  • просуммировать предполагаемую общую пропускную способность, например:
ВМ1: 50 Мбит/с
ВМ2: 120 Мбит/с
ВМ3: 300 Мбит/с
-------------------
Общая пиковая: 470 Мбит/с
  1. заложить резерв рекомендациями: добавлять минимум 25–50% на рост нагрузки и bursts. Например резерв с запасом: 470 Мбит/с * 1.25 = 590 Мбит/с.
  2. назначить ресурсы. В соответствии с таблицей 2 для ~600 Мбит/с выбирается конфигурация: 2 vCPU и 2 ГБ RAM.