Das Common Address Redundancy Protocol (CARP) erlaubt es, mehreren Rechnern die gleiche IP-Adresse zuzuweisen. Durch ein solches Vorgehen läßt sich beispielsweise die Verfügbarkeit bestimmter Dienste verbessern oder die Last zwischen einzelnen Systemen besser verteilen. Den auf diese Art und Weise konfigurierten Systemen kann zusätzlich eine eigene (im Netzwerk eindeutige) IP-Adresse zugewiesen werden (wie dies auch im folgenden Beispiel erfolgt).
Um CARP zu aktivieren, müssen Sie die FreeBSD-Kernelkonfigurationsdatei um die folgende Option erweitern und danach den FreeBSD-Kernel (wie in Kapitel 9, Konfiguration des FreeBSD-Kernels beschrieben) neu bauen:
Alternativ können Sie aber auch das Kernelmodul
if_carp.ko
beim Systemstart
automatisch laden. Dazu nehmen Sie die folgende Zeile
in die Datei /boot/loader.conf
auf:
Danach ist CARP auf Ihrem System
verfügbar und kann über verschiedene
sysctl
-Optionen (OIDs)
gesteuert werden.
OID | Beschreibung |
---|---|
net.inet.carp.allow | Akzeptiert ankommende CARP-Pakete. In der Voreinstellung aktiviert. |
net.inet.carp.preempt | Diese Option deaktiviert alle CARP-Geräte, sobald eines von ihnen ausfällt. In der Voreinstellung deaktiviert. |
net.inet.carp.log | Hat diese Variable den Wert 0 , wird
kein Protokoll generiert, während mit dem Wert
1 nur inkorrekte
CARP-Pakete protokolliert werden. Hat
die Variable einen Wert größer
1 , werden nur die Statuswechsel von
CARP-Geräten protokolliert. In der
Voreinstellung hat diese Variable den Wert
1 . |
net.inet.carp.arpbalance | Gleicht die Netzwerklast im lokalen Netzwerk durch den Einsatz von ARP aus. In der Voreinstellung deaktiviert. |
net.inet.carp.suppress_preempt | Eine nur lesbare OID, die
den Preemption Suppression-Status
anzeigt. Preemption kann verhindert werden. Dies auch dann,
wenn ein Gerät ausfällt. Hat die Variable
den Wert 0 , bedeutet dies, dass Preemption
nicht verhindert wird. Tritt ein Problem auf, wird der Wert
dieser OID um 1
erhöht. |
Das CARP-Gerät selbst erzeugen Sie mit dem
ifconfig
-Befehl:
#
ifconfig carp0 create
Damit Sie dieses Protokoll in Ihrem Netzwerk einsetzen können, muss jede Netzwerkkarte eine eindeutige Identifikationsnummer, die sogenannte VHID (Virtual Host Identification), besitzen, da sich ansonsten die Rechner Ihres Netzwerks nicht voneinander unterscheiden lassen.
Wie bereits weiter oben erwähnt wurde, können Sie CARP dazu verwenden, die Verfübarkeit Ihrer Server zu verbessern. Im folgenden Bespiel werden insgesamt drei Server (mit jeweils eigener, eindeutiger IP-Adresse), die alle den gleichen Inhalt anbieten, in einer Round Robin DNS-Konfiguration eingerichtet. Der Backup-Server verfügt über zwei CARP-Schnittstellen (für die beiden IP-Adressen der Content-Server). Tritt bei einem Content-Server ein Problem auf, übernimmt der Backup-Server die IP-Adresse des ausgefallenen Servers. Dadurch sollte die Auswahl eines Servers vom Anwender nicht bemerkt werden. Der Backup-Server muss identisch konfiguriert sein und die gleichen Daten und Dienste anbieten wie das System, das er ersetzen soll.
Die beiden Content-Server werden (abgesehen von ihren
jeweiligen Hostnamen und VHIDs) identisch
konfiguriert und heißen in unserem Beispiel
hosta.example.org
beziehungsweise
hostb.example.org
. Damit Sie
CARP einsetzen können, müssen
Sie als Erstes die Datei rc.conf
auf
beiden Systemen anpassen. Für das System
hosta.example.org
nehmen Sie dazu folgende
Zeilen in rc.conf
auf:
Für das System hostb.example.org
benötigen Sie zusätzlich folgende Zeilen in
rc.conf
:
Achten Sie unbedingt darauf, dass die durch die Option
pass
an ifconfig
ü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. Beachten Sie weiters, dass sich die
VHIDs der beiden Systeme unterscheiden
müssen.
Nun richten Sie noch das dritte System,
provider.example.org
, ein, das aktiviert
wird, wenn eines der beiden zuvor konfigurierten Systeme
ausfällt. Dieses dritte System benötigt zwei
carp
-Geräte, um bei Bedarf
eines der beiden anderen
Systeme ersetzen zu können. Dazu konfigurieren Sie
rc.conf
analog zur folgenden
Beispielkonfiguration:
Durch die beiden carp
-Geräte
ist es provider.example.org
möglich,
festzustellen, ob eines der beiden anderen Systeme nicht mehr
reagiert. In diesem Fall übernimmt
provider.example.org
die
IP-Adresse des betroffenen Systems.
Ist im installierten FreeBSD-Kernel die Option
"preemption" aktiviert, kann es sein, dass
provider.example.org
die übernommene
IP-Adresse nicht mehr an den
Content-Server zurückgibt (wenn dieser wieder
funktioniert). In diesem Fall muss ein Administrator die
entsprechende Schnittstelle dazu zwingen, dies zu tun.
Dazu gibt er auf dem Rechner
provider.example.org
den folgenden
Befehl ein:
#
ifconfig carp0 down && ifconfig carp0 up
Dieser Befehl muss auf das
carp
-Gerät ausgeführt
werden, das dem betroffenen System zugeordnet ist.
Damit ist CARP vollständig konfiguriert und der Testbetrieb kann beginnen. Zuvor müssen Sie allerdings noch alle Systeme neu starten (beziehungsweise die Netzwerkkonfiguration auf allen Systemen neu einlesen), um die Einstelllungen zu übernehmen.
Für weitere Informtionen lesen Sie bitte die Manualpage carp(4).
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>.