Есть ли какой-либо алгоритм балансировки нагрузки HAProxy, который направляет соединения только на один сервер? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть три сервера (службы MariaDB) и один сервер HAProxy перед ними, и HAProxy распределяет соединения с этими серверами с помощью roundrobin. Но я хочу, чтобы сервер HAProxy маршрутизировал все подключения на server1. Если server1 недоступен, он должен маршрутизироваться на server2 .. Есть ли какой-либо алгоритм балансировки нагрузки, который делает это возможным?

1 Ответ

2 голосов
/ 10 июля 2020

Вероятно, вы ищете конфигурацию аварийного переключения / резервного копирования, подробнее см. Здесь (https://www.haproxy.com/blog/failover-and-worst-case-management-with-haproxy/), это базовый c пример:

backend mysql
    mode tcp
    balance leastconn
    server s1 10.0.0.1:3306 check 
    server s2 10.0.0.2:3306 check backup
    server s3 10.0.0.3:3306 check backup

Из документов HAProxy :

резервное копирование

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

Если ваши серверы принадлежат кластеру galera, вы можете попробовать что-нибудь httpwsrep :

backend mysql
    mode tcp
    option httpchk
    default-server check port 9200
    server s1 10.0.0.1:3306 
    server s2 10.0.0.2:3306
    server s3 10.0.0.3:3306 
    
...