Re: NIC failover

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 27 Apr 2005 10:27:16 +0200 (CEST)

Christian Damm <christian.damm(at)diewebmaster.at> wrote:
> ich habe eine kleine serverfarm mit 8 hosts (6 MTA`s (postfix) + 2 DB
> backends) - die MTA`s betreibe ich via round robin DNS (mx) redundant
> bzw. load balanced. alle 8 hosts hangen ursprünglich an nem 24 port
> 10/100 switch (hp procurve 2524) und genau dieser sollte nun redundant
> ausgelegt bzw. via failover protected werden.

Hast Du denn auch einen redundanten Uplink (bzw. mehrere)
hinter dem/den Switch(es)? Irgendwie muß es dahinter ja
auch weitergehen.

> meine low end lösung:
> 1.) ein zweiter hp procurve switch
> 2.) in jedem host ein zweiter NIC (oder ein dual port NIC)
> 3.) jeder host wird (via 2 x cat5 kabel) an jeweils einen switch connected
> 4.) einer der beiden NIC`s ist im normalfall DOWN
> 5.) mein shell script checkt (läuft auf jedem host) via cron auf
> eventuelle ausfälle von switch1 und bringt im fehlerfall den master NIC
> DOWN und den failover NIC UP.
> 6.) wenn switch1 tot wird switch2 verwendet

Ich würde kein Shell-Skript (oder sonstiges Skript) nehmen,
sondern das ganze in C schreiben. Erstens vergeudet das
weniger Prozessor- und I/O-Zeit, zweitens kannst Du dann
die Interfaces dauerhaft überwachen (und nicht nur z.B.
einmal pro Minute checken) und zeitnah umschalten.

Das C-Programm könnte z.B. alle 5 Sekunden die I/O-Error-
Counter des jeweiligen Interfaces abfragen (d.h. das, was
auch »netstat -i« ausgibt); den Code kann man einfach aus
src/usr.bin/netstat/if.c borgen. Ebenso kann es gucken,
ob noch ein Link auf dem Port ist (was ifconfig(8) als
»Status: active« anzeigt; kann man per sysctl(3) abfragen,
siehe src/sbin/ifconfig/ifconfig.c). Zusätzlich zu diesen
passiven Tests könnte es auch aktiv testen, z.B. ICMP ECHO
oder ARP-Anfragen losschicken und gucken, ob innerhalb ei-
ner sinnvollen Zeit eine Antwort kommt. Den Code kann man
sich entsprechend aus anderen Tools (ping(8), arp(8)) zu-
sammenklauben.

Es gibt sicherlich fertige Lösungen, die das eine oder an-
dere davon tun, aber sowas richtig Gutes ist mir leider
nicht bekannt.

> darum war meine frage: welche alternativen (auf applikations- bzw.
> kernel-ebene) fallen euch da ein? gibt es failover NIC`s die von FreeBSD
> supportet werden etc...

Die Frage, die ich mir stelle: Gibt es »Failover-NICs«?
Oder sind das vielmehr ganz normale Dual-Port-NICs, bei
denen Treiber für gewisse Betriebssysteme das eigentliche
Umschalten besorgen?

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"C++ is the only current language making COBOL look good."
        -- Bertrand Meyer
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 27 Apr 2005 - 10:28:10 CEST

search this site