Korzystając z HAProxy, próbuję (TCP) załadować saldo Rserve (usługa nasłuchująca w gnieździe TCP do wywoływania skryptów R) działającą na porcie 6311 w 2 węzłach.HAProxy Loadbalancing Ruch TCP
Poniżej znajduje się mój plik konfiguracyjny. Kiedy uruchamiam HAProxy, jego statystyka bez żadnych problemów. Ale kiedy podłączam się do zrównoważonych węzłów, dostaję się poniżej błędu. Coś nie tak z konfiguracją?
Handshake failed: expected 32 bytes header, got -1
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode tcp
log global
option httplog
option dontlognull
option http-server-close
#option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen haproxy_rserve
bind *:81
mode tcp
option tcplog
timeout client 10800s
timeout server 10800s
balance leastconn
server rserve1 rserveHostName1:6311
server rserve2 rserveHostName2:6311
listen stats proxyHostName:8080
mode http
stats enable
stats realm Haproxy\ Statistics
stats uri /haproxy_stats
stats hide-version
stats auth admin:password
Próbowałem z poniżej frontend-backend sposób równoważenia, jak również. Ten sam wynik.
frontend haproxy_rserve
bind *:81
mode tcp
option tcplog
timeout client 10800s
default_backend rserve
backend rserve
mode tcp
option tcplog
balance leastconn
timeout server 10800s
server rserve1 rserveHostName1:6311
server rserve2 rserveHostName2:6311
Witam - jest to bardzo interesujące. dlaczego nie używasz nginx? ponieważ większość z nas używa nginx, fajnie byłoby zobaczyć tam rozwiązanie. Zauważ, że nginx obsługuje tcp (używając strumienia i/lub protokołu proxy). – Sandeep
@ Nie zostawiaj żadnego konkretnego powodu, aby nie używać nginx. Znaleziony haproxy jest przeznaczony wyłącznie do odwrotnego proxy i działa dobrze przez dziesięciolecia i nie potrzebowałbym niczego innego, co oferuje nginx (np. Serwer WWW). Tak. możemy użyć tylko części odwrotnego proxy. Ale właśnie załatwiłem się z haproxy. – Anand
@Sandeep Oto implementacja nginx przykładu równoważenia obciążenia TCP. https://www.nginx.com/resources/admin-guide/tcp-load-balancing/ – Anand