Развертывание SDS на основе Gluster
1. Введение
Гиперконвергентный вариант развертывания среды виртуализации объединяет вычислительные возможности, хранилища, сети хостов и предоставляет управление инфраструктурой в веб-интерфейсе.
|
Перед началом развертывания убедитесь, что установлено обновление Ознакомьтесь со следующими документами: |
2. Подготовка среды
Перед развертыванием гиперконвергентного решения zVirt Max выполните следующие действия:
-
На все серверы, которые будут использоваться в решении, установите хост виртуализации.
-
На всех серверах настройте репозитории.
-
Подготовьте инфраструктуру к развертыванию гиперконвергентного решения.
3. Подготовка инфраструктуры
3.1. Настройка firewall и службы glusterd на всех хостах
Для настройки firewall и службы glusterd на всех хостах виртуализации последовательно выполните команды:
firewall-cmd --permanent --add-port={24007/tcp,49152-65535/tcp,111/tcp,111/udp}
firewall-cmd --reload
systemctl enable --now glusterd
3.2. Разрешение имен для менеждера управления и хостов виртуализации
Подготовьте полные доменные имена для менеджера управления и хостов перед развертыванием. Записи прямого и обратного просмотра должны быть установлены в DNS.
|
Хосты в гиперконвергентном решении должны использовать внешний и внутренний FQDN:
Пример конфигурации см. в таблице ниже. |
| Объект | FQDN | IP адрес | Комментарии |
|---|---|---|---|
Менеджер управления |
zvirtvm.rockitsoft.local |
172.25.1.186 |
|
Хост 1 |
host1.rockitsoft.local |
172.25.1.181 |
Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления. |
g1.rockitsoft.local |
10.250.32.10 |
Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами. |
|
Хост 2 |
host2.rockitsoft.local |
172.25.1.182 |
Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления. |
g2.rockitsoft.local |
10.250.32.11 |
Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами. |
|
Хост 3 |
host3.rockitsoft.local |
172.25.1.183 |
Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления. |
g3.rockitsoft.local |
10.250.32.15 |
Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами. |
3.3. Объединение хостов Gluster в пул
Объединение хостов в пул осуществляется только на хосте, с которого будет выполняться установка.
-
Для подключения в пул Gluster остальных хостов на хосте установки выполните команды:
gluster peer probe 10.250.32.11 gluster peer probe 10.250.32.15В качестве IP-адресов необходимо указать IP-адреса сети Gluster, а не сети управления. -
Проверьте, что подключение выполнено, с помощью команды:
gluster peer statusВывод команды должен быть следующим:
Number of Peers: 2 Hostname: 10.250.32.11 Uuid: c537b5dd-813d-4321-9f61-7eea3edd2d12 State: Peer in Cluster (Connected) Hostname: 10.250.32.15 Uuid: 02ae7380-07b6-4e72-8050-503f985e3af7 State: Peer in Cluster (Connected)
3.4. Разметка диска
Проверьте наличие отдельного диска под brick (например, dev/sdb) с помощью команды:
lsblk
Вывод команды должен быть следующим:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─ro_redos-root 253:0 0 70G 0 lvm /
├─ro_redos-swap 253:1 0 15,4G 0 lvm [SWAP]
└─ro_redos-home 253:2 0 113,6G 0 lvm /home
sdb 8:16 0 100G 0 disk
3.5. Монтирование бриков
-
На каждом хосте кластера последовательно выполните команды:
pvcreate /dev/sdb vgcreate engine /dev/sdb lvcreate -l 100%FREE -n engine_lv engine mkfs.xfs /dev/engine/engine_lv mkdir -p /gluster_bricks/engine -
В /etc/fstab добавьте строку монтирования. Путь по by-id уточните в своей системе:
/dev/disk/by-id/dm-name-engine-engine_lv /gluster_bricks/engine xfs inode64,noatime,nodiratime 0 0 -
Примените изменения:
systemctl daemon-reload mount -a
3.6. Создание реплицированного тома
-
На хосте, с которого будет осуществляться установка, выполните команды:
Пример приводится для replica 3 и трех узлов в сети Gluster. gluster volume create engine replica 3 \ 10.250.32.10:/gluster_bricks/engine/engine \ 10.250.32.11:/gluster_bricks/engine/engine \ 10.250.32.15:/gluster_bricks/engine/engine -
Настройте параметры и выполните запуск тома:
gluster volume set engine storage.owner-uid 36 gluster volume set engine storage.owner-gid 36 gluster volume set engine group virt gluster volume set engine cluster.data-self-heal-algorithm full gluster volume set engine cluster.quorum-type auto gluster volume set engine network.ping-timeout 10 gluster volume start engine gluster volume status -
Проверьте, что том создан с помощью команды:
gluster volume status engineВывод команды должен быть следующим:
Status of volume: engine Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 10.250.32.10:/gluster_bricks/engine/e ngine 59249 0 Y 2548 Brick 10.250.32.11:/gluster_bricks/engine/e ngine 55542 0 Y 2447 Brick 10.250.32.15:/gluster_bricks/engine/e ngine 57914 0 Y 2437 Self-heal Daemon on localhost N/A N/A Y 2566 Self-heal Daemon on 10.250.32.11 N/A N/A Y 2465 Self-heal Daemon on 10.250.32.15 N/A N/A Y 2455 Task Status of Volume engine ------------------------------------------------------------------------------ There are no active volume tasks
4. Развертывание гиперконвергентного решения
Перед развертыванием убедитесь, что сервис multipath не использует локальные диски, которые подготовлены для Gluster Storage. Информацию см. в Отключение multipath для работы дополнительных дисков.
-
Подключитесь к хосту, с которого будет запускаться развертывание. Установите пакеты:
dnf install -y --allowerasing ovirt-engine-appliance -
На каждом хосте установите Hosted Engine и компоненты Gluster:
dnf install -y --allowerasing zvirt-hosted-engine dnf install -y vdsm-gluster supervdsmd-helper -
Перезагрузите хосты:
reboot -
На каждом хосте перемонтируйте образы репозиториев:
mount -o loop /root/zvirt_max_certified_XXXXXXXXXXXX.iso /mnt/main mount -o loop /root/zvirt_max_certified_extras_XXXXXXXXXXXX.iso /mnt/extrasИ выполните команду:
touch /etc/sysconfig/libvirtd -
Подключитесь к хосту, с которого будет запускаться развертывание, и откройте сессию терминального мультиплексора командой:
tmux -
Установите дополнительный пакет исправлений:
dnf install cloud-init-fixПакет исправлений cloud-init-fix следует устанавливать, если установка Менеджера управления производится с указанием статического ip-адреса для ВМ Hosted Engine и сеть развернута по DHCP. -
Запустите процесс установки:
hosted-engine --deploy -
Следуйте сообщениям в консоли.
-
Введите тип хранилища
glusterfsв ответ на следующий запрос:Please specify the storage you would like to use (glusterfs, iscsi, fc, nfs)[nfs]: glusterfs -
Введите путь к общему хранилищу в формате <хост Gluster:имя тома> (первый хост из пула, из которого создавался том):
Please specify the full shared storage connection path to use (example: host:/path): 10.250.32.10:/engine -
Укажите резервные узлы
volfileв ответ на запрос дополнительных опций монтирования:If needed, specify additional mount options for the connection to the hosted-engine storage domain (example: rsize=32768,wsize=32768) []: backup-volfile-servers=10.250.32.11:10.250.32.15Где:
-
10.250.32.10 — первый указанный хост, является основным сервером volfile;
-
10.250.32.15 — остальные указанные peer-хосты, являются хостами для отказоустойчивости при монтировании.
-
-
Дождитесь завершения установки. После успешного разворачивания сервера виртуализации будет выведено сообщение:
[ INFO ] Hosted Engine successfully deployed.
5. После установки
5.1. Проверка работоспособности
-
Зайдите в веб-интерфейс по адресу, который был указан для менеджера управления, например, https://zvirtvm.rockitsoft.local/
-
Нажмите Портал администрирования и аутентифицируйтесь с учетной записью администратора:
-
В случае интеграции с Keycloak используйте для аутентификации admin@zvirt и пароль, заданный при установке системы для пользователя admin.
-
В случае отказа от интеграции с Keycloak используйте для аутентификации
adminи пароль, заданный при установке системы для пользователя admin.
-
-
При успешной аутентификации откроется веб-интерфейс управления zVirt.
-
Включите сервис Gluster для кластера:
-
На Портале администрирования перейдите в Ресурсы Кластеры.
-
Выберите нужный кластер (например, Default) и нажмите кнопку Изменить.
-
Установите флажок Включить службу Gluster в кластере, и сохраните изменения, нажав кнопку OK.
-
-
Убедитесь, что после сохранения на вкладке Общее в поле Тип кластера отображается также значение "Gluster" (при необходимости обновите страницу портала).
-
Перейдите в и убедитесь, что домены Gluster в работоспособном состоянии.
В некоторых случаях домены хранения (кроме hosted_storage) могут быть не созданы или находиться в открепленном состоянии. В этом случае:
-
Если домен откреплен: прикрепите его к соответствующему центру данных.
-
Если домен не создан: создайте его, указав использование управляемого тома Gluster и выбрав соответствующий том.
-
-
Также на странице убедитесь, что все хосты в работоспособном состоянии.
Если в списке хостов присутствует только первый хост, вручную добавьте остальные в соответствии с инструкцией. При добавлении хостов используйте внешнюю сеть!
5.2. Настройка логической сети для трафика Gluster
Процесс настройки логической сети, которая примет роли сети Gluster и сети миграции, можно автоматизировать с помощью ansible. Необходимый плейбук размещен на гиперконвергентных хостах и для его использования достаточно внести незначительные изменения, соответствующие параметрам вашей среды.
5.2.1. Предварительные требования
-
Развертывание гиперконвергентного решения успешно завершено.
-
Все гиперконвергентные хосты в состоянии UP.
5.2.2. Создание логической сети
5.2.2.1. Использование портала администрирования
-
Авторизуйтесь на портале администрирования под пользователем с правами, достаточными для управления сетями.
-
Добавьте метку сети к сетевым интерфейсам гиперконвергентных хостов, которые планируется подключить к сети Gluster:
-
Перейдите в .
-
Нажмите на имя нужного хоста и перейдите на вкладку Сетевые интерфейсы.
-
Нажмите Настройка сетей хоста.
-
Нажмите Метки и перетащите Новая метка на нужный интерфейс.
-
Введите имя создаваемой метки и нажмите OK в окне создания метки.
-
Нажмите OK в окне настройки сетей хоста.
-
Повторите операцию с остальными гиперконвергентными хостами.
Метку повторно создавать не нужно. Достаточно перетащить созданную ранее метку на нужный интерфейс.
-
-
Создайте логическую сеть, на которую будет переданы роли Gluster и Миграция:
-
Перейдите в и нажмите Новая.
-
В окне создания:
-
Укажите корректный центр данных.
-
Введите имя сети.
-
В поле Метка сети выберите созданную ранее метку.
-
Отключите опцию Сеть ВМ.
-
При необходимости измените MTU.
-
На вкладке Кластер убедитесь, что активированы опции Подключить и Обязательная для нужного кластера.
-
Нажмите OK.
-
-
-
Настройте сетевую адресацию:
-
Перейдите в .
-
Нажмите на имя нужного хоста и перейдите на вкладку Сетевые интерфейсы.
-
Нажмите Настройка сетей хоста.
-
Убедитесь, что созданная сеть добавлена к нужному интерфейсу.
-
Нажмите на значок карандаша рядом с сетью для перехода в окно редактирования сети.
-
Если интерфейс хоста ранее был настроен, на вкладке IPv4 будет отображена статическая конфигурация. Если интерфейс не был предварительно сконфигурирован, выберите Статичная и введите адрес и маску/префикс.
Не указывайте шлюз. Это может привести к потере связи с хостом. -
Нажмите ОК в окне изменения сети.
-
Нажмите ОК в окне настройки сетей хоста.
-
Повторите операцию с остальными гиперконвергентными хостами.
-
-
Переключите роли Gluster и Миграция на созданную сеть:
-
Перейдите в .
-
Нажмите на имя нужного кластера и перейдите на вкладку Логические сети.
-
Нажмите Управление сетями.
-
В окне управления сетями переключите роли Gluster и Миграция на созданную сеть.
-
Нажмите OK.
-
Убедитесь, что в списке сетей в столбце Роли Gluster и Миграция теперь принадлежат созданной сети.
-
5.2.2.2. Использование роли Ansible
-
Аутентифицируйтесь на первом гиперконвергентном хосте.
-
Перейдите в каталог /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment:
cd /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment -
Сделайте резервную копию инвентаризационного файла gluster_network_inventory.yml:
cp gluster_network_inventory.yml gluster_network_inventory.yml.backup -
Укажите конфигурацию вашей среды в файле gluster_network_inventory.yml. Например:
all: hosts: localhost: vars: he_fqdn: engine.vlab.local (1) he_admin_password: ******** (2) datacenter_name: Default (3) cluster_name: Default (4) boot_protocol: static (5) # Default version is v4 version: v4 (6) mtu_value: 1500 (7) # For dhcp boot_protocol #cluster_nodes: (8) # - {host: 'host1-frontend-network-FQDN', interface: 'host1-network-interface-name'} # - {host: 'host2-frontend-network-FQDN', interface: 'host2-network-interface-name'} # - {host: 'host3-frontend-network-FQDN', interface: 'host3-network-interface-name'} # For static boot_protocol cluster_nodes: (8) - {host: 'mhost-1.vlab.local', interface: 'enp2s0', address: 10.252.11.101, netmask: 255.255.255.0, gateway: '10.252.11.254'} - {host: 'mhost-2.vlab.local', interface: 'enp2s0', address: 10.252.11.102, netmask: 255.255.255.0, gateway: '10.252.11.254'} - {host: 'mhost-3.vlab.local', interface: 'enp2s0', address: 10.252.11.103, netmask: 255.255.255.0, gateway: '10.252.11.254'}1 В параметре he_fqdn укажите FQDN вашего Менеджера управления. 2 В параметре he_admin_password укажите пароль для пользователя с административными правами (если среда развернута с использованием keycloak, по умолчанию - admin@zvirt; если с aaa-jdbc - admin). 3 В параметре datacenter_name укажите имя центра данных, в котором развернут гиперконвергентный кластер. 4 В параметре cluster_name укажите имя гиперконвергентного кластера. 5 В параметре boot_protocol укажите способ назначения сетевой конфигурации. Допустимые значения: -
dhcp для динамической конфигурации.
-
static для статической конфигурации.
6 В параметре version укажите используемую версию протокола IP. Допустимые значения: -
v4 для IPv4.
-
v6 для IPv6.
7 В параметре mtu_value укажите размер MTU для сети Gluster. Если базовые коммутаторы поддерживают jumbo frames, установите MTU на максимальный размер (например, 9000), который поддерживают базовые коммутаторы. Эта настройка обеспечивает оптимальную пропускную способность, более высокую пропускную способность и меньшее использование ЦП для большинства приложений. MTU по умолчанию определяется минимальным размером, поддерживаемым базовыми коммутаторами.
8 В списке cluster_nodes укажите необходимые сетевые параметры хостов: -
Общие параметры (обязательны как для статической (
boot_protocol: static), так и для динамической (boot_protocol: dhcp) конфигурации):-
host - FQDN хоста, который разрешается во внешний IP-адрес.
-
interface - имя интерфейса хоста, на который будет назначена создаваемая логическая сеть.
-
-
Параметры только для статической (
boot_protocol: static) конфигурации:-
address - IP-адрес, который необходимо назначить подключению хоста в создаваемой логической сети.
-
netmask - маска подсети, применяемая к этому подключению.
-
gateway - шлюз по умолчанию, используемый для этого подключения.
-
-
-
Инвентаризационный файл включает конфиденциальную информацию (пароли), поэтому зашифруйте его с помощью ansible-vault:
ansible-vault encrypt gluster_network_inventory.ymlПо запросу укажите пароль для шифрования.
-
Если гиперконвергентное решение было развернуто с Keycloak, необходимо отредактировать запускаемый плейбук:
Эти действия необходимо выполнять только если используется Keycloak. Если ваше решение развернуто традиционно с AAA-JDBC, правильное значение в файле уже установлено.
-
Откройте для редактирования файл tasks/gluster_network_setup.yml.
-
Измените значение параметра username:
- name: Obtain SSO token using username/password creds. ovirt_auth: url: "https://{{ he_fqdn }}/ovirt-engine/api" username: admin@zvirt@internalsso (1) password: "{{ he_admin_password }}"1 При использовании Keycloak необходимо заменить значение на admin@zvirt@internalsso. -
Сохраните файл.
-
-
Запустите на выполнение плейбук tasks/gluster_network_setup.yml с опциями
--ask-vault-passдля ввода пароля vault в интерактивном режиме и-i gluster_network_inventory.ymlдля указания инвентаризационного файла.ansible-playbook -i gluster_network_inventory.yml tasks/gluster_network_setup.yml --ask-vault-passПо запросу введите пароль, заданный при шифровании файла gluster_network_inventory.yml.
По окончании выполнения плейбука в результатах выполнения не должно быть ошибок:
PLAY RECAP *******************************************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 (1)
| 1 | Значение failed равно 0. |
5.2.3. Проверка логической сети
Проверьте, успешно ли создана и подключена к хосту логическая сеть для трафика gluster.
-
Убедитесь в доступности логической сети gluster.
-
Войдите в портал администрирования.
-
Перейдите в . В списке должна появиться недавно созданная сеть gluster_net.
-
Нажмите на имя gluster_net для перехода в подробное представление.
-
Перейдите на вкладку Кластеры.
-
При наведении курсора мыши на столбец Роль сети должно отобразиться Миграция Gluster.
-
-
Убедитесь, что сеть gluster_net подключена к сетевому интерфейсу хранилища всех хостов.
-
Перейдите в и нажмите на имя любого гиперконвергентного хоста для перехода в подробное представление.
-
Выберите вкладку Сетевые интерфейсы, нажмите на карточку интерфейса, который должен использоваться для сети Gluster.
-
В списке назначенных сетей должна присутствовать сеть gluster_net.
-