Was ist das?
Ist eine Technologie mit der man mehrere Netzwerkschnittstellen zu einer Schnittstelle zusammenfasst. Der Zweck ist Failover oder Lastenausgleich. Das hängt von der jeweiligen Einstellung ab, die man verwendet.
Wozu brauche ich das?
Privat wahrscheinlich nicht, aber speziell im Serverbereich ist Failover und Lastenausgleich wichtig. Szenario: Nehmen wir an wir haben einen Storage-Server mit 4 x 1 Gbit-Anschlüssen. Was genau der Server hostet ist hier jetzt nicht Gegenstand des Szenaios. Wir müssen...
Was wird benötigt?
Ich gehe von einem frisch installierten Debian Jessie aus, welches korrekt installiert ist. Der Server hat mehrere Nics und die Treiber sind korrekt und lauffähig. Uns steht nur noch die Konfiguration des NIC Bonding bevor. Wir müssen das Paket ifenslave installieren.
Die Installation
Zunächst muss ifenslave installiert werden. Das geschieht wie gewohnt mit apt-get.
apt-get install ifenslave -y
Danach können wir auch schon mit der Konfiguration beginnen.
Die Konfiguration
Die ist tatsächlich ziemlich einfach. Zunächst müssen wir in /etc/modprobe.d/ die Datei aliases anlegen. Dort hinterlegen wir folgenden Inhalt:
alias bond0
bonding
options bonding mode=1 miimon=100
auto bond0 iface bond0 inet static address 10.0.0.10 netmask 255.255.255.0 network 10.0.0.0 broadcast 10.0.0.255 gateway 10.0.0.1 dns-nameservers 10.0.0.1 bond-slaves eth0 eth1 eth2 eth3 bond-mode 0 bond-miimon 100 bond-updelay 200 bond-downdelay 200
Die letzten 5 Zeilen erklärt:
bond-slaves | Es werden alle am Bonding beteiligten Netzwerkschnittstellen aufgezählt. |
bond-mode | Es gibt verschiedene Modi die Nics zu betreiben. Mehr Informationen ganz unten! |
bond-miimon 100 | Das Bonding-Modul prüft alle 100 ms den Link-Status aller gebundenen NICs. |
bond-updelay_200 | Die NIC, die als "wieder aktiv" erkannt wird, wird erst nach 200 ms wieder in den Verbund aufgenommen. Lässt man den Delay weg, so wird sie sofort wieder aufgenommen. |
bond-downdelay_200 | Sollte eine Nic kurz aussetzen oder Übertragungsfehler haben, so wird sie erst nach 200 ms Verzögerung aus dem Verbund entfernt. |
Das war es aber auch schon. Nun den Server neu starten und die NIC bond0 sollte dabei sein, wenn man ein ifconfig ausführt. Diese Nic hat nun die gegebene IP bekommen. Eth0 - 3 sind ebenfalls aufgelistet, aber haben keine IP mehr.
Welche Bonding Modi gibt es?
Modus | Bezeichnung | Zweck | Erklärung |
0 | balance-rr |
Loadbalancing & Failover |
Die NICs werden abwechselnd, also der Riehe nach verwendet und Aufgaben zugeteilt. Das funktioniert wie Round-Robin wie man es vom DNS kennt. |
1 | active-backup | Failover | Eine NIC ist aktiv während die andere bereit steht, um im Falle eines Ausfalls "einzuspringen". |
2 | balance-xor | Loadbalancing & Failover | Für jede Gegenstelle im Netzwerk wird eine zu nutzende NIC zugewiesen. |
3 | broadcast | Failover | Es wird über alle NICs gleichzeitig das Selbe gesendet. Möglich: Verschiedene Nics an verschiedenen Switches. |
4 | IEEE 802.3ad | Loadbalancing & Failover | Die NICs werden dabei gebündelt und treten nach Außen als eine NIC mit einer IP auf. So kann bspw. die Netzwerkleistung verdoppelt oder ver-x-facht werden. |
5 | balance-tlb | Loadbalancing | Der adaptive Sendeausgleich. Die zu sendenden Daten werden gerecht auf die NICs aufgeteilt. Antwortpakete können aber nur von einer NIC angenommen werden |
6 | balance-alb | Loadbalancing | Wie Mode 5, allerdings wird auch beim Empfang von Paketen ein Lastenausgleich vorgenommen. |