linux-suse-opensuse networking bonding ha wicked sles opensuse

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.

  1. Add: Wählen Sie “Bond” als Gerätetyp.
  2. Slaves: Markieren Sie die physikalischen Karten, die gebündelt werden sollen.
  3. 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).
  4. 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