Archiv

Posts Tagged ‘miimon’

Konfiguration von Ethernet-Bonding

2012/01/11 Kommentare aus

Mit Hilfe des bonding-Kernelmoduls lassen sich mehrere physische Netzwerkgeräte zu einem logischen Netzwerkgerät zusammenfassen, um Hochverfügbarkeit und/oder Lastverteilung zu gewährleisten. Dazu sind einige Änderungen am System notwendig. Im folgenden Beispiel werden die beiden physischen Schnittstellen eth0 und eth1 zu bond0 zusammengefasst.

Initiale Konfiguration

Erstellen von /etc/modprobe.d/bonding.conf

alias bond0 bonding

Erstellen von /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0 
ONBOOT=yes
BOOTPROTO=none
DNS1=192.168.100.1
DNS2=192.168.100.2
IPADDR=192.168.100.159
MASK=255.255.255.0
NETWORK=192.168.100.0
GATEWAY=192.168.100.10
USERCTL=no
BONDING_OPTS="mode=balance-rr miimon=100"

Die Einträge für DNS Server, IP-Adresse, Subnetzmaske, Netzwerk und Gateway können natürlich auch per DHCP vergeben werden. Falls dies gewünscht ist sind die entsprechenden Einträge zu entfernen und BOOTPROTO=dhcp zu wählen.

Editieren von /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Editieren von /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Restart des Netzwerks

service network restart

Funktionstest

Ein Ping auf eine beliebige Adresse sollte nun wie üblich funktionieren. Bei Entfernung des Netzwerkkabels von Schnittstelle eth0 wird der Ping ohne merkbare Unterbrechung weiter ausgeführt. Stecken Sie eth0 wieder an und entfernen das Netzwerkkabel von Schnittstelle eth1. Das Ergebnis sollte das gleiche sein.

Die Ausgabe des Befehls

tail -f /var/log/messages

(am Besten in einem neuem Terminal – STRG + ALT + F2) zeigt Statusmeldungen des Bonding-Kernelmoduls an. Ersichtlich sind hier vor allem die Aktivierung bzw. Deaktivierung der physischen Netzwerkschnittstellen eth0 und eth1.

Konfiguration des Bonding Kernelmoduls

Das bonding-Kernelmodul wird durch Eintrag von Parametern in BONDING_OPTS=“…“ in der Datei ifcfg-bond0 konfiguriert. Es gibt zahlreiche Parameter die hier durch Leerzeichen getrennt angegeben werden können, am wichtigsten für die grundlegende Funktion sind jedoch mode und miimon (bzw. arp_interval in Verbindung mit arp_ip_target) zur Feststellung des Ausfalls einzelner Slave-Netzwerkschnittstellen.

miimon spzifiziert die Link-Monitoring Frequenz in Millisekunden und legt damit den Zeitabstand fest in dem die einzelnen Netzwerkschnittstellen auf einen Ausfall überprüft werden. Die meisten Netzwerkkarten werden diese Funktion unterstützen. Ein Wert von 0 deaktiviert MII Link-Monitoring.

arp_interval legt die Zeitabstände in Millisekunden fest, in denen ARP-Monitoring erfolgt. Damit wird festgestellt ob einzelne Slave-Devices funktionsfähig sind oder nicht.

arp_ip_target spezifiziert die Target IP Adresse die für ARP-Requests verwendet wird.

In obiger Beispielkonfiguration wird der Bonding-Modus balance-rr verwendet. Empfangen und gesendet wird dabei auf jeder gebondeten Slave-Schnittstelle, beginnend mit der ersten zur Verfügung stehenden. Damit wird Ausfallsicherung und Lastverteilung erreicht.

Der Modus active-backup ermöglicht Fehlertoleranz. Empfangen und gesendet wird hierbei über die erste verfügbare gebondete Slave-Schnittstelle. Eine weitere gebondete Slave-Schnittstelle wird nur dann verwendet wenn die aktive gebondete Slave-Schnittstelle versagt.

Weitere Bonding-Modi und Parameter sind im Deployment Guide zu RHEL 6 und auch sehr umfassend in der Kerneldokumentation nachzulesen.