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

Балансировка нагрузки для всей подсети

Можно ли настроить HaProxy для балансировки трафика для всей подсети. Я пробовал 192.168.50.0/24, но HaProxy выдает ошибку. Это для облачной среды, поэтому, если мой сервер масштабируется, мне не нужно вручную перенастраивать HaProxy и перезапускать службу.

Моя конфигурация:

listen Cluster_3300
    bind *:3300
    mode tcp
    timeout client  10800s
    timeout server  10800s
    balance leastconn
    option httpchk
    option allbackups
    default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 1424 maxqueue 10000 weight 100
    server app1 192.168.51.11:3306 check
    server app2 192.168.51.13:3306 check
    server app3 192.168.51.12:3306 check

Итак, эти последние 3 строки жестко запрограммированы, можно ли включить все виртуальные машины подсети?

Это невозможно и не имеет большого смысла опрашивать всю сеть, чтобы узнать, существует ли сервер или отвечает.

Вы можете использовать IP-адреса или имена хостов, но они будут разрешены при запуске.

Вы должны добавить некоторую логику в масштаб вашего облака, чтобы добавить новый сервер в балансировщик нагрузки haproxy.

Из Документация HAProxy

server <name> <address>[:[port]] [param*]
Declare a server in a backend

это внутреннее имя, присвоенное этому серверу. Это имя будет отображаться в журналах и предупреждениях. Если установлен «http-send-name-header», он будет добавлен в заголовок запроса, отправляемого на сервер.

- это IPv4- или IPv6-адрес сервера. В качестве альтернативы поддерживается разрешаемое имя хоста, но это имя будет разрешено во время запуска. Адрес «0.0.0.0» или «*» имеет особое значение. Это означает, что соединение будет перенаправлено на тот же IP-адрес, что и адрес клиентского соединения. Это полезно в архитектурах прозрачных прокси, где соединение клиента перехватывается, и haproxy должен перенаправить на исходный адрес назначения. Это примерно то же самое, что и ключевое слово "transparent", за исключением того, что с помощью сервера можно ограничивать параллелизм и сообщать статистику. По желанию, префикс семейства адресов может использоваться перед адресом, чтобы принудительно использовать семейство независимо от формата адреса, что может быть полезно для указания пути к сокету unix без косой черты ('/'). В настоящее время поддерживаются следующие префиксы: - 'ipv4 @' -> адрес всегда IPv4 - 'ipv6 @' -> адрес всегда IPv6 - 'unix @' -> адрес - это путь к локальному сокету unix - 'abns @' -> адрес находится в абстрактном пространстве имен (только Linux) Вы можете указать некоторые переменные среды в параметре адреса, см. раздел 2.3 о переменных среды. Параметр "init-addr" может использоваться для изменения способа разрешения IP-адресов при запуске.

- необязательная спецификация порта. Если установлено, все соединения будут отправляться на этот порт. Если не задан, будет использоваться тот же порт, к которому подключился клиент. Порт также может иметь префикс «+» или «-». В этом случае порт сервера будет определяться добавлением этого значения к порту клиента.

это список параметров для этого сервера. Ключевые слова «сервер» допускают большое количество опций и имеют целый раздел, посвященный им. Пожалуйста, обратитесь к разделу 5 для получения более подробной информации.

Примеры :

первый сервер 10.1.1.1:1080 cookie первая проверка между 1000 сервером второй 10.1.1.2:1080 cookie вторая проверка между 1000 сервером transp ipv4 @ резервное копирование сервера "$ {SRV_BACKUP}: 1080" резервный сервер www1_dc1 "$ {LAN_DC1} .101: 80 "сервер www1_dc2" $ {LAN_DC2} .101: 80 "