ProHoster > Блог > Администрирование > Создание отказоустойчивой ИТ инфраструктуры. Часть 1 — подготовка к развёртыванию кластера oVirt 4.3
Создание отказоустойчивой ИТ инфраструктуры. Часть 1 — подготовка к развёртыванию кластера oVirt 4.3
Вниманию читателей предлагается ознакомиться с принципами построения отказоустойчивой инфраструктуры небольшого предприятия в рамках одного ЦОДа, которые будут детально рассмотрены в небольшом цикле статей.
Вводная часть
Под ЦОДом (Центром Обработки Данных) может пониматься:
собственная стойка в своём «серверном помещении» на территории предприятия, удовлетворяющем минимальным требованиям по обеспечению электропитанием и охлаждением оборудования, а также имеющее выход в Интернет через двух независимых провайдеров;
арендуемая стойка с собственным оборудованием, расположенная в настоящем ЦОДе – т.н. collocation, который соответствует стандарту Tier III или IV, и в котором гарантируется надёжное электропитание, охлаждение и обеспечивается отказоустойчивый выход в Интернет;
полностью арендуемое оборудование в ЦОДе Tier III или IV.
Какой вариант размещения выбрать – в каждом случае всё индивидуально, и обычно зависит от нескольких основных факторов:
для чего предприятию вообще собственная IT инфраструктура;
чего именно хочет предприятие от IT инфраструктуры (надёжности, масштабируемости, управляемости и т.д.);
объёма начальных инвестиций в IT инфраструктуру, а также какого типа затраты на неё – капитальные (значит покупается своё оборудование), или операционные (оборудование обычно арендуется);
горизонта планирования самого предприятия.
Про факторы, влияющие на решение предприятия по созданию и использование его IT инфраструктуры, можно писать много, но наша цель в том, чтобы показать на практике, как создать эту самую инфраструктуру, чтобы она была и отказоустойчивая, и ещё можно было бы при этом сэкономить – снизить расходы на приобретение коммерческого ПО, или вообще их избежать.
Как показывает долгая практика, на железе экономить не стоит, так как скупой платит дважды, и даже гораздо больше. Но опять же – хорошее железо, это всего лишь рекомендация, и в конечном итоге что именно покупать и за сколько, зависит от возможностей предприятия, и «жадности» его руководства. Причём слово «жадность» следует понимать в хорошем смысле этого слова, так как лучше вложиться в железо на начальном этапе, чтобы потом не иметь серьёзных проблем по его дальнейшей поддержке и масштабированию, так как изначально неправильное планирование и чрезмерная экономия, могут привести в будущем к большим затратам, чем при запуске проекта.
Итак, исходные данные для проекта:
имеется предприятие, которое решило создать собственный веб-портал и вывести свою деятельность в Интернет;
предприятие решило арендовать стойку для размещения своего оборудования в хорошем датацентре, имеющем сертификацию по стандарту Tier III;
предприятие решило сильно не экономить на железе, и поэтому купило следующее оборудование с расширенными гарантиями и поддержкой:
Список оборудования
два физических сервера Dell PowerEdge R640 в таком составе:
два процессора Intel Xeon Gold 5120
512 Gb RAM
два SAS диска в RAID1, для установки ОС
встроенная 4-х портовая сетевая карта 1G
две 2-х портовые сетевые карты 10G
один 2-х портовый FC HBA 16G.
2-х контроллерная СХД Dell MD3820f, подключенная посредством FC 16G напрямую к хостам Dell;
два коммутатора второго уровня — Cisco WS-C2960RX-48FPS-L объединённые в стек;
два коммутатора третьего уровня — Cisco WS-C3850-24T-E, объединённые в стек;
Как мы видим, у имеющегося оборудования имеются хорошие перспективы для горизонтального и вертикального масштабирования, в случае, если предприятие сможет конкурировать с другими компаниями схожего профиля в Интернете, и начнёт получать прибыль, которую можно будет вложить в расширение ресурсов для дальнейшей конкуренции и роста прибыли.
Какое оборудование мы можем добавить, если предприятие решит увеличить производительность нашего вычислительного кластера:
у нас есть большой резерв по количеству портов на коммутаторах 2960Х, значит можно добавить больше аппаратных серверов;
докупить два FC коммутатора, чтобы подключить к ним СХД и дополнительные сервера;
уже имеющиеся сервера можно проапгрейдить – добавить памяти, заменить процессоры на более производительные, подключить к сети 10G уже имеющимися сетевыми адаптерами;
к СХД можно добавить дополнительные дисковые полки с необходимым типом дисков – SAS, SATA или SSD, зависит от планируемой нагрузки;
после добавления FC коммутаторов можно докупить ещё одну СХД, чтобы добавить ещё больше дисковой ёмкости, а если к ней докупить специальную опцию Remote Replication, то можно будет настроить репликацию данных между СХД как в границах одного ЦОДа, так и между ЦОДами (но это уже за рамками статьи);
также имеются коммутаторы третьего уровня – Cisco 3850, которые можно задействовать в качестве отказоустойчивого ядра сети, для высокоскоростной маршрутизации между внутренними сетями. Это очень поможет в дальнейшем, по мере роста внутренней инфраструктуры. Также у 3850 имеются порты 10G, которые можно задействовать позже, при обновлении сетевого оборудования до скорости 10G.
Так как сейчас без виртуализации никуда, то и мы конечно же будем в тренде, тем более это отличный способ для уменьшения расходов на приобретение дорогостоящих серверов для отдельных элементов инфраструктуры (веб-серверов, баз данных и т.п.), которые не всегда оптимально используются в случае низкой нагрузки, а именно так и будет в начале запуска проекта.
К тому же виртуализация имеет многие другие преимущества, которые нам очень могут пригодиться: отказоустойчивость ВМ от сбоя аппаратного сервера, Live migration между аппаратными узлами кластера для их обслуживания, ручное или автоматическое распределение нагрузки между узлами кластера, и т.п.
Для железа, приобретённого предприятием, напрашивается развёртывание высоко-доступного кластера VMware vSphere, но так как любое ПО от VMware известно своими «конскими» ценниками, то мы будем использовать абсолютно бесплатное программное обеспечение для управления виртуализацией – oVirt, на основе которого создаётся известный, но уже коммерческий продукт — RHEV.
Программное обеспечение oVirt необходимо для объединения между собой всех элементов инфраструктуры в одно целое, чтобы получить возможность удобной работы с высоко-доступными виртуальными машинами – это базы данных, веб-приложения, прокси-сервера, балансировщики, сервера для сбора логов и аналитики и т.п., то есть то, из чего и состоит веб-портал нашего предприятия.
Подытоживая это введение, нас ожидают следующие статьи, которые на практике покажут, как именно развернуть всю аппаратно-программную инфраструктуру предприятия:
Список статей
Часть 1. Подготовка к развёртыванию кластера oVirt 4.3.
Часть 2. Установка и настройка кластера oVirt 4.3.
Часть 3. Настройка кластера VyOS, организация отказоустойчивой внешней маршрутизации.
Часть 4. Настройка стека Cisco 3850, организация внутрисетевой маршрутизации.
Часть 1. Подготовка к развёртыванию кластера oVirt 4.3
Базовая настройка хостов
Установка и настройка ОС – это самый простой этап. Статей как правильно установить и настроить ОС – великое множество, так что нет смысла пытаться выдать что-то эксклюзивное по этому поводу.
Итак, у нас имеется два хоста Dell PowerEdge R640, на которые необходимо установить ОС и выполнить предварительные настройки, для их использования в качестве гипервизоров для запуска виртуальных машин в кластере oVirt 4.3.
Так как мы планируем использовать бесплатное некоммерческое ПО oVirt, то для развёртывания хостов выбрана ОС CentOS 7.7, хотя на хосты для oVirt’а возможна установка и других ОС:
специального билда на основе RHEL, т.н. oVirt Node;
OS Oracle Linux, летом 2019 г. было объявлено о поддержке работы oVirt на ней.
Перед установкой ОС рекомендуется:
настроить сетевой интерфейс iDRAC на обоих хостах;
обновить прошивки для BIOS и iDRAC до последних версий;
настроить System Profile сервера желательно в режиме Performance;
настроить RAID из локальных дисков (рекомендуется RAID1), для установки ОС на сервер.
Затем устанавливаем ОС на созданный ранее через iDRAC диск – процесс установки обычный, каких-то особых моментов в нём нет. Доступ к консоли сервера для начала установки ОС также можно получить через iDRAC, хотя ничто не мешает подключить монитор, клавиатуру и мышь напрямую к серверу и установить ОС с «флэшки».
После установки ОС, выполняем её начальные настройки:
systemctl enable network.service
systemctl start network.service
systemctl status network.service
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl status NetworkManager
Для начальной настройки ОС, нужно настроить любой сетевой интерфейс на сервере, чтобы можно было бы получить доступ в Интернет, для обновления ОС и установки необходимых пакетов ПО. Это можно сделать как в процессе установки ОС, так и после него.
После установки ОС, переходим к следующей части – настройке сетевых интерфейсов на хостах, и стека коммутаторов Cisco 2960X.
Настройка стека коммутаторов Cisco 2960X
В нашем проекте будут использоваться следующие номера VLAN’ов — или широковещательных доменов, изолированных друг от друга, с целью разделения различных видов трафика:
VLAN 10 – Internet VLAN 17 – Management (iDRAC, СХД, switches management) VLAN 32 – VM production network VLAN 33 – interconnection network (to external contractors) VLAN 34 – VM test network VLAN 35 – VM developer network VLAN 40 – Monitoring network
Перед началом работ, приведём схему на уровне L2, к которой мы в итоге должны прийти:
Для сетевого взаимодействия хостов oVirt и виртуальных машин между собой, а также для управления нашей СХД, необходима настройка стека коммутаторов Cisco 2960X.
У хостов Dell имеются встроенные 4-х портовые сетевые карты, следовательно, организовать их подключение к Cisco 2960X целесообразно с помощью отказоустойчивого сетевого подключения, используя для этого группировку физических сетевых портов в логический интерфейс, и протокол LACP (802.3ad):
первые два порта на хосте настраиваются в режиме бондинга и подключаются к коммутатору 2960X – на этом логическом интерфейсе будет настроен bridge с адресом для управления хостом, мониторинга, связи с другими хостами в кластере oVirt, также он будет использоваться для Live migration виртуальных машин;
вторые два порта на хосте также настраиваются в режиме бондинга и подключаются к 2960X – на этом логическом интерфейсе с помощью oVirt, в дальнейшем будут созданы bridge’и (в соответствующих VLAN’ах) к которым будут подключаться виртуальные машины.
оба сетевых порта, в рамках одного логического интерфейса, будут активными, т.е. трафик по ним может передаваться одновременно, в режиме балансировки.
сетевые настройки на узлах кластера должны быть абсолютно ОДИНАКОВЫМИ, за исключением IP адресов.
Базовая настройка стека коммутаторов 2960X и его портов
Предварительно наши коммутаторы должны быть:
смонтированы в стойку;
соединены посредством двух специальных кабелей нужной длины, например, CAB-STK-E-1M;
подключены к электропитанию;
подключены к рабочей станции администратора через консольный порт, для их начального конфигурирования.
Необходимое руководство для этого имеется на официальной странице производителя.
После выполнения вышеуказанных действий, выполняем настройку коммутаторов.
Что означает каждая команда, расшифровывать в рамках данной статьи не предполагается, при необходимости всю информацию можно найти самостоятельно.
Наша цель – максимально быстро настроить стек коммутаторов и подключить к нему хосты и управляющие интерфейсы СХД.
1) Подключаемся к ведущему коммутатору, переходим в привилегированный режим, далее заходим в режим конфигурирования и производим основные настройки.
Базовый конфиг коммутатора:
enable
configure terminal
hostname 2960X
no service pad
service timestamps debug datetime msec
service timestamps log datetime localtime show-timezone msec
no service password-encryption
service sequence-numbers
switch 1 priority 15
switch 2 priority 14
stack-mac persistent timer 0
clock timezone MSK 3
vtp mode transparent
ip subnet-zero
vlan 17
name Management
vlan 32
name PROD
vlan 33
name Interconnect
vlan 34
name Test
vlan 35
name Dev
vlan 40
name Monitoring
spanning-tree mode rapid-pvst
spanning-tree etherchannel guard misconfig
spanning-tree portfast bpduguard default
spanning-tree extend system-id
spanning-tree vlan 1-40 root primary
spanning-tree loopguard default
vlan internal allocation policy ascending
port-channel load-balance src-dst-ip
errdisable recovery cause loopback
errdisable recovery cause bpduguard
errdisable recovery interval 60
line con 0
session-timeout 60
exec-timeout 60 0
logging synchronous
line vty 5 15
session-timeout 60
exec-timeout 60 0
logging synchronous
ip http server
ip http secure-server
no vstack
interface Vlan1
no ip address
shutdown
exit
Сохраняем конфиг командой «wr mem» и перезагружаем стек коммутаторов командой «reload» на ведущем коммутаторе switch 1.
2) Настраиваем сетевые порты коммутатора в режиме доступа (access) в VLAN 17, для подключения управляющих интерфейсов СХД и iDRAC серверов.
3) После перезагрузки стека, проверяем, чтобы он работал корректно:
Проверка функционирования стека:
2960X#show switch stack-ring speed
Stack Ring Speed : 20G
Stack Ring Configuration: Full
Stack Ring Protocol : FlexStack
2960X#show switch stack-ports
Switch # Port 1 Port 2
-------- ------ ------
1 Ok Ok
2 Ok Ok
2960X#show switch neighbors
Switch # Port 1 Port 2
-------- ------ ------
1 2 2
2 1 1
2960X#show switch detail
Switch/Stack Mac Address : 0cd0.f8e4.ХХХХ
Mac persistency wait time: Indefinite
H/W Current
Switch# Role Mac Address Priority Version State
----------------------------------------------------------
*1 Master 0cd0.f8e4.ХХХХ 15 4 Ready
2 Member 0029.c251.ХХХХ 14 4 Ready
Stack Port Status Neighbors
Switch# Port 1 Port 2 Port 1 Port 2
--------------------------------------------------------
1 Ok Ok 2 2
2 Ok Ok 1 1
4) Настройка SSH доступа к стеку 2960X
Для удаленного управления стеком через SSH, будем использовать IP 172.20.1.10, настроенный на SVI (switch virtual interface) VLAN17.
Хотя для целей управления желательно использовать специальный выделенный порт на коммутаторе, но это дело личных предпочтений и возможностей.
Настройка SSH доступа к стеку коммутаторов:
ip default-gateway 172.20.1.2
interface vlan 17
ip address 172.20.1.10 255.255.255.0
hostname 2960X
ip domain-name hw.home-lab.ru
no ip domain-lookup
clock set 12:47:04 06 Dec 2019
crypto key generate rsa
ip ssh version 2
ip ssh time-out 90
line vty 0 4
session-timeout 60
exec-timeout 60 0
privilege level 15
logging synchronous
transport input ssh
line vty 5 15
session-timeout 60
exec-timeout 60 0
privilege level 15
logging synchronous
transport input ssh
aaa new-model
aaa authentication login default local
username cisco privilege 15 secret my_ssh_password
Настраиваем пароль для входа в привилегированный режим:
enable secret *myenablepassword*
service password-encryption
Настраиваем NTP:
ntp server 85.21.78.8 prefer
ntp server 89.221.207.113
ntp server 185.22.60.71
ntp server 192.36.143.130
ntp server 185.209.85.222
show ntp status
show ntp associations
show clock detail
5) Настраиваем логические интерфейсы Etherchannel и физические порты, подключаемые к хостам. Для простоты конфигурации, все имеющиеся VLAN’ы будут разрешены на всех логических интерфейсах, но обычно рекомендуется настраивать только то, что нужно:
После завершения настроек на стеке 2960Х и хостах, рестартуем сеть на хостах, и проверяем работоспособность логического интерфейса.
на хосте:
systemctl restart network
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
...
802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
...
Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
...
Slave Interface: em3
MII Status: up
Speed: 1000 Mbps
Duplex: full
на стеке коммутаторов 2960Х:
2960X#show lacp internal
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1
LACP port Admin Oper Port Port
Port Flags State Priority Key Key Number State
Gi1/0/1 SA bndl 32768 0x1 0x1 0x102 0x3D
Gi2/0/1 SA bndl 32768 0x1 0x1 0x202 0x3D
2960X#sh etherchannel summary
Flags: D - down P - bundled in port-channel
I - stand-alone s - suspended
H - Hot-standby (LACP only)
R - Layer3 S - Layer2
U - in use N - not in use, no aggregation
f - failed to allocate aggregator
M - not in use, minimum links not met
m - not in use, port not aggregated due to minimum links not met
u - unsuitable for bundling
w - waiting to be aggregated
d - default port
A - formed by Auto LAG
Number of channel-groups in use: 11
Number of aggregators: 11
Group Port-channel Protocol Ports
------+-------------+-----------+-----------------------------------------------
1 Po1(SU) LACP Gi1/0/1(P) Gi2/0/1(P)
Первичная настройка сетевых интерфейсов для управления ресурсами кластера, на хостах Host1 и Host2
Настройка на хостах логического интерфейса BOND1 для управления, и его физических интерфейсов:
Делаем рестарт сети на хостах и проверяем их видимость между собой.
На этом настройка стека коммутаторов Cisco 2960X закончена, и если всё было сделано правильно, то теперь мы имеем сетевую связанность всех элементов инфраструктуры между собой на уровне L2.
Настройка СХД Dell MD3820f
Перед началом работ по настройке СХД, она уже должна быть подключена к стеку коммутаторов Cisco 2960Х управляющими интерфейсами, а также к хостам Host1 и Host2 через FC.
Общая схема, как СХД должна быть подключена к стеку коммутаторов, приводилась в предыдущей главе.
Схема подключения СХД по FC к хостам, должна выглядеть так:
Во время подключения, необходимо записать WWPN адреса для FC HBA хостов, подключенных к FC портам на СХД – это будет необходимо для последующей настройки привязки хостов к LUN’ам на СХД.
На рабочую станцию администратора скачиваем и устанавливаем утилиту для управления СХД Dell MD3820f – PowerVault Modular Disk Storage Manager (MDSM).
Подключаемся к ней через её IP адреса по умолчанию, и затем настраиваем наши адреса из VLAN17, для управления контроллерами через TCP/IP:
Storage1:
ControllerA IP - 172.20.1.13, MASK - 255.255.255.0, Gateway - 172.20.1.2
ControllerB IP - 172.20.1.14, MASK - 255.255.255.0, Gateway - 172.20.1.2
После настройки адресов, заходим в интерфейс управления СХД и задаём пароль, настраиваем время, обновляем прошивки для контроллеров и дисков, если это необходимо и т.п.
Как это делается – описано в руководстве по администрированию СХД.
После выполнения вышеуказанных настроек, нам нужно будет сделать всего несколько действий:
Настроить идентификаторы хостовых FC портов – Host Port Identifiers.
Создать группу хостов – Host group и добавить в неё два наших хоста Dell.
Создать дисковую группу и в ней виртуальные диски (или LUN’ы), которые будут презентованы хостам.
Настроить презентацию виртуальных дисков (или LUN’ов) для хостов.
Добавление новых хостов и привязка к ним идентификаторов хостовых FC портов, делается через меню – Host Mappings -> Define -> Hosts…
WWPN адреса FC HBA хостов можно найти, например, в iDRAC сервера.
В результате у нас должна получиться примерно такая картинка:
Добавление новой группы хостов и привязка к ней хостов, делается через меню – Host Mappings -> Define -> Host Group…
Для хостов выбираем тип ОС – Linux (DM-MP).
После создания группы хостов, через вкладку Storage & Copy Services, создаём дисковую группу – Disk Group, с типом зависящим от требований к отказоустойчивости, например, RAID10, а в ней виртуальные диски нужного размера:
И наконец, финальный этап — презентация виртуальных дисков (или LUN’ов) для хостов.
Для этого через меню – Host Mappings -> Lun mapping -> Add… делаем привязку виртуальных дисков к хостам, назначая им номера.
Всё должно получиться так, как на этом скриншоте:
На этом с настройкой СХД мы заканчиваем, и если всё сделано было правильно, то хосты должны увидеть презентованные им LUN’ы через свои FC HBA.
Заставим систему обновить информацию о подключенных дисках:
ls -la /sys/class/scsi_host/
echo "- - -" > /sys/class/scsi_host/host[0-9]/scan
Посмотрим, какие устройства видны на наших серверах:
На хостах также дополнительно можно настроить multipath, и хотя при установке oVirt он может сделать это и сам, но лучше проверить корректность работы MP заранее самим.
Как видно, все три виртуальных диска на СХД видны по двум путям. Таким образом все подготовительные работы выполнены, а значит можно переходить к выполнению основной части – настройке кластера oVirt, что будет рассмотрено в следующей статье.