Thursday, December 24, 2015

Строим отказоустойчивую сетевую инфраструктуру предприятия.


Часть 1: Spanning Tree Protocol. MSTP на HP ProCurve




     В прошлых заметках мы немного поборолись с проблемами создаваемыми дешёвым оборудованием, а в этот раз начнём серию для "начинающих профессионалов", по построению хорошей отказоустойчивой сети из дорогого оборудования :)

     Задача состоит в том, чтобы создать сеть, в которой нет единой точки отказа. Все коммутаторы соединены минимум двумя линками с минимум двумя соседями, а все серверы подключены к двум коммутаторам. Пока не будем перегружать схему резервированием каналов связи и телефонии, оставим это для следующих заметок, а усложним задачу тем, что у нас по стечению обстоятельств в сети оборудование хоть и дорогое, но разношёрстное, не полностью совместимое по некоторым протоколам. Например Cisco и HP ProCurve... Так иногда случается: готовишься к шеститонникам, тебе сообщают, что вместо Cisco будет Huawei, а получаешь в итоге прокурвы... ;)
     Хотелось бы обратить внимание, что использовать оборудование разных производителей в сети - не самая лучшая идея! И надо всеми силами избегать зоопарка в сетевом оборудовании. Но если уж так случилось, то придётся настраивать :) В целом случай у нас не очень тяжёлый. Во-первых ProCurve далеко не плохое оборудование, да и получается, что основная LAN полностью на HP, а Cisco коммутаторы лишь "сбоку", и не будут выполнять ключевые задачи. Так что особых проблем быть не должно.
     Конечно, я преданный поклонник Cisco, ведь кто привык к VTP, HSRP и EIGRP со слезами и комом в горле пользуется GVRP, VRRP и OSPF :)

Собственно схемка нашей сети:
































     Итак, оборудование Cisco у нас уже не очень молодое, хоть и гигабитное, а вот HP приехали свежие, все с 10G линками, потому HP и будет основным ядром сети. Cisco используем как дополнение, для различных серверов которые не создают очень большого трафика. Cisco и HP так же соединим несколькими транками, хоть и без излишеств.
  1. Собираем, монтируем, кроссируем, включаем, делаем базовые настройки!
  2. Все дополнительные линки у нас пока отключены физически, что бы пока мы не настроили Spanning Tree, у нас не легла сеть от петель.
  3. Оплакивая прекрасный VTP v3 от Cisco включаем GVRP и радуемся, что хотя бы в виде динамических, но VLAN'ы у нас на всех коммутаторах одинаковые :)
  4. Разрешаем на всех транках между коммутаторами идинаковый список VLAN'ов! Одинаково нужно для того, что бы у нас не получилось, что Spanning Tree блокирует VLAN там, где он прописан на транке, как разрешенный, и пытается пропустить там, где вы его указать забыли.
  5. За неимением HSRP, настраиваем виртуальный IP VRRP для пользовательских VLAN на HP1 и HP2, чтобы шлюз по-умолчанию был всегда, если жив хотя бы один из этих коммутаторов.
     Настройка Spanning Tree на HP ProCurve.

     Настраивать будем MSTP, как наиболее логичный выбор для большой сети с большим чистом VLAN. Почему более логичный ? Да потому, что в отличие от разных вариаций PVST, в MSTP можно разбить вланы на группы привязанные к instance, и сколько вы опишете instances, столько и будет у вас процессов. В случае PVST у вас будет столько процессов, сколько всего VLAN'ов в сети, т.е. память будет поедаться тем больше, чем больше VLAN у вас есть. Например в случае 100 VLAN у вас будет 100 процессов - жуть.

     Хоть настраиваем мы ProCurve, но воспользуемся рекомендациями Cisco по настройке MSTP. Cisco рекомендует использовать один регион во всей сети, минимальное количество instances и обязательно задавать приоритеты для root bridge. Если вы не знаете, что такое регион, root bridge и instances, то лучше сначала почитать вот это: Wikipedia: Spanning Tree Protocol, после чего все станет намного легче ;)
     Так же очень настоятельно рекомендую заранее разбить сразу весь возможный диапазон VLAN на instances, потому что каждое изменение instance в последствии, когда у вас уже будет действующая сеть, будет приводить к пересчёту топологии и неприятному пропаданию или замиранию сетевого обмена в сети. Плюс если у вас будут отличаться instances на коммутаторах, то все вообще будет разваливаться, и топология пересчитываться в единственный instance 0 для взаимодействия с коммутаторами у которых не совпадают настройки.

     Итак, начинаем настраивать. Создаём два instance, с учетом того, что основные линки у нас парами, и городить число instances больше числа линков смысла нет. Убеждаемся, что spanning tree у нас отключен и начинаем конфигурить:

Настраиваем корневой HP1:
Задаём имя региона MSTP. Естественно, оно должно совпадать во всей сети:
spanning-tree config-name "H2SO4"
Номер ревизии конфига тоже должен обязательно совпадать:
spanning-tree config-revision 1
Я разбил все возможные VLAN на 2 instance в соответствии с нагрузкой на них в моей сети, примерно распределив ее поровну:
spanning-tree instance 1 vlan 1-35 101 111-500 1001-4094
spanning-tree instance 2 vlan 36-100 102-110 501-1000
Этот коммутатор будет рутом для instance 1:
spanning-tree instance 1 root primary
Общий приоритет коммутатора, точнее данного root bridge в spanning tree регионе:
spanning-tree priority 1

Настраиваем корневой HP2:
spanning-tree config-name "H2SO4"
spanning-tree config-revision 1
spanning-tree instance 1 vlan 1-35 101 111-500 1001-4094
spanning-tree instance 2 vlan 36-100 102-110 501-1000
Здесь все тоже самое, как и для HP1, но он root уже для instance 2, и приоритет этого root bridge в регионе пониже, т.е. 2
spanning-tree instance 2 root primary
spanning-tree priority 2

Настраиваем этажные коммутаторы HP Ax:
spanning-tree config-name "H2SO4"
spanning-tree config-revision 1
spanning-tree instance 1 vlan 1-35 101 111-500 1001-4094
spanning-tree instance 2 vlan 36-100 102-110 501-1000
Здесь конфиг должен быть идентичным, только не задаём никаких приоритетов, так как этажные нам не нужны во главе MSTP региона :)

Все, включаем spanning tree на всех коммутаторах:
spanning-tree enable

После ввода этой команды вы на какое-то время потеряете связь с коммутатором, пока просчитается топология Spanning Tree и все порты разблокируются. После этого можем подключать дополнительные линки и ждать их активации :)

   Все, настройка на HP ProCurve закончена, можно теперь посмотреть статистику в консоле коммутаторов :)

Итак, смотрим на HP1:
sh spanning-tree
Multiple Spanning Tree (MST) Information

  STP Enabled   : Yes
  Force Version : MSTP-operation
  IST Mapped VLANs : 1025-4094
  Switch MAC Address : 001871-b6a000
  Switch Priority    : 32768
  Max Age  : 20
  Max Hops : 20
  Forward Delay : 15

  Topology Change Count  : 9
  Time Since Last Change : 87 secs

  CST Root MAC Address : 001871-b6a000
  CST Root Priority    : 32768
  CST Root Path Cost   : 0
  CST Root Port        : This switch is root

  IST Regional Root MAC Address : 001871-b6a000
  IST Regional Root Priority    : 32768
  IST Regional Root Path Cost   : 0
  IST Remaining Hops            : 20

HP1, как и предписано ему, стал главным в MSTP регионе.

 sh spanning-tree instance 1

  E1    10GbE-SR   2000      128      Designated Forwarding   001b3f-c1a800
  E2    10GbE-SR   2000      128      Designated Forwarding   001b3f-c1a800
  E3    10GbE-SR   2000      128      Designated Forwarding   001b3f-c1a800
  E4               Auto      128      Disabled   Disabled
  F1    10GbE-SR   2000      128      Designated Forwarding   001b3f-c1a800
  F2    10GbE-SR   2000      128      Designated Forwarding   001b3f-c1a800
  F3               Auto      128      Disabled   Disabled
  F4               Auto      128      Disabled   Disabled

sh spanning-tree instance 2

  E1    10GbE-SR   2000      128      Alternate  Blocking     001b3f-582100
  E2    10GbE-SR   2000      128      Alternate  Blocking     001b3f-57c800
  E3    10GbE-SR   2000      128      Alternate  Blocking     0019bb-11ac00
  E4               Auto      128      Disabled   Disabled
  F1    10GbE-SR   2000      128      Alternate  Blocking     0019bb-0e2b00
  F2    10GbE-SR   2000      128      Root       Forwarding   001871-b6a000
  F3               Auto      128      Disabled   Disabled
  F4               Auto      128      Disabled   Disabled

В instance 2 все пути к этажным коммутаторам помечены альтернативными и закрыты.

Смотрим на этажный HP Ax:

sh spanning-tree ins 1

 L1    10GbE-SR   2000      128      Root       Forwarding   001b3f-c1a800
 L2    10GbE-SR   2000      128      Alternate  Blocking     001871-b6a000

sh spanning-tree ins 2

  L1    10GbE-SR   2000      128      Designated Forwarding   001b3f-582100
  L2    10GbE-SR   2000      128      Root       Forwarding   001871-b6a000

Получается, что instance 2 заблокирован со стороны коммутатора HP1 и приходит на этажные коммутаторы с HP2, а сами этажные коммутаторы заблокировали instance 1 в сторону HP2, и получают его с HP1. Нагрузка распределилась по двум линкам, чего собственно мы и добивались ;) Между HP1 и HP2 ходят оба instances, налицо нехватка второго линка между HP1 и HP2 :)

Посмотрим на схему. Синим цветом instance 1, а красным instance 2:

















     Ну чтож, MSTP между HP мы подняли, в следующий раз будем пытаться подружить эту схему с Cisco :)

No comments :

Post a Comment