У меня есть кластер HyperV, состоящий из 3 узлов. Каждый хост подключен к обоим коммутаторам Nexus 5548, работающим по каналу Ethernet. LACP на коммутаторе и объединение сетевой карты с использованием Broadcom 802.3ad на стороне сервера. Это дает мне 2 ГБ полосы пропускания, а также обеспечивает отказоустойчивость.
Проблема, с которой я сталкиваюсь, возникает при выполнении живой миграции. Перед живой миграцией оба коммутатора Nexus отображают MAC-адрес виртуальной машины в таблице ARP. После миграции один переключатель показывает MAC-адрес виртуальной машины, а другой - MAC-адрес хоста HyperV, на который он переместился.
Я запустил захват пакетов и увидел, что хост HyperV отправляет бесплатный ARP с IP-адресом виртуальной машины и MAC-адресом хоста вместо MAC-адреса виртуальной машины. Когда это происходит, я теряю подключение к уровню 3. Мне нужно вручную удалить запись ARP с коммутатора или подождать около 7 минут, чтобы она исправилась сама собой.
Я немного огляделся, и у людей возникают аналогичные проблемы при объединении сетевых адаптеров с использованием Broadcom. Кто-нибудь это видел? Любой совет?
-------- Правка добавлена ниже
У меня эта проблема возникает только при объединении с использованием Link Aggregation 802.3ad. Возможности объединения Broadcom:
Я переключился на интеллектуальную балансировку нагрузки и виртуальную машину Live Migrates без потери сетевого подключения. Однако таблицы ARP на коммутаторах Nexus синхронизированы, но они показывают MAC-адрес хоста, а не виртуальной машины. Это противоположно тому, что я думал. Разве в таблицах ARP коммутаторов не должен отображаться MAC-адрес виртуальной машины? Если нет, и они должны показать MAC хоста, то почему?
Ладно. После 3 недель напряженной битвы я, наконец, со всем разобрался.
Я открыл кейс со службой поддержки Broadcom, и после того, как несколько дней ходил туда-сюда, вот ответ, который я получил от разработчика программного обеспечения Broadcom.
Для многих сетей нормально видеть пару (vm_ipv4, host_mac_addr) или (vm_ipv6, host_mac_addr) на удаленной станции или коммутаторе. Basp будет обрабатывать мультиплексирование адресов и следить за тем, чтобы виртуальные машины получали правильные пакеты.
Однако для некоторых сетевых конфигураций требуется, чтобы IP-адрес отображался в vm_mac_addr. Если вы хотите использовать vm_mac_addr вместо host_mac_addr, вам необходимо добавить ключ реестра HyperVMode, указанный ниже.
Если желательно не мультиплексировать MAC-адрес виртуальной машины, то есть не заменять его мак-адресом nic, вам необходимо установить следующую запись реестра на хосте, на котором работает виртуальная машина, и перезагрузить систему, чтобы она приняла эффект. Установка этой записи в реестре приводит к менее эффективной работе с помощью basp, но это необходимо в определенных настройках, например, когда есть DHCP-сервер, который требует использования MAC-адреса виртуальной машины для назначения IP-адреса. Установив эту запись реестра, вы также должны увидеть фактический mac-адрес виртуальной машины в таблице arp всех удаленных станций, к которым подключена виртуальная машина.
Эта запись реестра может быть добавлена после создания группы, но до создания виртуального адаптера Hyper-v, использующего группу. Значение 1 настроит basp на использование Mac-адреса виртуальной машины вместо MAC-адреса nic в команде slb при балансировке нагрузки. Значение 0 или его отсутствие настраивает basp на мультиплексирование / демультиплексирование MAC-адреса виртуальной машины с MAC-адресом одного из сетевых устройств в команде.
Установите «1» в пути реестра к правильному номеру команды, к которой будет применяться этот режим, и перезагрузите систему. Обратите внимание, что эта запись реестра будет удалена при удалении группы, и ее необходимо создавать заново каждый раз при создании группы. В будущих версиях BACS будет флажок, который установит эту запись в реестр и предотвратит необходимость ее добавления при создании группы и перезагрузке системы. Эта запись реестра доступна только на> = basp6-1.5.1.
Редактор реестра Windows версии 5.00
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Blfp \ Parameters \ 1] «HyperVMode» = dword: 00000001
PS. Помимо того, что эта запись реестра доступна только на> = basp6-1.5.1, она применима только к типам групп slb и не применяется к командам lacp или gec.
Итак, с этими словами я попробовал. Сначала я применил созданный ключ реестра. Затем я переключил виртуальный коммутатор в режим частной сети виртуальной машины. Я дал серверу быструю перезагрузку. Наконец, когда сервер вернулся в сеть, я снова настроил виртуальный коммутатор во внешний режим и выбрал виртуальный адаптер BASP. Я протестировал Live Migrations, и все работало отлично, а таблицы ARP в Nexus показали VM_IP и VM-MAC. ДА !!!!
Вот настройка в SCVMM. У меня были проблемы, как у вас, пока я не включил режим транка для хоста. Если щелкнуть правой кнопкой мыши узел в SCVMM -> Свойства -> вкладка Сеть