Как выполнить tcp балансировку нагрузки в активном / пассивном режиме с более чем 2 серверами? - PullRequest
0 голосов
/ 27 июня 2018

В моем случае мне нужно настроить балансировщик нагрузки, который может быть nginx или что-то вроде того, который поддерживает балансировку нагрузки TCP, которая будет подключена к моей бэкэнд-службе.

Я хочу сделать это активным / пассивным способом. У меня может быть 5 экземпляров балансировщиков нагрузки в docker env и 5 экземпляров бэкэнд-службы, скажем, NFS (возможно, не в docker env).

Теперь я хочу, чтобы мой lb1 (балансировщик нагрузки 1) направлял запрос только на nfs1, если он не работает, а затем направляет запрос на nfs2 или nfs3 и так далее.

lb1 ----- nfs1
lb2 ----- nfs2
:
:
lb5 ----- nfs5

Я пробовал это с nginx, но он поддерживает только 2 сервера в активном / пассивном режиме с ключевым словом резервного копирования.

    events {
    worker_connections  1024;
  }

   stream {
    upstream stream_backend {
        server 172.17.0.5:2049;
        server 172.17.0.7:2049 backup;
    }

    server {
        listen 80;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass stream_backend;
    }
}

Любая помощь будет отличной.

1 Ответ

0 голосов
/ 27 июня 2018

С помощью Haproxy удалось решить мою проблему.

defaults
    mode tcp

frontend haproxy
    bind *:80
    mode tcp
    timeout client  1s
    default_backend nfs


backend nfs
    mode tcp
    timeout connect 1s
    timeout server 1s
    server nfs1 172.17.0.7:2049 check
    server nfs2 172.17.0.5:2049 check backup
    server nfs3 172.17.0.8:2049 check backup

кредитов: https://www.haproxy.com/blog/failover-and-worst-case-management-with-haproxy/

...