it-swarm.com.de

HAProxy Loadbalancing TCP Verkehr

Unter Verwendung von HAProxy versuche ich, Rserve (einen Dienst, der auf TCP Socket zum Aufrufen von R-Skripten) lauscht) auf Port 6311 in 2 Knoten (TCP) auszugleichen.

Unten ist meine Konfigurationsdatei. Wenn ich HAProxy starte, läuft es ohne Probleme. Aber wenn ich mich mit den Balanced Nodes verbinde, wird der Fehler unterschritten. Stimmt etwas mit der Konfiguration nicht?

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

Versucht mit unter Frontend-Backend-Art des Balancierens. Gleiches Ergebnis.

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 
8
Anand

Nachdem wir uns eine Woche lang um eine Lösung für Load Balance R gekämpft hatten, funktionierte die folgende Lösung (Full Free/Open Source Software Stack).

Wenn mehr Leute darauf verweisen, werde ich einen detaillierten Blog über die Installation und Konfiguration veröffentlichen.

Konnte R-Skriptanforderungen, die über HAProxy TCP Load Balancer) an Rserve gesendet wurden, mit der folgenden Konfiguration ausgleichen. Sie ähnelt der Konfiguration im fraglichen Abschnitt, ist jedoch von Frontend und Backend getrennt.

#Load balancer stats page access at hostname:8080/haproxy_stats
listen stats <load_balancer_hostname>:8080
    mode http
    log global
    stats enable
    stats realm Haproxy\ Statistics 
    stats uri /haproxy_stats
    stats hide-version
    stats auth admin:[email protected]

frontend rserve_frontend
    bind *:81
    mode tcp
    option tcplog
    timeout client  1m
    default_backend rserve_backend

backend rserve_backend
    mode tcp
    option tcplog
    option log-health-checks
    option redispatch
    log global
    balance roundrobin
    timeout connect 10s
    timeout server 1m   
    server rserve1 <rserve hostname1>:6311 check
    server rserve2 <rserve hostname2>:6311 check
    server rserve2 <rserve hostname3>:6311 check

Wichtig ist, Remote-Verbindungen für HAproxy mit dem folgenden Befehl zu aktivieren (NO clear doc in den meisten Fällen

/usr/sbin/setsebool -P haproxy_connect_any 1

Stellen Sie außerdem sicher, dass Remoteverbindungen in Rserve mit dem Parameter "enable remote" in der Rserve-Konfigurationsdatei aktiviert sind.

17
Anand