Multimode VIF в NetApp (часть 2)
MAC Load-Balancing
Этот алгоритм используется не так часто, так как ему присущ ряд недостатков. Основанный на использовании MAC алгоритм балансировки вычисляет XOR между MAC-адресами пар источника и получателя. ??сточником будет MAC-адрес сетевой карты хосте, подключенного к контроллеру NetApp. Получателем будет MAC-адрес VIF-интерфейса контроллера NetApp. Алгоритм работает хорошо, когда хосты и контроллер NetApp размещаются в одной подсети или VLAN. Когда хост расположен в другой подсети относительно контроллера NetApp, мы сталкиваемся с недостатками алгоритма. Для понимания того, что происходит, нам надо разобраться с тем, что происходит с фреймом Ethernet, когда он маршрутизируется по сети.
Допустим, мы хотим соединить Host1 с Controller1.
Host1 IP address - 10.10.1.10/24 (default gateway для Host1 - 10.10.1.1)
Controller1 IP address - 10.10.3.100/24 (default gateway для Controller1 - 10.10.3.1)
Выше мы задали для Host1 и Controller1 две отдельные подсети. Единственный путь передачи данных в том случае - через роутер. В рассматриваемом случае, роутер для подсетей 10.10.1.1 и 10.10.3.1 это один и тот же физический роутер, эти адреса просто два физических его интерфейса. Задача роутера - связать две подсети, и обеспечить передачу данных между ними.
Когда Host1 передает frame предназначенный для Controller1, он отправляет его на роутер по адресу default gateway, так как видит, что адрес 10.10.3.100 это IP-адрес не его локальной подсети, потому он отправляет его в адрес default gateway, по которому расположен роутер, в надежде, что роутер знает что с ним делать дальше, и найдет путь к получателю.
с Host1 на Host1Router
-IP Source: Host1 (10.10.1.10)
-MAC Source: Host1
-IP Destination: VIFController1 (10.10.3.100)
-MAC Destination: Host1DefaultRouter
с Host1Router на Controller1
-IP Source: Host1 (10.10.1.10)
-MAC Source: Controller1DefaultRouter
-IP Destination: VIFController1 (10.10.3.100)
-MAC Destination: VIFController1
Обратите внимание: MAC-адреса источника и получателя меняются, когда фрейм передается по сети. Так работает маршрутизация, и когда маршрутизаторы встречаются на пути несколько раз, то и MAC будет изменен несколько раз по пути от источника к получателю. Не важно сколько раз конкретно, главное что он меняется когда фрейм попадает в локальный сегмент контроллера. MAC источника будет являться MAC-ом роутера, а получателем – MAC-адрес VIF контроллера. Для полного понимания проблемы, допустим у нас есть четыре 1Gbps канала, объединенных в Etherchannel на Controller1. Допустим у нас есть 50 хостов в той же подсети, что и Host1. Пары source и destination для соединения Host1 к Controller1 будут ровно теми же, что и любых других хостов в подсети host1, так как MAC-адреса source и destination всегда будут равны Controller1DefaultRouter и VIFController1.
IP Load-Balancing
IP Load-Balancing это параметр по умолчанию для всех NetApp MultiMode VIF и наиболее часто используемый на практике метод построения MultiMode VIF на сегодня. Алгоритм не отличается от уже рассмотренного алгоритма с использованием MAC, который мы расмотрели выше. Разница только в том, что мы используем IP-адреса ??сточника (Source) и Получателя (Destination), которые, если вы посмотрите рассмотренный ранее вариант, никогда не менятся, в отличие от адресов MAC. Факт того, что IP-адреса не меняются, создает сценарий, в котором у вас больше шансов получить уникальные пары, что, в результате, приводит к более равномерному распределению трафика по физическим линкам.
Для правильного понимания механизма работы следует учесть один важный момент, касающийся пар IP-адресов source и destination: при вычислении пар source-destination принимаются во внимание только последние октеты адресов. Это означает, что в адресе 10.10.1.10 будет использован для идентификации только 10 – последний октет адреса, в адресе 10.10.3.100 - только 100. Принимать во внимание этот момент следует в случае развертывания системы в сети, состоящей из нескольких подсетей, в этом случае может получиться так, что адреса из разных подсетей (но с одинаковым последним октетом) будут передаваться по одному физическому линку.
IP Aliasing
Понимание принципов алгоритмов Load-Balancing позволяет вам, как администратору, использовать их к собственной выгоде. Все NetApp VIF и физичские интерфейсы имеют возможность назначить им так называемые “алиасы”. Это просто дополнительный адрес для самого VIF. Рекомендуется назначит адреса(для VIF + определенное количество алиасов) равное числу физических линков в EtherChannel между контроллером и коммутатором, к которому подключен контроллер. Таким образом если вы используете VIF, состоящий из 4 штук 1Gbps линков в виде MultiMode VIF между контроллером и коммутатором, то назначьте один адрес для VIF и добавьте к нему три алиаса для того же VIF.
Простое назначение дополнительных адресов не поможет использовать преимущества дополнительных адресов. Вы должны убедиться, что хосты, которые смонтировали данные с контроллеров NetApp используют все эти адреса. Этого можно достичь несколькими разными путями, в зависимости от того, какие протоколы используются для доступа к данным, ниже приведены некоторые примеры для NFS.
Oracle NFS - хосты с Oracle должны монтировать тома NFS равномерно распределяя их по доступным IP-адресам контроллера. Если у вас есть 4 различных NFS ресурса, то смонтируйте их используя для доступа четыре различных IP-адреса контроллера. Каждый ресурс будет иметь различную пару из источника и получателя (source and destination pair) и полоса передачи между хостом и контроллером будет использована более эффективно.
VMware NFS – хосты ESX должны монтировать каждый NFS Datastore через различные IP-адреса контроллера NetApp. Такой вариант наилучшим способом использует один интерфейс VMkernel (адрес источника (source)). Если у вас больше датасторов, чем IP-адресов, то просто распределите датасторы по доступным IP-адресам контроллера NetApp поравномернее.
Обратите внимание: Когда вы назначаете алиас интерфейсу, и у вас установлены и включены партнерские отношения между двумя контроллерами (и, естественно, их физическими интерфейсами) кластера NetApp, то в случае кластерного файловера алиасы также перенесутся на партнерский интерфейс
Ну и, наконец, обещанные шаблоны:
LACP - Dynamic MultiMode VIF
____________________________________
Filer RC File
#Manually Edited Filer RC file 3 March, 2009, by Trey Layton
hostname filer a
vif create lacp template-vif1 -b ip e0a e0b e0c e0d
ifconfig template-vif1 10.10.3.100 netmask 255.255.255.0 mtusize 1500 partner (partner-vif-name)
ifconfig template-vif1 alias 10.10.3.101 netmask 255.255.255.0
ifconfig template-vif1 alias 10.10.3.102 netmask 255.255.255.0
ifconfig template-vif1 alias 10.10.3.103 netmask 255.255.255.0
route add default 10.10.3.1 1
routed on
options dns.domainname template.netapp.com
options dns.enable on
options nis.enable off
savecore
_____________________________________
Cisco Configuration
!!!!!! The following interface is a virtual interface for the etherchannel.
!!!!!!This interface must be referenced
!!!!!! on the physical interface to create the channel.
interface Port-channel 1
description Virtual Interface for Etherchannel to filer
switchport
switchport mode access
switchport nonegotiate
spanning-tree guard loop
spanning-tree portfast
!
!!!!! The following are the physical interfaces in the channel.
!!!!! The above is the virtual interface for the channel.
!!!!! Each physical interface will reference the virtual interface.
interface GigabitEthernet 2/12
description filer interface e0a
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
!!!!!!
!!!!!! The above channel-group command is the command
!!!!!! which bonds the physical interface to the virtual interface
!!!!!! previously created.
!!!!!! The command following the channel number is the mode - active is for LACP.
!!!!!!
!
interface GigabitEthernet 2/13
description filer interface e0b
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
!
interface GigabitEthernet 2/14
description filer interface e0c
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
!
interface GigabitEthernet 2/15
description filer interface e0d
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-protocol lacp
channel-group 1 mode active
Static EtherChannel - Static MultiMode VIF
____________________________________
Filer RC File
#Manually Edited Filer RC file 3 March, 2009, by Trey Layton
hostname filer a
vif create multi template-vif1 -b ip e0a e0b e0c e0d
ifconfig template-vif1 10.10.3.100 netmask 255.255.255.0 mtusize 1500 partner (partner-vif-name)
ifconfig template-vif1 alias 10.10.3.101 netmask 255.255.255.0
ifconfig template-vif1 alias 10.10.3.102 netmask 255.255.255.0
ifconfig template-vif1 alias 10.10.3.103 netmask 255.255.255.0
route add default 10.10.3.1 1
routed on
options dns.domainname template.netapp.com
options dns.enable on
options nis.enable off
savecore
_____________________________________
Cisco Configuration
!!!!!! The following interface is a virtual interface for the etherchannel.
!!!!!! This interface must be referenced
!!!!!! on the physical interface to create the channel.
interface Port-channel 1
description Virtual Interface for Etherchannel to filer
switchport
switchport mode access
switchport nonegotiate
spanning-tree guard loop
spanning-tree portfast
!
interface GigabitEthernet 2/12
description filer interface e0a
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-group 1 mode on
!!!!!!
!!!!!! The above channel-group command is the command
!!!!!! which bonds the physical interface to the virtual interface
!!!!!! previously created. The command following the channel number
!!!!!! is the mode - active is for LACP.
!
interface GigabitEthernet 2/13
description filer interface e0b
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-group 1 mode on
!
interface GigabitEthernet 2/14
description filer interface e0c
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-group 1 mode on
!
interface GigabitEthernet 2/15
description filer interface e0d
switchport
switchport mode access
switchport nonegotiate
flowcontrol receive on
no cdp enable
spanning-tree guard loop
spanning-tree portfast
channel-group 1 mode on
_____________________________________
Примечание читателя: Бывают случаи, когда включение в конфигурацию Cisco параметр flowcontrol recieve on мешает правильной работе LACP. Проверить.
Примечание romx: Я вижу все недостатки переведенного текста, но увы, пока ничего приемлемее не нашлось, хоть самому пиши :(
UPD: На рассмотренную тему рекомендую смотреть более поздний пост - Ethernet Storage и приведенный там перевод.
возможно он не заработал потому что со стороны головы не было ‘ifconfig e0a flowcontrol send’ (по умолчанию - full) - а в циске стоит принудиловка только на receive… какой-то косяк в negotiation
Multimode VIF в NetApp (часть 2) - почему-то не могу найти в Вашем блоге первую часть статьи :(
Он случайно затерся своей второй частью. Если очень надо, то восстановлю на следующей неделе.
Если не затруднит, восстановите пожалуйста.
Приветствую, вторая часть отличная, спасибо, но хочется прочитать и первую. Может к годовому юбилею восстановите?
Anton: нет смысла. Эти два поста являются, фактически, главой из документа TR-3802 Ethernet Storage, того же автора, который я первел целиком и выложил в техбиблиотеку Netwell, о чем есть ссылка в UPD.
Лучше его читайте.
В
ifconfig e0a 10.1.1.100 netmask 255.255.255.0 mtusize 9000 partner
10.1.1.200 flowcontrol send
что такое 10.1.1.200? По логике вещей это должен быть свич. ??ли всё-же это партнёр (сервер который примапил шару/лун)?
bbk:
Это IP интерфейса контроллера-партнера. Того, на который будет перенесен данный интерфейс, в случае отказа данного контроллера.
В результате тестирования я убедился в том, что если речь о IP балансировке в рамках одной подсети и количество физических серверов как минимум равно количеству агрегированных физических линков, то никакие алиасы цеплять не нужно. Как правило эти условия соблюдаются автоматически.
От алиасов только голавная боль при работе с NFS - такие шары примапленные по разным IP адресам (NAS’a) видятся как разные датасторы и соответственно vMoution произойти не может.
??нтересно, а если мапить с разных IP адресов (хоста) на один IP адрес (СХД) будет ли vSphere’а понимать, что это один и тот же датастор? Если да, то в такой схеме проблем с vMoution по идее быть не должно. Но с этим есть смысл замарачиваться, только если в вышеописанных условиях вместо одной подсети - несколько и последние октеты совпадают у нескольких хостов. Но с другой стороны проще уже выполнить условие уникальности последнего октета узлов подключённых к СХД.