Het Common Address Redundancy Protocol, of CARP, staat toe dat meerdere hosts hetzelfde IP-adres gebruiken. In sommige opstellingen wordt dit gebruikt voor beschikbaarheid of loadbalancing. Hosts kunnen ook gescheiden IP-adressen gebruiken, zoals in het voorbeeld dat hier is gegeven.
Om ondersteuning voor CARP aan te zetten, dient de FreeBSD-kernel herbouwd zoals beschreven in Hoofdstuk 9, De FreeBSD-kernel instellen met de volgende optie:
device carp
Als alternatief kan de if_carp.ko
module geladen worden tijdens het opstarten. Voeg de volgende
regel toe aan /boot/loader.conf
:
if_carp_load="YES"
De functionaliteit van CARP zou nu
beschikbaar moeten zijn en kan met verschillende
sysctl
-OIDs worden
bijgesteld:
OID | Beschrijving |
---|---|
net.inet.carp.allow | Accepteer inkomende CARP pakketten. Staat standaard aan. |
net.inet.carp.preempt | Deze optie zet alle CARP interfaces down op de host wanneer er een down gaat. Staat standaard uit. |
net.inet.carp.log | De waarde 0 zet alle logging uit.
De waarde 1 zet het loggen van slechte
CARP-pakketten aan. Waardes hoger dan
1 zet het loggen van
toestandsveranderingen van de CARP
interfaces aan. De standaardwaarde is
1 . |
net.inet.carp.arpbalance | Balanceer lokaal netwerkverkeer met ARP. Staat standaard uit. |
net.inet.carp.suppress_preempt | Een alleen-lezen OID die de
toestand van preëmptie-onderdrukking weergeeft.
Preëmptie kan worden onderdrukt wanneer de verbinding
op een interface afwezig is. De waarde
0 betekent dat preëmptie niet
onderdrukt is. Elk probleem verhoogt deze
OID. |
De CARP-apparaten zelf kunnen met het
commando ifconfig
worden aangemaakt:
#
ifconfig carp0 create
In een echte omgeving hebben deze interfaces unieke identificatienummers, bekend als een VHID, nodig. Dit VHID of Virtual Host Identification zal worden gebruikt om de hosts op het netwerk te onderscheiden.
Eén gebruik van CARP, zoals boven aangegeven, is serverbeschikbaarheid. Dit voorbeeld geeft failover-ondersteuning voor drie hosts, met allemaal een uniek IP-adres en dezelfde webinhoud. Deze machines zullen samen met een Round Robin DNS configuratie dienst doen. De failover-machine zal twee aanvullende CARP-interfaces hebben, één voor elk van de IP's van de contentservers. Wanneer er een storing optreedt, zou de failover-server het IP-adres van de falende machine moeten oppikken. Dit betekent dat de storing geheel onmerkbaar zou moeten zijn voor de gebruiker. De failover-server heeft dezelfde inhoud en diensten nodig als de andere contentservers waarvoor het moet invallen.
De twee machines dienen identiek geconfigureerd te worden
op de gegeven hostnamen en VHIDs na. Dit
voorbeeld noemt deze machines respectievelijk
hosta.example.org
en
hostb.example.org
. Ten eerste dienen de
benodigde regels voor een CARP-configuratie
aan rc.conf
te worden toegevoegd. Voor
hosta.example.org
dient het bestand
rc.conf
de volgende regels te bevatten:
hostname="hosta.example.org" ifconfig_fxp0="inet 192.168.1.3 netmask 255.255.255.0" cloned_interfaces="carp0" ifconfig_carp0="vhid 1 pass testpass 192.168.1.50/24"
Op hostb.example.org
dienen de volgende
regels in rc.conf
te staan:
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"
Het is erg belangrijk dat de wachtwoorden die met de optie
pass
aan ifconfig
gegeven
zijn, identiek zijn. De carp
apparaten zullen alleen luisteren naar en advertenties
accepteren van machines met het juiste wachtwoord. Het
VHID dient ook verschillend te zijn voor
elke machine.
De derde machine,
provider.example.org
, dient voorbereidt te
worden op het afhandelen van failover van beide hosts. Deze
machine heeft twee carp
apparaten nodig,
één om elke host af te handelen. De juiste
instelregels voor rc.conf
zullen ongeveer
gelijk zijn aan de volgende:
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"
Met twee carp
apparaten is
provider.example.org
in staat om het
IP-adres van de andere machine op te pikken
wanneer de ene niet meer antwoordt.
De standaard FreeBSD-kernel kan
preëmptie geactiveerd hebben. In dat geval hoeft
provider.example.org
het
IP-adres niet terug te geven aan de
originele contentserver. In dit geval kan het nodig zijn dat
een beheerder handmatig het IP terug aan de meester moet geven.
Het volgende commando dient op
provider.example.org
gegeven te worden:
#
ifconfig carp0 down && ifconfig carp0 up
Dit dient gedaan te worden op de
carp
interface die met de juiste
host overeenkomt.
Op dit moment dient CARP volledig actief en beschikbaar voor testen te zijn. Voor het testen dienen òfwel het netwerken herstart te worden, òf de machines dienen opnieuw opgestart te worden.
Meer informatie is altijd beschikbaar in de hulppagina carp(4)
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.