Bonding & Redundancy: Wicked Setup (Artikel 141)
Konfiguration von hochverfügbaren Netzwerk-Bündelungen unter SUSE. Erfahren Sie den Umgang mit Bonding-Modi im Wicked-Framework und die redundante Anbindung an Switches.
# Bonding on SUSE: Ausfallsicherheit mit Wicked
TL;DR / Management Summary In unternehmenskritischen Umgebungen ist die Redundanz auf Hardware-Ebene Pflicht. Network Bonding erlaubt es SUSE-Systemen, zwei oder mehr Netzwerkkarten zu einer logischen Einheit zusammenzufassen. Wir nutzen das Wicked-Framework, um LACP (802.3ad) für Performance oder Active-Backup für maximale Sicherheit zu konfigurieren. Wer Bonding unter SUSE beherrscht, schützt seine Server vor Hardware-Ausfällen und Kabelbrüchen.
# 1. Einführung & Architektur
Die Bündelung im Kernel.
Das Bonding-Modul des Linux-Kernels übernimmt die Verteilung der Pakete. Wicked fungiert als Management-Ebene, die den Status der Karten (Slaves) überwacht.
# Architektur-Übersicht (Mermaid)
graph TD
subgraph "SUSE Host"
A[bond0 Interface] --> B[Slave: eth0]
A --> C[Slave: eth1]
end
B --- D[Switch A]
C --- E[Switch B / Stack]
subgraph "Wicked Monitoring"
F[miimon: Link Check]
G[arp_interval: Peer Check]
end
F --- A
# 2. Konfiguration via YaST
Der fehlerfreie Weg.
Starten Sie das Modul: sudo yast2 lan.
- Add: Wählen Sie “Bond” als Gerätetyp.
- Slaves: Markieren Sie die physikalischen Karten, die gebündelt werden sollen.
- Bond Mode: Wählen Sie zwischen:
- Mode 1 (Active-Backup): Einfach, keine Switch-Konfiguration nötig.
- Mode 4 (802.3ad / LACP): Erfordert Switch-Konfiguration (Trunk/LAG).
- IP: Vergeben Sie die IP-Adresse direkt auf dem bond0 Interface.
# 3. Manuelle Konfiguration (ifcfg-bond0)
Für Automatisierung und Feintuning.
Datei: /etc/sysconfig/network/ifcfg-bond0
BOOTPROTO='static'
IPADDR='10.0.0.50/24'
STARTMODE='auto'
BONDING_MASTER='yes'
BONDING_MODULE_OPTS='mode=802.3ad miimon=100'
BONDING_SLAVE_0='eth0'
BONDING_SLAVE_1='eth1'
Wichtig: Die Slave-Interfaces (ifcfg-eth0) müssen existieren, dürfen aber keine eigene IP-Konfiguration haben. Sie sollten nur STARTMODE='auto' und BOOTPROTO='none' enthalten.
# 4. Day-2 Operations: Monitoring & Failover-Test
Läuft alles auf beiden Beinen?
# Den echten Kernel-Status lesen
Wicked zeigt den logischen Status, aber der Kernel zeigt die physische Wahrheit:
cat /proc/net/bonding/bond0
Prüfen Sie:
Currently Active Slave: Bei Mode 1.LACP Partner MAC: Bei Mode 4 (wenn hier 00:00… steht, spricht der Switch kein LACP!).
# Failover simulieren
# Deaktiviere das aktive Interface
sudo ip link set eth0 down
# Prüfe, ob die Verbindung (Ping) bestehen bleibt
# 5. Troubleshooting & “War Stories”
Wenn der Bond nur ‘humpelt’.
# Story 1: “Der miimon-Standardfehler”
Symptom: Ein Kabel wird gezogen, aber der Server merkt es erst nach 30 Sekunden. Der Traffic bricht ab.
Ursache: Der Parameter miimon (Monitoring Interval) fehlt oder steht auf 0.
Lösung: Setzen Sie miimon=100 (Millisekunden). Dies ist der Enterprise-Standard für eine schnelle Reaktion auf Link-Loss.
# Story 2: “Unterschiedliche MTUs”
Symptom: Der Bond ist up, aber der Datendurchsatz ist miserabel und manche Pakete verschwinden.
Ursache: Die beiden Netzwerkkarten haben unterschiedliche MTU-Werte (z.B. eine 1500, die andere 9000).
Lösung: Stellen Sie sicher, dass alle Slaves und der Bond-Master die identische MTU haben. Wicked synchronisiert dies oft, aber bei manueller Config muss man aufpassen.
# 6. Fazit & Empfehlung
- LACP: Nutzen Sie Mode 4 immer dann, wenn Sie einen Switch-Stack haben. Es bietet die beste Ausnutzung der Bandbreite.
- Active-Backup: Nutzen Sie Mode 1 für einfache Redundanz über zwei getrennte, nicht-gestackte Switches.
- Hardware: Mischen Sie keine Karten von unterschiedlichen Herstellern (z.B. Intel und Realtek) im gleichen Bond, wenn es sich vermeiden lässt.
# Anhang: Cheatsheet
| Aufgabe | SUSE Befehl |
|---|---|
| Bond Status | wicked show bond0 |
| Alle Slaves sehen | ls /sys/class/net/bond0/bonding/ |
| Primary Slave setzen | BONDING_MODULE_OPTS='mode=1 primary=eth0' |
| Bond löschen | yast2 lan -> Delete |
| Kernel Log prüfen | `dmesg |
| Paket-Statistik | netstat -i |