Добрый день.
Настраиваю кластер Microsoft Network Load Balancing в unicast режиме. Этот режим работает так, что мак адрес сетевой карты на каждом узле подменяется на один и тот же, на всех узлах кластера и имеет вид 02-bf-xx-xx... поэтому, что-бы не было одинаковых маков на разных портах, узлы кластера не используют мак адрес вида 02-bf при ответах, а в source пакета подставляют мак вида 02-порядковый_номер_узла-xx-xx... соответственно коммутатор не может добавить(выучить) соответствие порта и мак адрес кластера в таблицу и шлет пакеты на все порты, из-за чего начинаются проблемы с производительностью. Для решения этой проблемы советуют все узлы кластера подключитть через HUB, а уже хаб подключать к порту коммутатора и таким образом коммутатор сможет добавить(выучить) мак вида 02-bf в таблицу коммутации и unicast шторма не будет. Вопрос в том, что если узлы никогда не отвечают с мак адреса 02-bf, чем поможет хаб? Каким образом он помогает коммутатору выучить мак? Какая принципиальная разница подключены ли члены NLB в свитч и в хаб?
Вопрос не в том, где найти хаб, а в том, что на сайте майкрософта пишут что хаб решает проблему:
https://support.microsoft.com/en-us/help/4494444/c...
Option 1: Insert a hub between the network switch and the NLB nodes. The hub uses the NLB unicast MAC address and connects to a single switch port, so the switch can correctly manage its MAC address table. The hub forwards traffic to the NLB nodes, and servers that connect to the other switch ports don't receive the extra NLB traffic.
Но как оказалось на практике, хаб ничего не решает.
Тестовый стенд:
( сервер1, сервер2, оба в кластере NLB ) <-> хаб <-> свитч <-> ноут
В итоге, на ноуте(который подключен в свитч) Wireshark видит абсолютно все пакеты ходящие между сервер1 и сервер2, которые подключены к хабу. Убирая и подставляя в схему хаб ничего не меняется.
Либо произошли изменения в NLB, либо на сайте MS указана неверная информация.
И зачем вам понадобилась столь старинная технология?
Сервера отвечают на arp запросы собственным mac-адресом, а в заголовках пакетов указывают ip и Mac кластера.
А чтобы не флудило во все порты, сервера должны сидеть в своем отдельном vlan - флуд будет тлько в его пределах. Ну или хаб, да (поди ещё поищи его) - тогда для свитча все будет на одном порту.
Ну и Майкрософт рекомендует не использовать unicast в продакшене из-за этих сайдэффектов
Спасибо за Ваш ответ. Я уже пробую другие варианты, а этот вопрос задаю чтобы разобраться до конца как все работает, но вот не могу :(. Почему свитч не может выучить кластерный мак? Потому что в souce пакетов стоит маскированный? Или потому что пакеты приходят с разных портов? я оставляю одну ноду, но спам так и продолжается и 02- bf на свитче не нахожу, хотя получается мак остается только на одном порту... Вобщем в какой момент свитч добавляет в мак таблицу мак адрес вида 02-bf или он его не добавляет, при подключении через хаб?
ce11dwe11er, мак кластера свитч не заучивает, когда сервера отвечают с нескольких портов. Поэтому свитч будет всегда флудить на все порты этого vlan при попытке доставить пакеты серверам. Хаб решает эту проблему, т.к. флудить - его стихия, а свитч у весь трафик с кластерного мака уже будет приходить на 1 порт - для него все будет выглядит, будто это 1 сервер.