Netzwerk/bonding

Aus SchnallIchNet
Wechseln zu: Navigation, Suche

02.04.2007 : Die Begriffe "NIC-Bonding" und "Link Aggregation" stehen für die logische Zusammenfassung von 2 oder mehreren physikalischen Netzwerkkarten, um entweder ein Load-Balancing und/oder eine höhere Ausfallsicherheit zu erreichen...

Gehen wir einmal von dem Beispiel aus, daß man ein Server in seinem LAN hat, über den erstens extrem viel Datenverkehr läuft und der zweitens absolut nicht ausfallen darf (in diesem Beispiel geht es um eine defekte Netzwerkkarte oder einen defekten Port an dem entsprechenden Switch). Mittels "NIC-Bonding" kann man nun zwei physikalische Netzwerkkarten zu einer neuen, logischen zusammenfassen.

Zur Vorbereitung sollte unser Server zwei Netzwerkkarten eingebaut bekommen, die auch vom Linux-Kernel erkannt werden. In meinem Beispiel sollen die beiden Karten "eth1" und "eth2" zusammengefasst werden. Zurerst schauen wir aber mittels "mii-tool" (apt-get install mii-diag), ob die Links in Ordnung sind :

mii-tool
eth0: negotiated 100baseTx-FD, link ok
eth1: negotiated 100baseTx-FD, link ok
eth2: negotiated 100baseTx-FD, link ok


Nun sollten wir die Module "bonding" (für das eigentliche Zusammenfassen) und "mii" (für die Überwachung des Link-Status) laden (und am besten auch gleich in die Datei /etc/modules eintragen, damit sie beim nächsten Bootvorgang automatisch geladen werden) :

modprobe bonding
modprobe mii

Bei einem "ifconfig -a" sollte man jetzt bereits ein neues Interface mit Namen "bond0" sehen :

mars:~# ifconfig -a
bond0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
        BROADCAST MASTER MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

...

Nun brauchen wir noch das Debian-Paket "ifenslave" :

apt-get install ifenslave

Als nächstes editieren wir mit dem Texteditor unserer Wahl die Datei /etc/modprobe.d/aliases und fügen ff. Zeilen hinzu (meine Netzwerkkarten brauchen den "via_rhine"-Treiber - das muss entsprechend angepasst werden) :

alias bond0 bonding
alias eth1 via_rhine
alias eth2 via_rhine
options bonding mode=0 miimon=100

Ferner sollte ff. Zeile in die Datei /etc/modprobe.d/actions :

probeall bond0 eth1 eth2 bonding

Mit ff. Aufruf werden die Konfigurationsdateien mit den eben gemachten Verädnerungen aktualisiert :

update-modules

Nun editieren wir die Konfigurationsdatei für die Interfaces und IP-Adresse /etc/network/interfaces :

auto bond0
       iface bond0 inet static
       address 192.168.0.100
       netmask 255.255.255.0
       hwaddress ether 00:40:33:E2:65:87
       gateway 192.168.0.1
       up ifenslave bond0 eth1 eth2
       down ifenslave -d bond0 eth1 eth2
Achtung.jpeg für die Karten eth1 und eth2 bitte keine(!) Konfiguration vornehmen!!

Nun laden wir das "bonding"-Modul nochmal neu ...

rmmod bonding
modprobe bonding

... und starten unser Netzwerk neu :

/etc/init.d/networking stop
/etc/init.d/networking start

Sollten keine Fehler zu sehen sein, sollte man bei dem Aufruf von "ifconfig -a" nun bei den Interfaces "bond0", "eth1" und "eth2" überall die gleichen MAC- und IP-Adressen sehen.

Nun kann man spasseshalber einmal das Netzwerkkabel von "eth1" oder "eth2" ziehen und sich die Kernel-Meldungen anschauen, man sollte so etwas wie "eth1 has failed, eth2 becoming primary" usw. sehen.

Verbindet man die beiden Netzwerkkarten über verschiedene Switches oder VLANs, erhöht man entsprechend die Ausfallsicherheit. Bei unserem Beispiel werden die Netzwerkpakete im sogenannten "Round-Robin-Verfahren" verteilt, sprich, sie werden abwechselnd über die eine und die andere Netzwerkkarte versendet.

Neben unserem Beipiel (bonding mode=0 - siehe oben) gibt es noch andere Bonding-Verhaltensvarianten: alle verfügbanre Modi sind in der Kernel-Dokumentation "kernel/Documentation/net/bonding.txt" im Detail aufgeführt.

Achtung.jpeg bei bestimmten Bonding-Methoden bedarf es spezieller Switches,

beispielsweise bei der Bonding-Methode "802.3ad". Bei den Varianten "active-backup", "balance-tlb" und "balance-alb" bedarf es keiner spezieller Switches.