Der ditte Teil der Artikelreihe: Hochverfügbarkeit und Lastverteilung mit keepalived und ipvsadm unter Debian GNU/Linux

Konfiguration des Nodes (Teil 2/3)

4. Block – Virtuelle Server

Für die vorher definierten virtuellen IP-Adressen müssen jetzt noch die Cluster-Resourcen hinterlegt werden.

virtual_server 198.19.253.1 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 198.19.253.7 80 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http 198.19.253.7 80“
misc_timeout 10
}
}

real_server 198.19.253.8 80 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http 198.19.253.8 80“
misc_timeout 10
}
}
}

virtual_server 198.19.254.1 443 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 198.19.254.7 443 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http 198.19.254.7 443“
misc_timeout 10
}
}

real_server 198.19.254.8 443 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http 198.19.254.8 443“
misc_timeout 10
}
}
}

virtual_server 2a00:e10:1000:7:124:0:0:a1 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 2a00:e10:1000:7:124::a7 80 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http [2a00:e10:1000:7:124::a7] 80“
misc_timeout 10
}
}

real_server 2a00:e10:1000:7:124::a8 80 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http [2a00:e10:1000:7:124::a8] 80“
misc_timeout 10
}
}
}

virtual_server 2a00:e10:1000:7:124:0:0:b1 443 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 2a00:e10:1000:7:124::b7 443 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http [2a00:e10:1000:7:124::b7] 443“
misc_timeout 10
}
}

real_server 2a00:e10:1000:7:124::b8 443 {
weight 1
MISC_CHECK {
misc_path „/usr/local/bin/keepalived_check_http [2a00:e10:1000:7:124::b8] 443“
misc_timeout 10
}
}
}

Jeder virtuelle Server muss mind. über einen realen Server als Resource verfügen. Im Beispiel sind immer zwei Ziele vorhanden. Die Zuteilung der Verbindungen (lg_algo) kann über verschiedene Algorithmen (rr|wrr|lc|wlc) erfolgen. Als Weiterleitungsmethode (lb_kind) wurde Direct Routing gewählt. Alternative Methoden sind NAT oder TUN. Da es ja vorkommen kann, dass ein Zielhost (real_server) nicht erreichbar ist, muss eine Überprüfung der Verfügbarkeit erfolgen. Für die Überprüfung der Verfügbarkeit habe ich mir ein kleines Bash-Skript (/usr/local/bin/keepalived_check_http) gebaut. Dieses ruft kontinuierlich eine spezielle Webseite auf dem Zielhost auf. Enthält die Webseite ein bestimmtes Schlagwort, wird der Host als aktiv eingestuft. Ist dieses Schlagwort nicht vorhanden oder liefert überhaupt keine Rückmeldung, wird der Host als inaktiv eingestuft. Ist ein Zielserver nicht erreichbar, wird dieser im Routing deaktiviert und er bekommt keine Verbindungen mehr zugeteilt.

Was denkst du?


Zustimmung zur Datenspeicherung lt. DSGVO