У меня довольно простая конфигурация: Windows Server 2012 Hyper V Host с двумя виртуальными машинами (оба Server 2012), одна для IIS, одна для SQL Server. Все они подключаются через физический сетевой адаптер
Вчера вечером я попытался добавить виртуальный коммутатор и настроить виртуальные сетевые адаптеры на двух виртуальных машинах (в дополнение к физическому сетевому адаптеру).
Я еще не переключил серверы на фактическое использование виртуальных сетевых адаптеров, но по какой-то причине это нарушило скорость соединения между двумя виртуальными машинами - даже если виртуальные сетевые адаптеры не использовались. Мы говорим от 200-500 миллисекунд до 30-90 секунд на запрос!
Итак, сегодня утром, увидев ужасное влияние, которое это оказало на мой сайт, я отключил две виртуальные сетевые карты, поскольку это все, что я изменил, и, конечно же, скорости вернулись.
В конечном итоге мне нужно переключить их на использование v-NIC, но сначала мне нужно решить эту проблему.
Что может быть причиной этого? И что я могу сделать для его устранения?
Дополнительные детали:
На самом деле настройка очень проста (что может быть частью моей проблемы, я могу чрезмерно упрощать то, что необходимо для этой настройки).
У меня один сервер с одной (физической) сетевой картой. В настоящее время этот сетевой адаптер используется для связи между v-host и Интернетом, а также между двумя виртуальными машинами и Интернетом. Он также используется для внутренней связи между двумя виртуальными машинами.
Однако я пытаюсь переключить внутреннюю коммуникацию на прохождение виртуального переключателя через vNIC, освобождая физическую сетевую карту для использования только для внешней коммуникации.
Поэтому я добавил к v-host внутренний виртуальный коммутатор, а затем добавил виртуальную сетевую карту к каждой виртуальной машине.
После этого скорость моего соединения - через физическую сетевую карту - резко упала. Отключение vNIC (через сетевую конфигурацию виртуальных машин) вернуло скорость к норме.
Ниже приведены экраны конфигурации виртуальной машины для внешнего физического сетевого адаптера и внутреннего виртуального сетевого адаптера (только на одной виртуальной машине, поскольку они оба настроены одинаково).
Еще один раунд деталей
Если углубиться в проблему, выясняется, что сетевые адаптеры Broadcom печально известны проблемами производительности. Этот сервер оснащен двумя сетевыми адаптерами Broadcom BCM5716C. Вот несколько ссылок на обсуждение известных проблем:
Медленный доступ к сети на виртуальных машинах - Broadcom и Hyper-V
Очень медленная сеть виртуальной машины Hyper-V - VMQ - Broadcom
Итак, я начал играть с настройками, отключая различные настройки по очереди. Ни одно из изменений, похоже, не повлияло на проблему - если я включу гостевой vNIC, скорость загрузки упадет до 25+ секунд. Снова отключите, они вернутся к 250 мс - фактор 100!
Еще попробовал установить последние версии драйверов от Broadcom, без разницы.
На данный момент я считаю, что это проблема совместимости между Broadcom NIC и Hyper-V. Но я не хочу заказывать новые сетевые адаптеры и пытаться закрыть сайт, установить и настроить их только для того, чтобы проблема не исчезла.
Так что было бы неплохо, если бы я мог окончательно исключить или исключить сетевую карту.
Конфигурация физической сетевой карты в диспетчере коммутаторов
Конфигурация виртуального коммутатора в диспетчере коммутаторов
Конфигурация физической сетевой карты на виртуальной машине БД
Конфигурация виртуальной сетевой карты на виртуальной машине БД
У меня очень похожая установка. Я нашел здесь ответ (Чрезвычайно медленная передача файлов на виртуальную машину Hyper-V на локальном компьютере)
С чипсетом Broadcom я отключил виртуальные очереди, и все задержки исчезли. Внесите это изменение в физический сетевой адаптер, а не на виртуальный.
Насколько мне известно, на Hyper-V нет такой вещи, как физический сквозной переход NIC. Вы создали vSwitch с именем «Physical NIC», который сопоставлен с физическим адаптером и позволяет использовать ОС для управления. На каждой виртуальной машине есть виртуальный сетевой адаптер, использующий этот переключатель. Почему вы хотите переключаться с одного vswitch на другой? Кроме того, что «новый» ни к чему не подключен, я действительно не вижу в этом смысла.
Hyper-V достаточно умен, чтобы отправлять трафик с vswitch на физический ник только тогда, когда трафик перенаправляется с хоста, а это означает, что вы уже делаете то, что пытаетесь достичь.