bonding Interface unter CentOS

 

Was ist bonding?

Bonding bietet die Möglichkeit, mehrere Netzwerkkarten zu einer zu bündeln. Damit ergeben sich Möglichkeiten wie Redundanz oder „load balancing“.

Wo setze ich bonding ein?

Überall wo man Redundanz oder Load Balancing benötigt. Es ist ein einfacher und sicherer Weg für ein Hochverfügbarkeitsnetz.

Welche „modes“ gibt es?

mode=0 – balance-rr

Voraussetzung:

  • Switches die Trunking unterstützen

Der Default des Modules. In diesem Modus werden die Pakete von der ersten bis zur letzten verfügbaren Netzwerkkarte im bond verteilt (round-robin). Der Vorteil: Jede Karte hat die gleiche last. Fällt eine Karte aus wird die Last auf alle anderen verteilt. Jedoch muss das Netzwerk trunking unterstützen ( Router wie Cisco 5500 mit EtherChannel Support z.B.).

mode=1 – active-backup

Voraussetzung:

  • miitool Support

In diesem Modus ist nur eine Netzwerkkarte aktiv. Fällt diese aus, wird die nächste verfügbare Netzwerkkarte eingebunden. Wichtig: In diesem Modus wird ein ARP-Broadcast ausgesendet. Die Switches können so die neue Route in ihrem ARP-Cache festhalten. In der Regel sollte es keinen oder sehr wenig Paketverlust geben.

mode=2 – balance-xor

Voraussetzung:

  • miitool Support

Pakete laufen immer über die gleiche MAC-Adresse. Fällt eine Netzwerkkarte aus, wird die Last auf alle anderen verfügbaren verteilt. Der Vorteil: Ein Endgerät hat immer den gleichen Weg zum Host. Der Nachteil: Nicht jede Netzwerkkarte hat die gleiche Auslastung.

mode=3 – broadcast

Voraussetzung:

  • miitool Support

Dieser Modus sendet jedes Paket auf jedem Interface. Der Vorteil: Absolute Redundanz. Der Nachteil: Kein Loadbalancing und Switches können verwirrt werden.

mode 4 – 802.3ad (oder 802.1ax)

Voraussetzung:

  • miitool Support
  • Switches mit Support für 802.3ad oder 802.1ax (Cisco)

Link Aggregation ist ein begriff für Kanalbündelung. Für diesen Modus benötigt man spezielle Switches (einige Cisco Switches unterstützen diesen Standard).

mode 5 – balance-tlb (Adaptive Transmit Load Balancing)

Voraussetzung:

  • miitool Support
  • ethtool Support

Die Last wird auf alle aktiven Slaves verteilt. Die Auslastung einer Netzwerkkarte wird mit ethtool ermittelt. Indikator ist die Menge des ausgehenden Datenverkehrs relativ zur Bandbreite.

mode 6 – balance-alb (Adaptive Load Balancing)

Voraussetzung:

  • miitool Support
  • ethtool Support

balance-alb enthält balance-tlb und receive load balancing (rlb) für IPv4. Der ankommende Datenverkehr wird wird durch ARP-Negotiation den entsprechendem Interface zugeordnet.

Weitere Modulparameter

miimon (in ms)

miimon definiert, in welchem Interval überprüft werden soll ob die Netzwerkkarte noch einen Link hat. Ein Wert von 100 hat sich als gut bewährt. Ein Wert kleiner gleich 10 sollte nicht gewählt werden da sonst zu viel Systemlast produziert wird.

downdelay (in ms)

Mit diesem Parameter kann eine Wartezeit definiert werden bis ein Interface heruntergefahren wird. Sollten Verbindungen nur kurz abbrechen ist es oft sinnvoller einen geringen Paketverlust in Kauf zu nehmen.

updelay (in ms)

Mit diesem Parameter kann eine Wartezeit definiert werden bis ein Interface hochgefahren wird.  Manche Switches melden Verbindungen zu früh als Aktiv und können noch keine Pakete annehmen. Oft ist es sinnvoll, 2-3 Sekunden zu warten, bevor eine Netzwerkkarte wieder aktiviert wird.

arp_interval (in ms)

Der Default ist 0 (disabled). Wenn miitool nicht unterstützt wird, kann mittels ARP überprüft werden, ob noch ein Link besteht (ARPing). arp_interval definiert, in welchem Abstand überprüft werden soll, ob noch ein Link besteht.

arp_ip_target (in DDD.DDD.DDD.DDD)

Diese Option gibt die Zieladresse an, zu welcher ein ARP-Request gesendet wird um den Linkstatus zu ermitteln.

Die Konfiguration

Zuerst muss die Datei „/etc/modprobe.conf“ angepasst werden. Ich verwende den vi. Folgende Zeilen müssen hinzugefügt werden: [code=““““““““““““““““““““]alias bond0 bonding options bond0 miimon=80 mode=5[/code] Danach muss die Datei „/etc/sysconfig/network-scripts/ifcfg-bond0″ mit folgendem Inhalt erstellt werden. [code=““““““““““““““““““““] DEVICE=bond0 IPADDR= NETWORK= NETMASK= GATEWAY= USERCTL=no BOOTPROTO=none ONBOOT=yes[/code] Diesem Device muss jetzt noch mindestens eine Netzwerkkarte als Slave zugeordnet werden. In diesem Beispiel passe ich eth0 an. Dazu muss die Datei „/etc/sysconfig/network-scripts/ifcfg-eth0″ editiert werden. [code=““““““““““““““““““““] DEVICE=eth0 USERCTL=no ONBOOT=yes MASTER=bond0 SLAVE=yes BOOTPROTO=none[/code] Jetzt muss nur noch das Netzwerk neu gestartet werden. (/etc/init.d/network restart).

Sonstiges

Der aktuelle Status steht in „/proc/net/bonding/bond0″. [code=““““““““““““““““““““]linux:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008) Bonding Mode: transmit load balancing Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 80 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: c8:0a:a9:32:ea:69 Slave Interface: eth0 MII Status: up Link Failure Count: 0 Permanent HW addr: c8:0a:a9:32:ea:68[/code]

Fehler:

Sollte eine Verbindung abbrechen und zu schnell wieder aktiviert werden, kann es vorkommen dass zu viele Pakete verloren gehen weil Switches die MAC-Adressen nicht schnell genug umstellen können.

Weitere Seiten:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.