Das Common Address Redundancy Protocol (CARP) erlaubt es, mehreren Rechnern die gleiche IP-Adresse und Virtual Host ID (VHID) zuzuweisen und Hochverfügbarkeit bereitzustellen. Das bedeutet, dass ein oder mehrere Rechner ausfallen können und die anderen Rechner transparent einspringen, ohne dass die Benutzer etwas von einem Ausfall mitbekommen.
Neben der gemeinsamen IP-Adresse, haben die jeweiligen Rechner auch eine eindeutige IP-Adresse zur Verwaltung und Konfiguration. Alle Maschinen, die sich eine IP-Adresse teilen, verwenden die gleiche VHID. Die VHID für jede einzelne IP-Adresse muss, entsprechend der Broadcast-Domäne der Netzwerkschnittstelle, eindeutig sein.
Hochverfügbarkeit mit CARP ist in FreeBSD enthalten, jedoch unterscheidet sich die Konfiguration von der eingesetzten FreeBSD-Version. Dieser Abschnitt enthält die gleichen Konfigurationsdateien für verschiedene Versionen von FreeBSD.
Dieses Beispiel konfiguriert eine Failover-Unterstützung mit
drei Servern (mit jeweils eigener, eindeutiger
IP-Adresse), die alle den gleichen
Web-Inhalt anbieten. Es werden zwei verschiedene Master namens
hosta.example.org
und
hostb.example.org
benutzt, mit einem
gemeinsamen Backup namens
hostc.example.org
.
Die Lastverteilung dieser Maschinen wird dabei über Round Robin DNS konfiguriert. Mit Ausnahme des Hostnamens und der IP-Management-Adresse sind Master- und Backup-Maschinen identisch konfiguriert. Die Server müssen die gleiche Konfiguration und die gleichen Dienste aktiviert haben. Tritt ein Failover auf, können Anfragen an den Dienst mit der gemeinsam genutzten IP-Adresse nur dann richtig beantwortet werden, wenn der Backup-Server Zugriff auf denselben Inhalt hat. Die Backup-Maschine verfügt über zwei zusätzliche CARP-Schnittstellen, eine für jede IP-Adresse des Master-Content-Servers. Sobald ein Fehler auftritt, übernimmt der Backup-Server die IP-Adresse des ausgefallenen Master-Servers.
Unterstützung für CARP erhalten Sie
durch das Laden des Kernelmoduls carp.ko
in /boot/loader.conf
:
carp_load="YES"
So laden Sie das Modul ohne Neustart:
#
kldload carp
Benutzer, die einen angepassten Kernel verwenden möchten, müssen die folgende Zeile in die Konfigurationsdatei aufnehmen. Anschließend muss der Kernel, wie in Kapitel 8, Konfiguration des FreeBSD-Kernels beschrieben, neu gebaut werden:
device carp
Hostname, IP-Management-Adresse,
Subnetzmaske, gemeinsame IP-Adresse und
VHID werden durch Einträge in
/etc/rc.conf
gesetzt. Dieses Beispiel
ist für hosta.example.org
:
hostname="hosta.example.org
" ifconfig_em0
="inet192.168.1.3
netmask255.255.255.0
" ifconfig_em0
_alias0="inet vhid1
passtestpass
alias192.168.1.50
/32"
Die nächsten Einträge sind für
hostb.example.org
. Da der Rechner
einen zweiten Master darstellt, verwendet er eine andere
gemeinsame IP-Adresse und
VHID. Die mittels pass
angegebenen Passwörter müssen jedoch identisch sein, da
CARP nur mit Systemen kommuniziert,
die über das richtige Passwort verfügen.
hostname="hostb.example.org
" ifconfig_em0
="inet192.168.1.4
netmask255.255.255.0
" ifconfig_em0
_alias0="inet vhid2
passtestpass
alias192.168.1.51
/32"
Die dritte Maschine,
hostc.example.org
ist so
konfiguriert, das sie aktiviert wird, wenn einer der beiden
Masterserver ausfällt. Diese Maschine ist mit
zwei CARP VHIDs
konfiguriert, eine für jede virtuelle
IP-Adresse der beiden Master-Server. Die
CARP advertising skew,
advskew
wird gesetzt, um sicherzustellen,
dass sich der Backup-Server später ankündigt wie der
Master-Server, da advskew
die Rangfolge
steuert für den Fall, dass mehrere Backup-Server zur Verfügung
stehen.
hostname="hostc.example.org" ifconfig_em0
="inet192.168.1.5
netmask255.255.255.0
" ifconfig_em0
_alias0="inet vhid1
advskew100
passtestpass
alias192.168.1.50
/32" ifconfig_em0
_alias1="inet vhid2
advskew100
passtestpass
alias192.168.1.51
/32"
Durch die beiden konfigurierten CARP
VHIDs ist
hostc.example.org
in der Lage
festzustellen, wenn einer der Master-Server nicht mehr
reagiert. Wenn der Master-Server sich später ankündigt als
der Backup-Server, übernimmt der Backup-Server die gemeinsame
IP-Adresse, bis der Master-Server erneut
verfügbar ist.
Auch wenn der ursprüngliche Master-Server wieder
verfügbar wird, gibt
hostc.example.org
die virtuelle IP-Adresse nicht
automatisch wieder frei. Dazu muss
Preemption aktiviert
werden. Preemption ist standardmäßig deaktiviert und
wird über die sysctl(8)-Variable
net.inet.carp.preempt
gesteuert.
Der Administrator kann den Backup-Server zwingen, die
IP-Adresse an den Master
zurückzugeben:
#
ifconfig em0 vhid 1 state backup
Sobald die Konfiguration abgeschlossen ist, muss das Netzwerk oder die Maschine neu gestartet werden. Hochverfügbarkeit ist nun aktiviert.
Die Funktionalität von CARP kann, wie in der Manualpage carp(4) beschrieben, über verschiedene sysctl(8) Parameter kontrolliert werden. Mit dem Einsatz von devd(8) können weitere Aktionen zu CARP-Ereignissen ausgelöst werden.
Die Konfiguration für diese Versionen von FreeBSD ist ähnlich wie im vorhergehenden Abschnitt beschrieben, mit der Ausnahme, dass zuerst ein CARP-Gerät in der Konfiguration erstellt und bezeichnet werden muss.
Unterstützung für CARP erhalten Sie
durch das Laden des Kernelmoduls carp.ko
in /boot/loader.conf
:
if_carp_load="YES"
So laden Sie das Modul ohne Neustart:
#
kldload carp
Benutzer, die einen angepassten Kernel verwenden möchten, müssen die folgende Zeile in die Konfigurationsdatei aufnehmen. Anschließend muss der Kernel, wie in Kapitel 8, Konfiguration des FreeBSD-Kernels beschrieben, neu gebaut werden:
device carp
Als nächstes erstellen Sie auf jedem Rechner eine CARP-Schnittstelle:
#
ifconfig carp0 create
Konfigurieren Sie Hostnamen,
IP-Management-Adresse, die gemeinsam
genutzte IP-Adresse und die
VHID, indem Sie die erforderlichen Zeilen
in /etc/rc.conf
hinzufügen. Da anstelle
eines Alias eine virtuelles CARP-Gerät
verwendet wird, wird die tatsächliche Subnetzmaske
/24
anstatt /32
benutzt.
Hier sind die Einträge für
hosta.example.org
:
hostname="hosta.example.org
" ifconfig_fxp0
="inet192.168.1.3
netmask255.255.255.0
" cloned_interfaces="carp0" ifconfig_carp0="vhid1
passtestpass
192.168.1.50/24
"
Beispiel für
hostb.example.org
:
hostname="hostb.example.org
" ifconfig_fxp0
="inet192.168.1.4
netmask255.255.255.0
" cloned_interfaces="carp0" ifconfig_carp0="vhid2
passtestpass
192.168.1.51/24
"
Die dritte Maschine,
hostc.example.org
ist so
konfiguriert, das sie aktiviert wird, wenn einer der beiden
Masterserver ausfällt:
hostname="hostc.example.org
" ifconfig_fxp0
="inet192.168.1.5
netmask255.255.255.0
" cloned_interfaces="carp0 carp1" ifconfig_carp0="vhid1
advskew100
passtestpass
192.168.1.50/24
" ifconfig_carp1="vhid2
advskew100
passtestpass
192.168.1.51/24
"
Preemption ist im
GENERIC
-Kernel deaktiviert. Haben Sie
jedoch Preemption in einem
angepassten Kernel aktiviert, dass
hostc.example.org
die virtuelle
IP-Adresse nicht wieder an den
Master-Server zurückgibt. Der Administrator kann jedoch den
Backup-Server dazu zwingen, die übernommene
IP-Adresse wieder an den Master-Server
zurückzugeben:
#
ifconfig carp0 down && ifconfig carp0 up
Dieser Befehl muss auf dem
carp
-Gerät ausgeführt werden, dass dem
betroffenen System zugeordnet ist.
Sobald die Konfiguration abgeschlossen ist, muss das Netzwerk oder die Maschine neu gestartet werden. Hochverfügbarkeit ist nun aktiviert.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.