29.12. CARP - Common Access Redundancy Protocol

Beigetragen von Tom Rhodes.

Das Common Access 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 neu bauen:

device carp

Danach ist CARP auf Ihrem System verfügbar und kann über verschiedene sysctl-Optionen (OIDs) gesteuert werden. Zuerst müssen Sie CARP jedoch mit ifconfig aktivieren:

# ifconfig carp0 create

Damit Sie dieses Protokoll in Ihrem Netzwerk einsetzen können, muss jede Netzkarte eine eindeutige Identifikationsnummer, die sogenannte VHID (Virtual Host Identification), besitzen, da sich ansonsten die Rechner Ihres Netzwerks nicht voneinander unterscheiden lassen.

29.12.1. Die Serververfügbarkeit mit CARP verbessern

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:

hostname="hosta.example.org"
ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 1 pass testpast 192.168.1.50/24"

Für das System hostb.example.org benötigen Sie zusätzlich folgende Zeilen in rc.conf:

hostname="hostb.example.org"
ifconfig_fxp0="inet 192.168.1.4 netmask 255.255.255.0"
cloned_interfaces="carp0"
ifconfig_carp0="vhid 2 pass testpass 192.168.1.51/24"

Anmerkung: 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:

hostname="provider.example.org"
ifconfig_fxp0="inet 192.168.1.5 netmask 255.255.255.0"
cloned_interfaces="carp0 carp1"
ifconfig_carp0="vhid 1 advskew 100 pass testpass 192.168.1.50/24"
ifconfig_carp1="vhid 2 advskew 100 pass testpass 192.168.1.51/24"

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.

Anmerkung: 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 “zurücksetzen”. 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>.