Das Common Address Redundancy Protocol (CARP) erlaubt es, mehreren Rechnern die gleiche IP-Adresse zuzuweisen und Hochverfügbarkeit bereitzustellen. Das bedeutet, dass ein oder mehrere Rechner ausfallen können und die anderen Rechner transparent einspringen, ohne das der Benutzer etwas von einem Ausfall mitbekommt. Neben der gemeinsamen IP-Adresse, haben die jeweiligen Rechner auch eine eindeutige IP-Adresse zur Verwaltung und Konfiguration, wie in den folgenden Beispielen zu sehen ist.
CARP wird häufig verwendet, um einen oder mehrere Dienste hochverfügbar zu machen. Dieses Beispiel konfiguriert eine Failover-Unterstützung mit drei Servern (mit jeweils eigener, eindeutiger IP-Adresse), die alle den gleichen Web-Inhalt anbieten. 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. Die Benutzer werden einen Dienstausfall überhaupt nicht bemerken.
Dieses Beispiel benutzt zwei verschiedene Master namens
hosta.example.org
und
hostb.example.org
mit einem
gemeinsamen Backup namens
hostc.example.org
.
Jede virtuelle IP-Adresse hat eine eindeutige Identifikationsnummer, die als Virtual Host Identification (VHID) bekannt ist. 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.
Unterstützung für CARP erhalten Sie
durch das Laden des Kernelmoduls carp.ko
in /boot/loader.conf
:
carp_load="YES"
Das CARP-Modul kann auch, wie in Kapitel 9, Konfiguration des FreeBSD-Kernels beschrieben, direkt in den FreeBSD Kernel eingebunden werden:
device carp
Hostname, IP-Management-Adresse,
Subnetzmaske, gemeinsame IP-Adresse und
VHID werden durch das Hinzufügen in
/etc/rc.conf
gesetzt. Dieses Beispiel
ist für hosta.example.org
:
hostname="hosta.example.org" ifconfig_em0="inet192.168.1.3
netmask 255.255.255.0" ifconfig_em0_alias0="vhid 1 pass testpass alias192.168.1.50
/32"
Beispiel für
hostb.example.org
:
hostname="hostb.example.org" ifconfig_em0="inet192.168.1.4
netmask 255.255.255.0" ifconfig_em0_alias0="vhid 2 pass testpass alias192.168.1.51
/32"
Achten Sie unbedingt darauf, dass die durch die Option
pass
an ifconfig(8) übergebenen
Passwörter auf beiden Systemen identisch sind, da
carp
-Geräte nur mit Systemen
kommunizieren können, die über ein korrektes Passwort
verfügen.
Die dritte Maschine,
hostc.example.org
ist so
konfiguriert, das sie aktiviert wird, wenn eines der beiden
zuvor konfigurierten Systeme ausfällt. Diese Maschine ist mit
zwei CARP VHIDs
konfiguriert, eine für jede virtuelle
IP-Adresse der beiden Master-Server. Die
Option advskew
(CARP
advertising skew) wird gesetzt, um sicherzustellen, dass sich
der Backup-Server später ankündigt wie der Master-Server.
advskew
steuert die Rangfolge für den Fall
das mehrere Backup-Server zur Verfügung stehen. Passen Sie
die Konfiguration in /etc/rc.conf
an:
hostname="hostc.example.org" ifconfig_em0="inet192.168.1.5
netmask 255.255.255.0" ifconfig_em0_alias0="vhid 1 advskew 100 pass testpass alias192.168.1.50
/32" ifconfig_em1_alias0="vhid 2 advskew 100 pass testpass alias192.168.1.51
/32"
Durch die zwei 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.
Preemption ist
standardmäßig deaktiviert. Wird
Preemption aktiviert, kann es
vorkommen, 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 em0 vhid 1 state backup
An dieser Stelle muss entweder das Netzwerk neu gestartet, oder die Maschine neu gebootet werden, um CARP zu aktivieren.
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.
Unterstützung für CARP erhalten Sie
durch das Laden des Kernelmoduls carp.ko
in /boot/loader.conf
:
if_carp_load="YES"
CARP kann auch direkt in den Kernel eingebunden werden. Diese Prozedur wird in Kapitel 9, Konfiguration des FreeBSD-Kernels beschrieben:
device carp
Die CARP-Schnittstellen selbst können mittels ifconfig(8) erstellt werden:
#
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. Hierzu ein
Beispiel für
hosta.example.org
:
hostname="hosta.example.org" ifconfig_fxp0="inet192.168.1.3
netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 1 pass testpass192.168.1.50
/24"
Beispiel für
hostb.example.org
:
hostname="hostb.example.org" ifconfig_fxp0="inet192.168.1.4
netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 2 pass testpass192.168.1.51
/24"
Preemption ist im GENERIC
FreeBSD 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.
An dieser Stelle muss entweder das Netzwerk neu gestartet, oder die Maschine neu gebootet werden, um CARP zu aktivieren.
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.
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>.