Балансировщик RX@Etersoft

Материал из База знаний Etersoft
Перейти к навигацииПерейти к поиску

Принцип работы

Балансировщик RX@Etersoft позволяет распределить нагрузку по обслуживанию клиентов на несколько серверов. В данном случае основной сервер, который производит балансировку, по заданному алгоритму определяет вторичный сервер. Алгоритмы могут выбирать сервера по нагрузке, по циклическому списку или случайно. Перед подключением, основной сервер записывает себе информацию о сессии, в том числе и к какому вторичному серверу принадлежит каждая сессия. Дальше он, с помощью nxnode-login, соединятся с вторичным сервером и поддерживает с ним связь по ssh. Поэтому при обрыве, основной сервер некоторое время ждет, пока связь не восстановится, иначе клиенту предлагается завершить сессию. Если связь восстановилась, то работа идет дальше, как ни в чем не бывало.

Аналогично и с падением основного сервера. Поскольку трафик идет через него, то клиентское приложение, на время обрыва, подвисает. Если связь не восстановится по истечении определенного времени, клиенту предлагается завершить сессию. Если связь успела восстановиться, то приложение работает дальше.

Включение балансировки

Для начала необходимо сгенерировать ключи, с помощью которых будет происходит общение между основным и вторичными серверами. На основном сервере выполняем команду:

# nxsetup --generate-admin-keys

В случае, если все прошло успешно, в текущей директории вы увидите файл nxadmin.id_dsa.key.pub. Скопируйте его на вторичные сервера и там же выполните:

# nxsetup --setup-slave-key=/путь/до/nxadmin.id_dsa.key.pub

В случае успеха, вы увидите сообщение:

The key has been successfully installed.

Теперь на тех же вторичных серверах нам надо выполнить еще одну команду. А именно переименовать скрипт расчета нагрузки. Выполняем команду:

# mv /usr/bin/nxcheckload.sample /usr/bin/nxcheckload


Теперь осталось добавить всего несколько значений в файл конфигурации, и балансировка начнет работать! Откройте на основном сервере указанный файл:

/etc/nxserver/node.conf.d/04-forwarding.conf

Раскомментируйте и выставьте два параметра:

  • LOAD_BALANCE_SERVERS

Строка, в которой, через пробел, заданы сервера, участвующие в балансировке.


  • LOAD_BALANCE_ALGORITHM

Строка, задающая алгоритм балансировки. Может иметь одно из трех значений:


1. load

Для этого режима, каждый сервер вызывает скрипт nxcheckload, который возвращает текущее значение нагрузки. По умолчанию, скрипт считает нагрузку в виде суммы средней нагрузки на процессор, свободной памяти, произведении мощности ядер на их количество и, наконец, числу запущенных X сессий. Т.о. будет выбран тот сервер, значение nxcheckload которого будет наименьшим.


2. round-robin

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


3. random

Логика поведения аналогична алгоритму load. Только в данном случае каждый сервер вернет случайное значение нагрузки.


Сохраняем файл и наслаждаемся результатом.