Registrierung
leer
leer
newposts
Users
search
FAQ
Login
Start

Hallo Gast, und Willkommen im Forum. Sie müssen sich einloggen oder registrieren, um alle Funktionen nutzen zu können.


PN's Forum \ Computer \ Software \ Betriebssysteme \ Linux \ Konfiguration eines dedizierten Loadbalancers mit Debian


 Poison Nuke  *

#1 Verfasst am 05.04.2011, um 22:11:00



Dies ist ein Quickstart-Tutorial, um einen Cluster mit dediziertem Loadbalancer ein zu richten.


Dieses Tutorial beschränkt sich auf einen Cluster mit einer beliebigen Anzahl von Webslaves. Dieses Tutorial geht nicht auf die Konfiguration der Webslaves ein. Es wird davon ausgegangen, dass diese bereits die virtuelle IP konfiguriert haben (im Falle von Windows: http://forum.poisonnuke.de/index.php?action=ViewThread&TID=6395, bei Linux entsprechend einfach über lo:0 ) und dass diese über einen zentralen SAN Storage (NFS, iSCSI mit ClusterFS) alle den selben Daten und Konfigurationsbestand haben.



Konfiguration der virtuellen IP
diese einfach als normales Interface anlegen, denn der Loadbalancer muss über diese erreichbar sein. Es kann an sich auch die primäre IP des Loadbalancers sein.

Das ganze läuft im Endeffekt so, dass ein Programm auf dem entsprechenden Port lauscht und dann die dort reinkommenden Anfragen weiterleitet an die eigentlichen IPs. Es muss also nichts am Routing oder so eingestellt oder geändert werden.



Installation der nötigen Dienste

Quellcode
apt-get install keepalived ipvsadm


ipvsadm:
ist die eigentlich zentrale Komponente. Dieser Dienst lauscht auf dem entsprechenden Port der virtuellen IP und leitet Anfragen an die eingestellen Slaves weiter.

Keepalived:
Dieser Deamon überwacht die eigentlichen Slaves. Er prüft in einem eingestellten Intervall (Sekundentakt normalerweise), ob die Slaves noch online sind. Sollte einer ausfallen, dann teilt er dies dem ipvsadm mit und entfernt damit die Weiterleitung für diesen Slave. Sollte der wieder online kommen, wird er von ipvsadm wieder angesteuert.




Konfiguration von ipvsadm

Dazu ein Startscript anlegen, welches automatisch gestartet wird. Wenn man sonst nicht viel weiteres startet, kann man es auch direkt in der

Quellcode
/etc/rc.local
eintragen


Folgende Konfiguration ist nötig:

Quellcode
#Routing deaktivieren, sollte es aktiv sein
echo "0" >/proc/sys/net/ipv4/ip_forward

#Loadbalancer soll aber weiterhin auf ICMP Echos antworten
echo 'setting icmp redirects (1 on, 0 off) '
echo "1" >/proc/sys/net/ipv4/conf/all/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/default/send_redirects
echo "1" >/proc/sys/net/ipv4/conf/eth0/send_redirects


#die eigentliche Konfigurtion
#zuerst die Routingeinträge entfernen, sollte noch was drin sein
/sbin/ipvsadm -C

#jetzt die eigentlichen virtuelle IP hinzufügen
/sbin/ipvsadm -A -t x.x.x.x:http -s rr

#dies sind die IPs der Webslaves. Zuerst wird die virtuelle IP angegeben und danach die IP des Slaves:
/sbin/ipvsadm -a -t x.x.x.x:http -r y.y.y.y -g -w 1
/sbin/ipvsadm -a -t x.x.x.x:http -r z.z.z.z -g -w 1






Konfiguration von keepalived

Hierzu muss folgende Datei erstellt werden:


Quellcode
touch /etc/keepalived/keepalived.conf



und mit folgendem Inhalt befüllt werden:


Quellcode
rrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        x.x.x.x
    }
}

virtual_server x.x.x.x 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server y.y.y.y 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }

    real_server z.z.z.z 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
        }
    }

}





greetz
Poison Nuke

bearbeitet von Poison Nuke, am 05.04.2011, um: 22:15:30

PN's Forum \ Computer \ Software \ Betriebssysteme \ Linux \ Konfiguration eines dedizierten Loadbalancers mit Debian


- Zurück zur Homepage - Eigene Beiträge - Neue Beiträge - Wer ist online? - Impressum - Datenschutz - Statistiken -



Board coded and provided by: Poison Nuke
Copyright 2007-2014, Robert Menger