Dlaczego dwa serwery łączą tę samą kartę sieciową, gdy używam łączenia w systemie Linux z trybem = 6?

0

Tworzę interfejs łączący z 3 kartami sieciowymi w CentOS6.3. Używam trybu = 6, który nie wymaga obsługi sprzętowej przełącznika.

Oto plik spajania:

[root@~]cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

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

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:e0:66:d3:70:b1
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:e0:66:d3:70:b2
Slave queue ID: 0

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:e0:66:d3:70:b3
Slave queue ID: 0

Używam trzech serwerów Windows do połączenia powiązanego adresu IP. Teoretycznie każdy serwer otrzyma inny adres MAC. Na przykład serwer 1 połączy się z eth1, a serwer 2 połączy się z eth2, a serwer 3 połączy się z eth3. Następnie obciążenie zostanie zrównoważone.

Jednak serwer 1 łączy się z eth2, a serwer 2 łączy się z eth3, ale serwer 3 ponownie łączy się z eth2. eth1 nigdy nie jest używany. Próbowałem wiele razy, ale nie udało mi się. Wreszcie ręcznie wiążę ze sobą adres IP i adres MAC, aby rozwiązać ten problem.

Dlaczego to się dzieje? Czy istnieje sposób, aby każda karta sieciowa była używana? Są podłączone tylko trzy serwery, więc teoretycznie każdy serwer powinien połączyć się z inną kartą sieciową.

Wielkie dzięki!

flypen
źródło

Odpowiedzi:

1

Przyjąłeś założenie:

każdy serwer otrzyma inny adres MAC. Na przykład serwer 1 połączy się z eth1, a serwer 2 połączy się z eth2, a serwer 3 połączy się z eth3.

Jednak to nie jest poprawne. Zgodnie z dokumentacją łączenia jądra systemu Linux :

różni partnerzy używają różnych adresów sprzętowych

Ale nie każdy sieci peer będzie użyć innego adresu sprzętowego.

Algorytm równoważenia obciążenia opiera się na tabeli skrótów. Aby uzyskać równe równoważenie obciążenia we wszystkich urządzeniach podrzędnych, należy użyć więcej niż trzech hostów w tej samej domenie rozgłoszeniowej.

Jeśli miałbyś dużą liczbę hostów komunikujących się z twoją obligacją, powiedzmy dziesiątki lub setki hostów w tej samej domenie rozgłoszeniowej, liczba hostów byłaby dość równa dla wszystkich niewolników obligacji.

Jeśli chodzi o rodzaj równoważenia obciążenia, którego szukasz, być może lepiej będzie użyć Trybu 2 lub Trybu 4 z xmit_hash_policyustawionym na layer2+3lub layer3+4, ale to spowoduje tylko równoważenie obciążenia transmisji, to do przełącznika należy zapewnienie podobnego równoważenia obciążenia przychodzącego.

(Uwaga: layer3+4nie jest zgodny z Trybem 4, twój przełącznik może, ale nie musi narzekać, jeśli jest skonfigurowany w ten sposób, spróbuj i zobacz)

Naprawdę, jeśli chcesz, aby trzy systemy Windows komunikowały się z systemem Linux za pomocą różnych interfejsów, jedynym 100% niezawodnym sposobem na to jest oddzielenie interfejsów w warstwie 2 - posiadanie każdego z interfejsów eth1 / eth2 / eth3 w innym Sieć VLAN z innym adresem IP, a każdy z systemów Windows zna system Linux pod tym innym adresem IP.

suprjami
źródło