Probleme mit Adaptive Load Balancing

Hi,

ich habe in iSCSI Target auf Linux Basis welches von ESXi Servern genutzt wird. Die ESXi Server haben jeweils 2 VMkernel Ports im Storage VLAN, die jeweils nur einen pNIC (vmnic) nutzen. Die LUNs werden ueber Round Robin angesprochen. Das entspricht also dem best practice Setup nach VMware (iSCSI Port Binding). Unterm Strich kommuniziert der ESXi Server also von 2 IP und MAC Adresssen aus mit einer IP Adresse des iSCSI Targets und sendet auch ueber beide pNICs Daten.

Das iSCSI Target bondet die NICs eth0 und eth1 zu einem ALB bonding device:

Code:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet manual

auto bond0
iface bond0 inet static
        address 10.173.33.253
        netmask 255.255.255.0
        network 10.173.33.0
        broadcast 10.173.33.255
        gateway 10.173.33.1
        slaves eth0 eth1
        bond-mode balance-alb
        bond-miimon 100
        bond-downdelay 200
        bond-updelay 200
        post-up ifconfig eth0 promisc
        post-up ifconfig eth1 promisc

auto vlan2
iface vlan2 inet static
        address 10.173.2.2
        network 10.173.2.0
        netmask 255.255.255.0
        broadcast 10.173.2.255
        vlan-raw-device bond0

Code:
root@quadstor:~# ifconfig -a
bond0     Link encap:Ethernet  HWaddr 00:1b:21:38:ef:07  
          inet addr:10.173.33.253  Bcast:10.173.33.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:21ff:fe38:ef07/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:25727542 errors:0 dropped:83700 overruns:0 frame:0
          TX packets:23029064 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:33984959856 (31.6 GiB)  TX bytes:17865796781 (16.6 GiB)

eth0      Link encap:Ethernet  HWaddr 00:1b:21:38:ef:07  
          UP BROADCAST RUNNING PROMISC SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:50499 errors:0 dropped:0 overruns:0 frame:0
          TX packets:13103363 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7044454 (6.7 MiB)  TX bytes:10579259274 (9.8 GiB)

eth1      Link encap:Ethernet  HWaddr 00:1b:21:38:ec:f4  
          UP BROADCAST RUNNING PROMISC SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:25677043 errors:0 dropped:83700 overruns:0 frame:0
          TX packets:9925701 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:33977915402 (31.6 GiB)  TX bytes:7286537507 (6.7 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1901 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1901 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:227093 (221.7 KiB)  TX bytes:227093 (221.7 KiB)

vlan2     Link encap:Ethernet  HWaddr 00:1b:21:38:ef:07  
          inet addr:10.173.2.2  Bcast:10.173.2.255  Mask:255.255.255.0
          inet6 addr: fe80::21b:21ff:fe38:ef07/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:23455246 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14448301 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:30388233442 (28.3 GiB)  TX bytes:17255375514 (16.0 GiB)

root@quadstor:~#

Code:
root@quadstor:~# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1b:21:38:ef:07

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1b:21:38:ec:f4
root@quadstor:~#

Wenn ich mir die Auslastung von eth0 anschaue, empfaengt das Interface konstant 0Mbit/s. eth1 dafuer eine ganze Menge.

Was laeuft hier falsch?

Gruesse
serow
 
Welche ESXi Version setzt du denn ein?
Prinzipiell könnte ich mir als erstes Vorstellen dass du den vSwitch so eingestellt hast dass nur eine NIC Aktiv und die andere passiv (erst im Ausfall Aktiv werdend) Eingestellt ist.

Zudem brauchst du für ein Teaming der NICs an den meisten Switchen einen Etherchannel/Portchannel, wenn der nicht funktioniert kann es sein dass der Switch einen/alle Ports abstellt.

Insgesamt bräuchte man also noch folgende Daten um dir genauer weiterhelfen zu können:

- Einstellungen am vSwitch
- Einstellungen am Hardware Switch (Cisco?)
- ESXi Version die Eingesetzt wird (je nach Version gibt es Unterschiedliche Bugs)
- Welche NICs setzt du ein? (Intel/Broadcom?)
- ggf. wäre vorerst die Auszüge aus der /var/log/vmkwarning Datei Interessant. Je nachdem welche Probleme kann es sein dass auch noch andere Logs Interessant werden.

Edit1: Gerade gelesen dass ich mich verlessen habe ^^ Du Nutzt ja nur eine Hardware Nic,
Die von mir geforderten Infos bleiben trotzdem erstmal gleich.
 
Hi,

du hast meine Frage glaube ich falsch verstanden. Es geht nicht um den ESXi, der load balancet wunderbar ueber seine 2 NICs, was man auch in esxtop erkennen kann. Wenn ich auf dem iSCSI Target sniffe sehe ich auch, dass Traffic von beiden IP Adressen der zwei VMkernel Ports ankommt - auf dem vlan2 device bzw dem bonding. Nur scheint ALB beide TCP Connections ueber denselben NIC (des iSCSI Targets) zu senden.

Code:
Primary Slave: None
Currently Active Slave: eth0

Die zwei Zeilen wundern mich auch etwas. Was Primary Slave ist kann ich nicht sagen, aber er zeigt schon nur eth0 als aktiv an.

Gruesse
serow

EDIT: Achja und fuer iSCSI Multipathing im ESXi braucht man kein teaming / etherchannel oder was auch immer auf dem pSwitch.
 
Zurück
Oben