Как использовать iSCSI MPIO для увеличения пропускной способности с помощью XenServer?

У меня есть сервер FreeNAS с четырьмя сетевыми интерфейсами. Трафик iSCSI проходит через два из этих интерфейсов, и каждый интерфейс имеет один IP-адрес в своей подсети. Как пример:

igb0: 192.168.10.1/24 igb1: 192.168.11.1/24

Существует три хоста XenServer с одним интерфейсом, предназначенным для трафика iSCSI. Таким образом, на схеме два интерфейса в хранилище и три как общее на хостах.

Мой план состоял в том, чтобы обеспечить соединение до 2 Гбит с хостами, ограниченное 1 Гбит на хост.

Проблема начинается с другой подсети. Я не знаю, как разместить два разных IP-адреса на одном сетевом интерфейсе на хостах XenServer. XenCenter просто не позволяет мне делать это. Другая идея заключалась в том, чтобы изолировать этот вид трафика с различными VLAN. Это нормально, но это тоже не работает.

РЕДАКТИРОВАТЬ: К сожалению, LACP не работает должным образом, есть больше информации о документах FreeNAS: "LACP и другие формы агрегации ссылок, как правило, не работают с решениями виртуализации. В виртуализированной среде рассмотрите использование iSCSI MPIO через создание Портал iSCSI. Это позволяет инициатору iSCSI распознать несколько ссылок на цель, используя их для увеличения пропускной способности или избыточности. Это руководство содержит инструкции по настройке MPIO в ESXi."

Вот почему я пытаюсь настроить MPIO даже с VLAN и взломами для достижения 2 Гбит / с для хранилища.

3 ответа

Решение

Если у каждого хоста есть только один интерфейс для iSCSI, вы не сможете использовать MPIO с настройкой, описанной здесь. Однако вы должны иметь возможность настроить систему FreeNAS для использования Link Aggregation (LACP), чтобы можно было одновременно обслуживать два хоста каждый по 1 Гбит (в общей сложности 2 ГБ из FreeNAS). Вместо MPIO посмотрите на LACP (или получите второй сетевой адаптер для каждого хоста).

РЕДАКТИРОВАТЬ: Причина, по которой LACP обычно не рекомендуется для виртуализации, заключается в том, что он не выполняет то, что люди ожидают. Обычно они ожидают, что, разместив две сетевые карты на хосте и две сетевые карты в хранилище, они смогут удвоить пропускную способность хранилища для одной виртуальной машины (или даже нескольких виртуальных машин на одном хосте). Это не работает таким образом, но MPIO, при правильной настройке, работает. Тем не менее, это явно не то, что вы пытаетесь сделать. Если я правильно прочитал ваш исходный вопрос, у вас есть два сетевых адаптера по 1 ГБ в ящике для хранения и по одному сетевому адаптеру по 1 ГБ в каждом из хостов XenServer (по крайней мере, для хранения - давайте на данный момент проигнорируем другое сетевое подключение). Вы хотите, чтобы каждый из хостов мог одновременно насыщать свое соединение с хранилищем. LACP на ящике для хранения данных является абсолютно правильным решением (нет необходимости в LACP на хостах XenServer, так как у них есть только один NIC каждый).

Если вы действительно настаиваете на том, чтобы сделать эту работу с MPIO, это можно сделать, но это будет ужасный грязный хак. В основном вам придется настроить каждый из хостов с помощью фиктивного сетевого адаптера в другой сети хранения, а затем указать XenServer использовать два сетевых адаптера в конфигурации MPIO. XenCenter определенно не позволит вам настроить его таким образом, поэтому вам придется взломать его из командной строки. Я не собираюсь рассказывать вам, как это сделать, потому что это неправильно. Скорее всего, он сломается при внесении изменений в конфигурацию и почти наверняка сломается при обновлении XenServer.

Доверьтесь сообществу: настройте LACP только на хранилище, и вы получите то, что вы хотите здесь. Если вам нужна аналогичная конфигурация, чтобы сконцентрироваться, подумайте об установке сетевой карты 2 ГБ в коробку FreeNAS. (Конечно, с учетом сказанного, другое решение состоит в том, чтобы добавить сетевой адаптер 10 Гбит / с в блок FreeNAS и подключить его к порту 10 Гбит на коммутаторе, к которому подключены хосты, но я предполагаю, что ваш коммутатор не есть порт 10Gb на нем.)

Используйте LACP для NFS. Используйте MPIO для iSCSI.

Если ваши хосты гипервизора не имеют избыточности интерфейса хранилища, именно на этом вы должны сосредоточить свое внимание; без хаков, без фигни. Добавьте дополнительный сетевой адаптер к вашим хостам и настройте MPIO.

LACP

Соединение каналов происходит на уровне Ethernet (L2), а не на уровне IP (L3). Протокол LACP включает в себя хэш, который может быть хэшем L2, хэшем L3 или даже хэшем L4 (т. Е. Просмотр номеров портов TCP/UDP), и этот хеш (по замыслу) предотвращает один сеанс, охватывающий более одного физического интерфейса. Таким образом, один сеанс iSCSI с одной целью через LACP в лучшем случае даст вам скорость только одного интерфейса.

MPIO

Можно открыть несколько сеансов между одним инициатором и одной целью на заданном IP-адресе, и если это происходит по соединенному соединению LACP, есть причины, по которым вы можете захотеть. К сожалению, не все комбинации инициатора и цели поддержат это. В моем тестировании с Citrix XenServer 6.2 (установщик, который можно свободно загружать, а не с какой-либо расширенной версией), я наблюдал, что, когда Multipath IO включен, он открывает ровно одну сессию для каждого IP-адреса, который он может найти. Таким образом, если вам нужно несколько путей, вам нужно настроить несколько IP-адресов на нескольких интерфейсах.

Более новые версии Linux open-iscsi имеют дополнительную функцию, так что я думаю, что Xenserver также получит это тоже на каком-то этапе.

Другие вопросы по тегам