
У меня есть сервер FreeNAS с четырьмя сетевыми интерфейсами. Трафик iSCSI проходит через два из этих интерфейсов, и каждый интерфейс имеет один IP-адрес в другой подсети. Например:
igb0: 192.168.10.1/24 igb1: 192.168.11.1/24
Есть три хоста XenServer с одним интерфейсом, выделенным для трафика iSCSI. Таким образом, на схеме два интерфейса на хранилище и три в общей сложности на хостах.
Мой план состоял в том, чтобы достичь скорости соединения с хостами до 2 Гбит/с, с ограничением в 1 Гбит/с на хост.
Проблема начинается с разной подсети. Я не знаю, как поместить два разных IP-адреса на один сетевой интерфейс на хостах XenServer. XenCenter просто не позволяет мне этого сделать. Другая идея заключалась в том, чтобы изолировать этот тип трафика с помощью разных VLAN. Это нормально, но это, похоже, тоже не работает.
EDIT: К сожалению, LACP не работает так, как ожидалось, более подробная информация есть в документации FreeNAS: «LACP и другие формы агрегации каналов, как правило, не работают хорошо с решениями виртуализации. В виртуализированной среде рассмотрите возможность использования iSCSI MPIO посредством создания портала iSCSI. Это позволяет инициатору iSCSI распознавать несколько каналов связи с целью, используя их для увеличения пропускной способности или избыточности. Это руководство содержит инструкции по настройке MPIO на ESXi».
Вот почему я пытаюсь настроить MPIO даже с помощью VLAN и хаков, чтобы достичь 2 Гбит/с для хранилища.
решение1
Если у каждого хоста есть только один интерфейс для iSCSI, то вы не сможете использовать MPIO с описанной здесь настройкой. Однако вы должны иметь возможность настроить систему FreeNAS для использования Link Aggregation (LACP), чтобы вы могли обслуживать два хоста одновременно, каждый по 1 Гбит (всего 2 Гбит от FreeNAS). Вместо MPIO рассмотрите LACP (или получите вторую сетевую карту для каждого хоста).
EDIT: Причина, по которой LACP обычно не рекомендуется для виртуализации, заключается в том, что он не делает то, чего ожидают люди. Обычно они ожидают, что, разместив два сетевых адаптера на хосте и два сетевых адаптера на хранилище, они могут удвоить пропускную способность хранилища для одной виртуальной машины (или даже от нескольких виртуальных машин на этом хосте). Это не работает таким образом, но MPIO, при правильной настройке, работает.Однако, это явно не то, что вы пытаетесь сделать. Если я правильно понял ваш исходный вопрос, у вас есть две 1Gb NIC в хранилище и одна 1Gb NIC в каждом из хостов XenServer (для хранилища, по крайней мере, — давайте проигнорируем другие сетевые подключения на данный момент). Вам нужно, чтобы каждый из хостов мог одновременно заполнить свое соединение с хранилищем.LACP на ящике для хранения — это как раз правильное решение.(LACP на хостах XenServer не нужен, так как у каждого из них есть только одна сетевая карта).
Если вы действительно настаиваете на том, чтобы это работало с MPIO, это можно сделать, но это будет ужасный грязный хак. Вам, по сути, придется настроить каждый из хостов с фиктивной сетевой картой надругойсеть хранения, затем скажите XenServer использовать две сетевые карты в конфигурации MPIO. XenCenter, конечно, не позволит вам настроить его таким образом, поэтому вам придется хакать его из командной строки. Я не собираюсь рассказывать вам, как это сделать, потому что этонеправильныйчто нужно сделать. Скорее всего, он сломается, когда вы внесете какие-либо изменения в конфигурацию, и почти наверняка сломается, когда вы обновите XenServer.
Доверьтесь сообществу: настройте LACP только на Storage box, и вы получите то, что хотите здесь. Если вам нужна аналогичная конфигурация, чтобы успокоиться, представьте себе установку 2Gb NIC в FreeNAS box. (Конечно, с учетом сказанного, другое решение — добавить 10Gb NIC в FreeNAS box и подключить его к 10Gb порту на коммутаторе, к которому подключены хосты, но я предполагаю, что на вашем коммутаторе нет 10Gb порта.)
решение2
Используйте LACP для NFS. Используйте MPIO для iSCSI.
Если ваши хосты гипервизора не имеют избыточности интерфейса хранения,этогде вы должны сосредоточить свое внимание; никаких хаков, никакой ерунды. Добавьте дополнительный NIC к вашим хостам и настройте MPIO.
решение3
ЛАКП
Связывание ссылок происходит на уровне Ethernet (L2), а не на уровне IP (L3). Протокол LACP включает хэш, который может быть хешем L2, или хешем L3, или даже хешем L4 (т. е. просмотром номеров портов TCP/UDP), и этот хэш (по замыслу) предотвращает распространение одного сеанса более чем на один физический интерфейс. Таким образом, один сеанс iSCSI к одной цели через LACP даст вам в лучшем случае только скорость одного интерфейса.
МПИО
Можно открыть несколько сеансов между одним инициатором и одной целью на заданном IP-адресе, и если это проходит через связанное соединение LACP, то есть причины, по которым вам может это понадобиться. К сожалению, не все комбинации инициатора и цели будут поддерживать это. В моем тестировании с Citrix XenServer 6.2 (установщик, который можно загрузить бесплатно, а не любая расширенная версия) мои наблюдения заключались в том, что когда включен Multipath IO, он открывает ровно один сеанс для каждого IP-адреса, который может найти. Таким образом, если вам нужны несколько путей, вам нужно настроить несколько IP-адресов на нескольких интерфейсах.
В новых версиях Linux open-iscsi есть дополнительная функция, поэтому я предполагаю, что Xenserver также получит ее на каком-то этапе.