Назад | Перейти на главную страницу

Совместное использование статуса соединения между несколькими HAProxy

Мне нужно обновить нашу текущую инфраструктуру, основанную на одном сервере, до многосерверной. В основном мы запускаем HTTP-приложение, MySQL и другие службы.

Моя идея - поставить HAProxy на все серверы, чтобы они могли самостоятельно балансировать / переключаться.

Что-то вроде этого:

        WAN
    |         |
|------|  |------|
| HAP1 |  | HAP2 |      HAProxy servers 
|------|  |------|
   \         /
    ----X----
   /         \
|------|  |------|
| NGX1 |  | NGX2 |      Nginx webservers
|------|  |------|

Идея состоит в том, чтобы настроить общедоступное имя хоста с циклическим DNS, указывающим на серверы HAP, которые затем будут балансировать с веб-серверами.

Чтобы иметь не полностью случайный баланс Я хочу использовать минимум алгоритм, но тут возникает проблема: Могут ли серверы HAP обмениваться данными друг с другом о том, как они балансируют входящие соединения? Я бы хотел, чтобы оба сервера не считали, что серверная часть выгружена из-за восходящего циклического перебора.

РЕДАКТИРОВАТЬ: Я бы хотел избежать использования оставайся живым и виртуальный IP-адрес, совместно используемый двумя HAP, поскольку серверы будут находиться в разных центрах обработки данных.

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

Учитывая, что вас беспокоит нагрузка на бэкэнд-серверы как средство для принятия решения, какой из них выбрать, вполне естественно, что вам следует обратиться к ним, чтобы выяснить, сколько трафика отправить.

К счастью, в HAProxy есть несколько директив для этого: agent-check, agent-port.
я полагаю weight и agent-inter также должны быть включены, так как они тоже имеют здесь некоторый эффект.

Это позволяет запускать службу на каждом внутреннем сервере, которая будет отвечать строкой, как указано в документы, что повлияет на вес сервера.

Агент может проверять практически все (ЦП, память, сеть, зависимые службы, время суток, погоду), если он возвращает разумные значения, которые HAProxy может использовать и понимать.