CARP (Common Address Redundancy Protocol) in FreeBSD configureren

CARP (Common Address Redundancy Protocol) is een netwerkprotocol waarmee meerdere hosts binnen hetzelfde lokale netwerk één of meerdere virtuele IP-adressen kunnen delen. Het belangrijkste doel van CARP is het bieden van failover, high availability (HA) en redundantie voor netwerkdiensten.

Wanneer een primaire server uitvalt, neemt een secundaire server automatisch het virtuele IP-adres over. Hierdoor blijven netwerkverbindingen beschikbaar zonder dat gebruikers of applicaties hiervan hinder ondervinden.

Hoe werkt CARP?

Stel dat een firewall of pakketfilter draait op één server. Als deze server uitvalt, is communicatie tussen de twee netwerken niet meer mogelijk of verloopt deze zonder firewallbescherming.

Door twee of meer servers te configureren met CARP ontstaat een redundante opstelling. De servers delen een virtueel IP-adres, waarbij één server actief is (de master) en de andere server standby staat (de backup).

Valt de master uit, dan neemt de backup-server automatisch het virtuele IP-adres over. Apparaten op het netwerk merken deze overgang vrijwel niet, waardoor de dienstverlening beschikbaar blijft.

CARP en pfsync

Voor firewalls is alleen het overnemen van een IP-adres vaak niet voldoende. Ook de actieve firewallstatussen moeten worden gesynchroniseerd. Hiervoor wordt pfsync gebruikt.

Met pfsync worden firewallverbindingen tussen beide servers gesynchroniseerd, zodat bestaande netwerkverbindingen actief blijven tijdens een failover.

In sommige configuraties kan CARP daarnaast worden gebruikt voor eenvoudige load balancing (taakverdeling).


CARP installeren

Voeg tijdens het compileren van de FreeBSD-kernel de volgende regel toe:

device carp

CARP configureren

Maak eerst de CARP-interface aan:

ifconfig carp0 create

Server A configureren

Bestand: /etc/sysctl.conf

net.inet.carp.preempt=1
net.inet.carp.allow=1
net.inet.carp.log=1
net.inet.carp.arpbalance=1

Bestand: /etc/rc.conf

hostname="hosta.example.org"
cloned_interfaces="carp0"
network_interfaces="fxp0 carp0"
ifconfig_carp0="up vhid 1 advskew 3 pass testpass 192.168.1.145"

Bestand: /etc/rc.local

ifconfig carp0 up &

Server B configureren

Bestand: /etc/sysctl.conf

net.inet.carp.preempt=1
net.inet.carp.allow=1
net.inet.carp.log=1
net.inet.carp.arpbalance=1

Bestand: /etc/rc.conf

hostname="hostb.example.org"
cloned_interfaces="carp0"
network_interfaces="ed0 carp0"
ifconfig_carp0="up vhid 1 advskew 100 pass testpass 192.168.1.145"

Let op: Geef de backup-server een hogere advskew-waarde dan de master. Hierdoor blijft Server A de primaire CARP-node zolang deze beschikbaar is.

Bestand: /etc/rc.local

ifconfig carp0 up &

CARP testen

Herstart beide servers:

reboot

Controleer daarna of de CARP-interface actief is:

ifconfig carp0

Schakel vervolgens de primaire server uit of verbreek de netwerkverbinding. De secundaire server moet automatisch de rol van master overnemen en het virtuele IP-adres blijven aanbieden.


Conclusie

CARP is een eenvoudige en betrouwbare oplossing om high availability te realiseren binnen een FreeBSD-omgeving. In combinatie met pfsync ontstaat een redundante firewallopstelling waarbij netwerkverbindingen tijdens een failover behouden blijven. Hierdoor neemt de beschikbaarheid van kritieke netwerkdiensten aanzienlijk toe.


Links

Add a Comment

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *