Я создаю связующий интерфейс с 3 сетевыми картами в CentOS6.3. Я использую режим = 6, который не нуждается в аппаратной поддержке коммутатора.

Вот файл склеивания:

[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

Я использую три сервера Windows для подключения IP-адреса. Теоретически, каждый сервер получит свой MAC-адрес. Например, Сервер 1 подключится к eth1, а Сервер 2 подключится к eth2, а Сервер 3 подключится к eth3. Тогда нагрузка будет сбалансирована.

Однако Сервер 1 подключается к eth2, а Сервер 2 подключается к eth3, но Сервер 3 снова подключается к eth2. eth1 никогда не используется. Я пытался много раз, но не получилось. Наконец, я вручную связываю IP-адрес и MAC-адрес, чтобы решить эту проблему.

Почему это происходит? Есть ли способ заставить каждый сетевой адаптер использоваться? Подключено только три сервера, поэтому теоретически каждый сервер должен подключаться к отдельной сетевой карте.

Большое спасибо!

1 ответ1

1

Вы сделали предположение:

каждый сервер получит свой MAC-адрес. Например, Сервер 1 подключится к eth1, а Сервер 2 подключится к eth2, а Сервер 3 подключится к eth3.

Однако это не правильно. Согласно документации по ядру Linux:

разные коллеги используют разные аппаратные адреса

Но не каждый узел будет использовать разные аппаратные адреса.

Алгоритм балансировки нагрузки основан на хеш-таблице, вам нужно использовать более трех хостов в одном широковещательном домене для достижения равномерной балансировки нагрузки для всех ведомых устройств.

Если бы у вас было большое количество хостов, взаимодействующих с вашей связью, скажем, десятки или сотни хостов в одном и том же широковещательном домене, то число хостов было бы одинаково для всех подчиненных подчиненных.

Для такого рода распределения нагрузки вы можете использовать режим 2 или режим 4 с xmit_hash_policy установленным на layer2+3 или layer3+4 , однако при этом будет выполняться только балансировка нагрузки при передаче, это будет зависеть от переключения на обеспечить аналогичную балансировку входящей нагрузки.

(Примечание: layer3+4 не совместим с режимом 4, ваш коммутатор может жаловаться или не жаловаться, если он настроен таким образом, попробуйте и посмотрите)

Действительно, если вы хотите, чтобы ваши три системы Windows взаимодействовали с вашей системой Linux через разные интерфейсы, то единственный надежный способ сделать это - разделить интерфейсы на уровне 2 - каждая из ваших eth1/eth2/eth3 по-разному VLAN с разными IP-адресами, и каждая система Windows знает систему Linux по этому IP-адресу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .