freevrrpd – HA mit BSD

freevrrpd sorgt dafür das ein Dienst nahezu ohne unterbrechung, hoch verfügbar, angeboten werden kann. Auch wenn ein Rechner ausfallen sollte.
Mit freevrrpd ist es aber auch möglich das active-backup verhalten welches mit Bonding unter FreeBSD nicht funktioniert zu bauen.

 

Der Failover dauert ca. 3 Sekunden und es gibt einen automatischen giveback.
Einen kleinen Wehrmutstropfen gibt es aber noch: Es gibt kein Failover wenn nur der Server (z.B. Apache) nicht mehr richtig funktioniert.
freevrrpd ist eher dafür ausgelegt Netzwerk- oder Hardwareausfälle abzufangen. Aber auch hier kann man ggf. tricksen.

Folgende Netzwerkkonfig ist auf den Rechnern gegeben:
192.168.1.11 = Master
192.168.1.12 = Slave
192.168.1.10 ist die VIP und wird als alias von freevrrpd auf das jeweilige aktive Interface gebunden.

In jedem Rechner sollte es sicherheitshalber ein zweites Interface (an anderem Switch) für ein Adminnetz geben. Slave und Master sollten zudem an anderen Switchen angebunden werden.

 

Installieren (auf beiden Kisten)
# cd /usr/ports/net/freevrrpd
/usr/ports/net/freevrrpd # make install && make clean
/usr/ports/net/freevrrpd # cp /usr/local/etc/freevrrpd.conf.sample /usr/local/etc/freevrrpd.conf

 

Konfigurieren
Auf Server1 (Master):
# vi /usr/local/etc/freevrrpd.conf

[VRID]
serverid = 1
interface = fxp0
priority = 255
password = geheim12
# VIP
addr = 192.168.1.10

Auf Server2 (Slave):
# vi /usr/local/etc/freevrrpd.conf

[VRID]
serverid = 1
interface = fxp0
priority = 250
password = geheim12
# VIP
addr = 192.168.1.10
# Wird Ausgefuehrt wenn Host zum Master wird.
masterscript = „/usr/local/bin/vrrpd_master.sh“
# Wird Ausgefuehrt wenn Host zum Slave wird.
backupscript = „/usr/local/bin/vrrpd_slave.sh“

In den Scripten vrrpd_master.sh und vrrpd_slave.sh, die selbst zu erstellen sind, kann z.B. das starten/stoppen eines Dienstes und/oder die Notifikation über die Übernahme erfolgen.

Will man nun „nur“ ein active-backup, mit zwei Netzwerklinks, auf einem Rechner machen so muss man in die freevrrpd.conf zusätzlich die Einträge einfügen die hier beim Slaverechner stehen. Als Interface muss dann das zweite des Rechners gewählt werden. Die Master- und Backupscripte kann man sich dann sparen. (Serverid, priority, addr und password so lassen.)

 

Damit die Sache nach dem nächsten Reboot auch noch funktioniert muss das Startscript „aktiviert“ werden
# mv /usr/local/etc/rc.d/freevrrpd.sh.sample /usr/local/etc/rc.d/freevrrpd.sh

 

(Will man nun auch ein Failover wenn nur der Dienst schwächelt baut man ein Script welches den Dienst überwacht und im Fehlerfalle das Interface runterfährt. Dann muss es aber ein eigenes Admininterface und Netz geben!)

Und Fertig ists.