Балансировка нагрузки#
Обзор функций и примеры настройки#
Обзор функции балансировки нагрузки#
В данном разделе рассматриваются общие вопросы по использованию функции балансировки нагрузки в системе Numa Edge.
Описание механизма балансировки нагрузки#
Numa Edge поддерживает функцию балансировки нагрузки по нескольким каналам как для транзитного (проходящего), так и для локального трафика, используя таблицы маршрутизации. Балансировка нагрузки обеспечивает избыточность по путям на случай неработоспособности маршрутов отдельно взятой таблицы маршрутизации. Описываемая функция является качественным дополнением к функциям политик маршрутизации, в частности она выполняет задачи по динамическому управлению балансировкой нагрузки основываясь на контроле доступности таблиц маршрутизации.
Таблица маршрутизации рассматривается как работоспособная при условии успешного прохождения соответствующих проверок. Для каждой таблицы маршрутизации должен быть сконфигурирован критерий исправности, который включает в себя число неудачных проверок работоспособности, после которого таблица маршрутизации объявляется неработоспособной, и число удачных проверок, необходимых для объявления о восстановлении работоспособности таблицы маршрутизации.
Если для проверки работоспособности настраивается несколько целевых адресов, то администратор получает возможность не полагаться на один целевой узел, который может не отвечать на запросы по причинам, отличным от сбоя пути. Проверка по нескольким целям будет выполняться до тех пор, пока проверка не закончится успешно или список проверок не будет исчерпан. В одном тесте можно указать только один целевой узел. Для того чтобы использовать несколько целевых узлов, необходимо создать соответствующее количество тестов.
Процесс балансировки нагрузки автоматически устанавливает маршруты, настроенные администратором для каждого пути, и осуществляет балансировку трафика в соответствии с работоспособностью путей и весами, примененными к каждой таблице маршрутизации. Пути, установленные в таблицах маршрутизации, можно вывести командой routing table show <имя_таблицы> route
.
Правила балансировки нагрузки#
Балансировка нагрузки настраивается в качестве упорядоченного набора правил, в которых указываются род трафика (определенного фильтром) подлежащего балансировке, набор таблиц маршрутизации и их относительные веса.
Каждое правило содержит набор критериев соответствия и набор таблиц маршрутизации с назначенными весами. Правила балансировки нагрузки нумеруются и исполняются в соответствующем порядке.
Следует учесть, что в настроенном правиле балансировки нагрузки номер является неизменяемым идентификатором. Для изменения номера правила, его следует удалить и создать заново с новым номером.
По этой причине рекомендуется назначать правилам балансировки нагрузки номера, оставляя пустые интервалы. Например, можно создать набор правил балансировки нагрузки с номерами 10, 20, 30 и т.д. Таким образом, в случае необходимости добавления еще одного правила в конкретном месте в текущей последовательности правил, это будет возможно сделать без удаления текущего набора правил.
Для создания или изменения правила балансировки нагрузки используются команды set и узел конфигурации policy route с указанием имени правила балансировки нагрузки.
Проверка работоспособности таблиц маршрутизации#
Таблица маршрутизации, участвующая в балансировке нагрузки, считается активным членом пула до тех пор, пока она проходит проверки работоспособности. Наблюдение за работоспособностью таблицы маршрутизации осуществляется путем отправки сообщений эхо-запроса ICMP («пинга») на удаленную точку назначения через некоторый интервал времени. В случае успешного ответа от точки назначения, таблица маршрутизации признается прошедшей тест на проверку работоспособности. В случае сбоя проверки работоспособности, таблица маршрутизации удаляется из пула активных таблиц маршрутизации.
Примечание
Также существует проверка на основе времени жизни (ttl), при которой на целевой адрес отправляется пакет UDP с ограничением ttl.
Когда сбойная таблица маршрутизации восстанавливает работоспособность, она вновь добавляется к списку активных членов пула, чтобы система балансировки нагрузки смогла ее использовать. Система определяет работоспособность пути с помощью периодической проверки работоспособности опросом удаленной цели или нескольких целей.
Настройка проверки работоспособности таблиц маршрутизации состоит из следующих элементов:
- Допустимое число сбоев проверок работоспособности, после которых таблица маршрутизации считается неработоспособной. Используется команда
load-balancing table-health <имя_таблицы> failure-count <число>
. - Определение теста работоспособности таблицы маршрутизации. Используется команда
load-balancing table-health <имя_таблицы> test <номер_теста>
. - Максимальное время ожидания ответа на сообщение эхо-запроса, которое можно считать удачным выполнением проверки. Используется команда
load-balancing table-health <имя_таблицы> test <номер_теста> resp-time <секунды>
.- Указание целевого узла для проверки работоспособности. Используется команда
load-balancing table-health <имя_таблицы> test <номер_теста> target <узел>
. - Указание ограничения числа транзитных участков для теста типа tll. Используется команда
load-balancing table-health <имя_таблицы> test <номер_теста> ttl-limit <ограничение>
. - Указание типа теста для проверки работоспособности таблицы маршрутизации (ping, либо ttl). Используется команда
load-balancing table-health <имя_таблицы> test <номер_теста> type <тип>
. - Установка количества последовательных успешных проверок работоспособности таблицы маршрутизации. Используется команда
load-balancing table-health <имя_таблицы> success-count <число>
.
Этапы настройки балансировки нагрузки#
Балансировка нагрузки настраивается в 2 этапа:
- Настройка политик для обеспечения балансировки нагрузки на интерфейсы через нужную таблицу маршрутизации.
- Определение цели (или целей), достижимых с каждой таблицы маршрутизации, участвующей в балансировке нагрузки. Цель используется службой проверки работоспособности таблиц маршрутизации для определения доступности проверяемой таблицы.
Примеры настройки#
Базовая настройка балансировки нагрузки#
В текущем примере описана базовая настройка балансировки нагрузки. Свойства приведенной настройки:
- балансировка всего трафика, входящего на маршрутизатор Edge через интерфейс eth1, и преобразование адресов отправителей (SNAT) осуществляются на интерфейсах eth2 и eth3;
- проверка таблиц маршрутизации Gateway_ISP1 и Gateway_ISP2 на работоспособность осуществляется путем отправки эхо-запросов на удаленные цели (в примере используются следующие удаленные цели: 192.0.2.1, 192.0.2.2, 192.0.2.3 и 192.0.2.4);
- таблица маршрутизации Gateway_ISP1 удаляется из пула активных таблиц маршрутизации после трех последовательных сбоев эхо-запроса, а таблица маршрутизации Gateway_ISP2 — после пяти последовательных сбоев.
Пример базовой настройки балансировки нагрузки приведен на рисунке ниже.
В примере ниже приведена настройка SNAT, создание политики балансировки нагрузки и маршрутов по умолчанию к двум поставщикам услуг доступа к сети Интернет (198.51.100.254 и 203.0.113.126), между которыми будет выполняться балансировка нагрузки.
Пример - Настройка SNAT, создание политики балансировки нагрузки и маршрутов по умолчанию#
- Создание правила 10, преобразующего сетевой адрес отправителя (SNAT):
- Применение правила 10 к пакетам, которые были отправлены любым узлом сети 192.168.10.0/24:
- Применение правила 10 к пакетам, для которых исходящим интерфейсом является eth2:
- Создание правила 20, преобразующего сетевой адрес отправителя (SNAT):
- Применение правила 20 к пакетам, которые были отправлены любым узлом сети 192.168.10.0/24:
- Применение правила 20 к пакетам, для которых исходящим интерфейсом является eth3:
- Фиксация настройки:
- Отображение настройки преобразования сетевого адреса отправителя (SNAT):
- Добавление маршрута по умолчания в таблицу маршрутизации Gateway_ISP1:
- Добавление маршрута по умолчания в таблицу маршрутизации Gateway_ISP2:
- Фиксация настройки:
- Отображение настройки маршрутов по умолчанию:
- Создание политики балансировки нагрузки Policy_flow_balancing:
- Добавление таблицы маршрутизации Gateway_ISP1 в политику балансировки нагрузки Policy_flow_balancing:
- Добавление таблицы маршрутизации Gateway_ISP2 в политику балансировки нагрузки Policy_flow_balancing:
- Фиксация настройки:
- Отображение настройки политики балансировки нагрузки:
В примере ниже приведена настройка базовой балансировки нагрузки с указанием типа проверки и целей эхо-запроса.
Пример - Настройка базовой балансировки нагрузки#
- Установка значения счетчика сбоев для таблицы маршрутизации Gateway_ISP1 равного 3 (три последовательных сбоя эхо-запроса к удаленным целям):
- Установка типа проверки ping для первой цели эхо-запроса для Gateway_ISP1:
- Указание в качестве первой цели эхо-запроса ip-адреса 192.0.2.1 для Gateway_ISP1:
- Установка типа проверки ping для второй цели эхо-запроса для Gateway_ISP1:
- Указание в качестве второй цели эхо-запроса ip-адреса 192.0.2.2 для Gateway_ISP1:
- Установка значения счетчика сбоев для таблицы маршрутизации Gateway_ISP2 равного 5 (пять последовательных сбоев эхо-запроса к удаленным целям):
- Установка типа проверки ping для первой цели эхо-запроса для Gateway_ISP2:
- Указание в качестве первой цели эхо-запроса ip-адреса 192.0.2.3 для Gateway_ISP2:
- Установка типа проверки ping для второй цели эхо-запроса для Gateway_ISP2:
- Указание в качестве второй цели эхо-запроса ip-адреса 192.0.2.4 для Gateway_ISP2:
- Применение политики балансировки нагрузки для входящего трафика на интерфейсе eth1:
- Фиксация настройки:
- Отображение настройки балансировки нагрузки:
Использование весов в таблицах маршрутизации#
Балансировка нагрузки с учетом весов таблиц маршрутизации выполняется с помощью алгоритма взвешенного случайного распределения. Если веса не назначены, шансы каждой таблицы маршрутизации быть выбранной равны. Если у таблицы маршрутизации больший вес, то в среднем она будет выбрана чаще. Например, если у таблицы маршрутизации Gateway_ISP1 вес 2, а у таблицы маршрутизации Gateway_ISP2 вес 3, таблица маршрутизации Gateway_ISP2 будет выбрана в среднем в 60% случаев.
Данный пример является продолжением вышеприведенных примеров. Для таблиц маршрутизации Gateway_ISP1 и Gateway_ISP2 в правиле 10 политики балансировки нагрузки Policy_flow_balancing указываются веса 20 и 30, соответственно. Для использования весов в таблицах маршрутизации необходимо выполнить следующие действия в режиме настройки:
Пример - Настройка использования весов в таблицах маршрутизации#
- Указание веса 20 для таблицы маршрутизации Gateway_ISP1 в политике балансировки нагрузки Policy_flow_balancing:
- Указание веса 30 для таблицы маршрутизации Gateway_ISP2 в политике балансировки нагрузки Policy_flow_balancing:
- Фиксация настройки:
- Отображение настройки политики балансировки нагрузки:
Переход на резервную таблицу маршрутизации при неработоспособности остальных таблиц маршрутизации#
Данный пример является продолжением примера выше, с учетом добавления резервной таблицы маршрутизации. В предыдущем примере система была настроена на балансировку нагрузки с использованием весов таблиц маршрутизации Gateway_ISP1 и Gateway_ISP2.
В примере ниже в политику балансировки нагрузки Policy_flow_balancing добавляется таблица маршрутизации Gateway_ISP3, которая будет использоваться только в случае неработоспособности маршрутов остальных таблиц маршрутизации, причем трафик, входящий на маршрутизатор Edge через интерфейс eth1, будет передаваться через интерфейс eth4, на котором будет проходить преобразование адресов отправителей (SNAT).
В качестве резервного канала будет использоваться третий поставщик услуг доступа к сети Интернет (203.0.113.254).
Пример настройки балансировки нагрузки с резервным каналом приведен на рисунке ниже.
Для настройки использования резервной таблицы маршрутизации необходимо выполнить следующие действия в режиме настройки:
Пример - Настройка использования резервной таблицы при неработоспособности остальных таблиц маршрутизации#
- Создание правила 30, преобразующего сетевой адрес отправителя (SNAT):
- Применение правила 30 к пакетам, которые были отправлены любым узлом сети 192.168.10.0/24:
- Применение правила 30 к пакетам, для которых исходящим интерфейсом является eth4:
- Фиксация настройки:
- Отображение настройки преобразования сетевого адреса отправителя (SNAT) для правила 30:
- Добавление маршрута по умолчания в таблицу маршрутизации Gateway_ISP3:
- Добавление таблицы маршрутизации Gateway_ISP3 в политику балансировки нагрузки Policy_flow_balancing в качестве резервной таблицы маршрутизации:
- Фиксация настройки:
- Отображение настройки правила 10 политики балансировки нагрузки Policy_flow_balancing: