ich benötige für ein Projekt eine HA-Lösung auf Basis von FreeBSD-9.0. Nachdem ich nun seit Tagen wie blöd google habe ich eine mögliche Lösung gefunden, wofür es allerdings nur relativ wenig aktuelle Dokumentation gibt. Dahür würde mich interessieren, ob ich mit nachfolgender Konfiguration richtig liege und oder ob ich daran noch etwas schrauben muss.
Gegeben sind zwei Server (Host_A und Host_B) mit je vier NICs, welche in unterschiedlichen Netzen mit jeweils eigenem Default-Gataway hängen. Davon hat lediglich ein Gateway (Firewall/NAT-Router) Verbindung zum Internet, der Rest ist jeweils reines LAN (sollte keine Rolle spielen, aber man weiss ja nie).
Für jedes einzelne NIC wird per FIB eine eigene Default-Route zum jeweiligen Gateway vergeben und funktioniert bereits problemlos.
Jetzt soll in das zuvor beschriebene Setup CARP (Failover+Loadbalance) integriert werden. Um die Server nicht durch Konfigurationsfehler von Extern unerreichbar zu machen, wäre mir ein Review der nachfolgenden Konfigurationen ganz lieb.
Host_A:
Code: Select all
cat >> /etc/rc.conf <<"EOF"
ifconfig_bce0="inet 192.168.0.30 netmask 255.255.255.0 fib 0"
ifconfig_bce1="inet 192.168.1.30 netmask 255.255.255.0 fib 1"
ifconfig_bce2="inet 192.168.2.30 netmask 255.255.255.0 fib 2"
ifconfig_bce3="inet 192.168.3.30 netmask 255.255.255.0 fib 3"
cloned_interfaces="carp30 carp31 carp32 carp33 carp40 carp41 carp42 carp43"
ifconfig_carp30="vhid 30 pass somepass advbase 1 advskew 0 192.168.0.50 netmask 255.255.255.0"
ifconfig_carp31="vhid 31 pass somepass advbase 1 advskew 0 192.168.1.50 netmask 255.255.255.0"
ifconfig_carp32="vhid 32 pass somepass advbase 1 advskew 0 192.168.2.50 netmask 255.255.255.0"
ifconfig_carp33="vhid 33 pass somepass advbase 1 advskew 0 192.168.3.50 netmask 255.255.255.0"
ifconfig_carp40="vhid 40 pass somepass advbase 1 advskew 100 192.168.0.50 netmask 255.255.255.0"
ifconfig_carp41="vhid 41 pass somepass advbase 1 advskew 100 192.168.1.50 netmask 255.255.255.0"
ifconfig_carp42="vhid 42 pass somepass advbase 1 advskew 100 192.168.2.50 netmask 255.255.255.0"
ifconfig_carp43="vhid 43 pass somepass advbase 1 advskew 100 192.168.3.50 netmask 255.255.255.0"
"EOF"
Code: Select all
cat >> /etc/rc.conf <<"EOF"
ifconfig_bce0="inet 192.168.0.40 netmask 255.255.255.0 fib 0"
ifconfig_bce1="inet 192.168.1.40 netmask 255.255.255.0 fib 1"
ifconfig_bce2="inet 192.168.2.40 netmask 255.255.255.0 fib 2"
ifconfig_bce3="inet 192.168.3.40 netmask 255.255.255.0 fib 3"
cloned_interfaces="carp30 carp31 carp32 carp33 carp40 carp41 carp42 carp43"
ifconfig_carp30="vhid 30 pass somepass advbase 1 advskew 100 192.168.0.50 netmask 255.255.255.0"
ifconfig_carp31="vhid 31 pass somepass advbase 1 advskew 100 192.168.1.50 netmask 255.255.255.0"
ifconfig_carp32="vhid 32 pass somepass advbase 1 advskew 100 192.168.2.50 netmask 255.255.255.0"
ifconfig_carp33="vhid 33 pass somepass advbase 1 advskew 100 192.168.3.50 netmask 255.255.255.0"
ifconfig_carp40="vhid 40 pass somepass advbase 1 advskew 0 192.168.0.50 netmask 255.255.255.0"
ifconfig_carp41="vhid 41 pass somepass advbase 1 advskew 0 192.168.1.50 netmask 255.255.255.0"
ifconfig_carp42="vhid 42 pass somepass advbase 1 advskew 0 192.168.2.50 netmask 255.255.255.0"
ifconfig_carp43="vhid 43 pass somepass advbase 1 advskew 0 192.168.3.50 netmask 255.255.255.0"
"EOF"
Code: Select all
cat >> /etc/rc.local <<"EOF"
/sbin/route flush
/sbin/ipfw -f flush
/usr/sbin/setfib 0 /sbin/route add default 192.168.0.1
/usr/sbin/setfib 1 /sbin/route add default 192.168.1.1
/usr/sbin/setfib 2 /sbin/route add default 192.168.2.1
/usr/sbin/setfib 3 /sbin/route add default 192.168.3.1
/sbin/ipfw add allow ip from any to any via lo0
/sbin/ipfw add setfib 0 ip from any to any via bce0
/sbin/ipfw add setfib 1 ip from any to any via bce1
/sbin/ipfw add setfib 2 ip from any to any via bce2
/sbin/ipfw add setfib 3 ip from any to any via bce3
/sbin/ipfw add allow ip from any to any
"EOF"
cat >> /etc/sysctl.conf <<"EOF"
net.inet.carp.preempt=1
"EOF"
cat >> /boot/loader.conf <<"EOF"
ipfw_load="YES"
net.fibs=4
"EOF"
cat >> /root/kernels/GENERIC_FIB_CARP <<"EOF"
options ROUTETABLES=16
device carp
"EOF"
Später kommt dann noch HAST dazu, aber das ist ein völlig anderes Thema.
Danke vorab und Gruss,
Joe User