HAProxy (podobnie jak wiele modułów równoważących obciążenie) zazwyczaj utrzymuje dwie rozmowy. Serwer proxy ma sesję (w tym przypadku tcp) z klientem i kolejną sesję z serwerem. Dlatego w przypadku serwerów proxy widzisz 2x połączenia w module równoważenia obciążenia. Dlatego cały ruch przepływa przez moduł równoważenia obciążenia.
Jeśli chodzi o skalowanie w wielu modułach równoważenia obciążenia, nie sądzę, że musisz. Ale praktycznym i dość łatwym sposobem na to jest użycie czegoś takiego jak keepalived z dwoma zmiennymi adresami IP i okrągłym DNS robin pomiędzy tymi dwoma adresami IP. Dzięki Keepalived, jeśli jeden z równoważników obciążenia ulegnie awarii, drugi utrzyma oba adresy IP, dzięki czemu uzyskasz wysoką dostępność w ten sposób. To powiedziawszy, myślę, że będzie dobrze z jednym aktywnym wystąpieniem haproxy z obciążeniem.
HAProxy skaluje się bardzo dobrze. Przykładem sieci Stack Exchange są gniazda sieciowe, które utrzymują otwarte połączenia TCP. Podczas, gdy to piszę, mamy 143 000 ustalonych gniazd TCP na maszynie wirtualnej VMware bez żadnych problemów. Zużycie procesora na maszynie wirtualnej wynosi około 7%.
Przy takiej konfiguracji z HAProxy upewnij się, że ustawiłeś maxconn
wystarczająco wysoką wartość . Oto kilka przykładów konfiguracji HAProxy na początek:
frontend fe_websockets
bind 123.123.123.123:80
mode tcp
log global
option tcplog
timeout client 3600s
backlog 4096
maxconn 50000
default_backend be_nywebsockets
backend be_nywebsockets
mode tcp
option log-health-checks
option redispatch
option tcplog
balance roundrobin
server web1 10.0.0.1:1234
server web2 10.0.0.2:1234
timeout connect 1s
timeout queue 5s
timeout server 3600s
Tak, cały ruch powinien zwykle przechodzić przez moduł równoważenia obciążenia. Żądania są odbierane przez moduł równoważenia obciążenia, a odpowiedzi są wysyłane z powrotem do modułu równoważenia obciążenia, który odsyła je z powrotem do klientów.
Przy wyborze odpowiedniego narzędzia nie mam dużego doświadczenia w zakresie innych opcji. Używam haproxy i jest naprawdę dobry i stabilny i może obsłużyć duży ruch. Ponadto jego możliwości ACL są świetne.
źródło
Istnieje możliwość użycia i skonfigurowania DSR (Direct Server Return), ale nie ma to nic wspólnego z Loadbalancer, ale jest skonfigurowane na stosie tcp (tabele routingu). Używaliśmy tego w dużym portalu do przesyłania strumieniowego wideo. Chociaż działa, spowoduje znaczny ból głowy związany z koniecznością złożoności routingu.
Dlatego nie zalecałbym używania tej techniki bez bardzo dokładnego rozważenia zastosowania i wad.
Być może są jakieś wskazówki, aby zacząć:
Baw się dobrze!
źródło