Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Развертывание SDS на основе Gluster

1. Введение

Гиперконвергентный вариант развертывания среды виртуализации объединяет вычислительные возможности, хранилища, сети хостов и предоставляет управление инфраструктурой в веб-интерфейсе.

Перед началом развертывания убедитесь, что установлено обновление zvirt_max_certified_extras_4.5-202604271503.iso.

Ознакомьтесь со следующими документами:

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-адрес, который будет использоваться для общедоступной сети.

  • Внутренний FQDN - должен разрешаться в IP-адрес, который будет использоваться сетью хранения Gluster.

Пример конфигурации см. в таблице ниже.

Объект 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 в пул

Объединение хостов в пул осуществляется только на хосте, с которого будет выполняться установка.

  1. Для подключения в пул Gluster остальных хостов на хосте установки выполните команды:

    gluster peer probe 10.250.32.11
    gluster peer probe 10.250.32.15
    В качестве IP-адресов необходимо указать IP-адреса сети Gluster, а не сети управления.
  2. Проверьте, что подключение выполнено, с помощью команды:

    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. Монтирование бриков

  1. На каждом хосте кластера последовательно выполните команды:

    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
  2. В /etc/fstab добавьте строку монтирования. Путь по by-id уточните в своей системе:

    /dev/disk/by-id/dm-name-engine-engine_lv  /gluster_bricks/engine  xfs  inode64,noatime,nodiratime  0 0
  3. Примените изменения:

    systemctl daemon-reload
    mount -a

3.6. Создание реплицированного тома

  1. На хосте, с которого будет осуществляться установка, выполните команды:

    Пример приводится для 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
  2. Настройте параметры и выполните запуск тома:

    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
  3. Проверьте, что том создан с помощью команды:

    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 для работы дополнительных дисков.

Порядок действий
  1. Подключитесь к хосту, с которого будет запускаться развертывание. Установите пакеты:

    dnf install -y --allowerasing ovirt-engine-appliance
  2. На каждом хосте установите Hosted Engine и компоненты Gluster:

    dnf install -y --allowerasing zvirt-hosted-engine
    dnf install -y vdsm-gluster supervdsmd-helper
  3. Перезагрузите хосты:

    reboot
  4. На каждом хосте перемонтируйте образы репозиториев:

    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
  5. Подключитесь к хосту, с которого будет запускаться развертывание, и откройте сессию терминального мультиплексора командой:

    tmux
  6. Установите дополнительный пакет исправлений:

    dnf install cloud-init-fix
    Пакет исправлений cloud-init-fix следует устанавливать, если установка Менеджера управления производится с указанием статического ip-адреса для ВМ Hosted Engine и сеть развернута по DHCP.
  7. Запустите процесс установки:

    hosted-engine --deploy
  8. Следуйте сообщениям в консоли.

  9. Введите тип хранилища glusterfs в ответ на следующий запрос:

    Please specify the storage you would like to use (glusterfs, iscsi, fc, nfs)[nfs]: glusterfs
  10. Введите путь к общему хранилищу в формате <хост Gluster:имя тома> (первый хост из пула, из которого создавался том):

    Please specify the full shared storage connection path to use (example: host:/path): 10.250.32.10:/engine
  11. Укажите резервные узлы 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-хосты, являются хостами для отказоустойчивости при монтировании.

  12. Дождитесь завершения установки. После успешного разворачивания сервера виртуализации будет выведено сообщение:

    [ INFO ] Hosted Engine successfully deployed.

5. После установки

5.1. Проверка работоспособности

  1. Зайдите в веб-интерфейс по адресу, который был указан для менеджера управления, например, https://zvirtvm.rockitsoft.local/

    engine installed
  2. Нажмите Портал администрирования и аутентифицируйтесь с учетной записью администратора:

    • В случае интеграции с Keycloak используйте для аутентификации admin@zvirt и пароль, заданный при установке системы для пользователя admin.

    • В случае отказа от интеграции с Keycloak используйте для аутентификации admin и пароль, заданный при установке системы для пользователя admin.

  3. При успешной аутентификации откроется веб-интерфейс управления zVirt.

    dashboard
  4. Включите сервис Gluster для кластера:

    1. На Портале администрирования перейдите в Ресурсы Кластеры.

    2. Выберите нужный кластер (например, Default) и нажмите кнопку Изменить.

    3. Установите флажок Включить службу Gluster в кластере, и сохраните изменения, нажав кнопку OK.

  5. Убедитесь, что после сохранения на вкладке Общее в поле Тип кластера отображается также значение "Gluster" (при необходимости обновите страницу портала).

  6. Перейдите в Хранилище  Домены и убедитесь, что домены Gluster в работоспособном состоянии.

    domains

    В некоторых случаях домены хранения (кроме hosted_storage) могут быть не созданы или находиться в открепленном состоянии. В этом случае:

    • Если домен откреплен: прикрепите его к соответствующему центру данных.

    • Если домен не создан: создайте его, указав использование управляемого тома Gluster и выбрав соответствующий том.

  7. Также на странице Ресурсы  Хосты убедитесь, что все хосты в работоспособном состоянии.

    hosts

    Если в списке хостов присутствует только первый хост, вручную добавьте остальные в соответствии с инструкцией. При добавлении хостов используйте внешнюю сеть!

5.2. Настройка логической сети для трафика Gluster

Процесс настройки логической сети, которая примет роли сети Gluster и сети миграции, можно автоматизировать с помощью ansible. Необходимый плейбук размещен на гиперконвергентных хостах и для его использования достаточно внести незначительные изменения, соответствующие параметрам вашей среды.

5.2.1. Предварительные требования

  • Развертывание гиперконвергентного решения успешно завершено.

  • Все гиперконвергентные хосты в состоянии UP.

5.2.2. Создание логической сети

5.2.2.1. Использование портала администрирования
  1. Авторизуйтесь на портале администрирования под пользователем с правами, достаточными для управления сетями.

  2. Добавьте метку сети к сетевым интерфейсам гиперконвергентных хостов, которые планируется подключить к сети Gluster:

    1. Перейдите в Ресурсы  Хосты.

    2. Нажмите на имя нужного хоста и перейдите на вкладку Сетевые интерфейсы.

    3. Нажмите Настройка сетей хоста.

    4. Нажмите Метки и перетащите Новая метка на нужный интерфейс.

    5. Введите имя создаваемой метки и нажмите OK в окне создания метки.

      gluster label
    6. Нажмите OK в окне настройки сетей хоста.

    7. Повторите операцию с остальными гиперконвергентными хостами.

      Метку повторно создавать не нужно. Достаточно перетащить созданную ранее метку на нужный интерфейс.

  3. Создайте логическую сеть, на которую будет переданы роли Gluster и Миграция:

    1. Перейдите в Сеть  Сети и нажмите Новая.

    2. В окне создания:

      • Укажите корректный центр данных.

      • Введите имя сети.

      • В поле Метка сети выберите созданную ранее метку.

      • Отключите опцию Сеть ВМ.

      • При необходимости измените MTU.

      • На вкладке Кластер убедитесь, что активированы опции Подключить и Обязательная для нужного кластера.

      • Нажмите OK.

  4. Настройте сетевую адресацию:

    1. Перейдите в Ресурсы  Хосты.

    2. Нажмите на имя нужного хоста и перейдите на вкладку Сетевые интерфейсы.

    3. Нажмите Настройка сетей хоста.

    4. Убедитесь, что созданная сеть добавлена к нужному интерфейсу.

    5. Нажмите на значок карандаша рядом с сетью для перехода в окно редактирования сети.

    6. Если интерфейс хоста ранее был настроен, на вкладке IPv4 будет отображена статическая конфигурация. Если интерфейс не был предварительно сконфигурирован, выберите Статичная и введите адрес и маску/префикс.

      gluster net conf
      Не указывайте шлюз. Это может привести к потере связи с хостом.
    7. Нажмите ОК в окне изменения сети.

    8. Нажмите ОК в окне настройки сетей хоста.

    9. Повторите операцию с остальными гиперконвергентными хостами.

  5. Переключите роли Gluster и Миграция на созданную сеть:

    1. Перейдите в Ресурсы  Кластеры.

    2. Нажмите на имя нужного кластера и перейдите на вкладку Логические сети.

    3. Нажмите Управление сетями.

    4. В окне управления сетями переключите роли Gluster и Миграция на созданную сеть.

      gluster net roles
    5. Нажмите OK.

    6. Убедитесь, что в списке сетей в столбце Роли Gluster и Миграция теперь принадлежат созданной сети.

      gluster role
5.2.2.2. Использование роли Ansible
  1. Аутентифицируйтесь на первом гиперконвергентном хосте.

  2. Перейдите в каталог /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment:

    cd /etc/ansible/roles/gluster.ansible/playbooks/hc-ansible-deployment
  3. Сделайте резервную копию инвентаризационного файла gluster_network_inventory.yml:

    cp gluster_network_inventory.yml gluster_network_inventory.yml.backup
  4. Укажите конфигурацию вашей среды в файле 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 - шлюз по умолчанию, используемый для этого подключения.

  5. Инвентаризационный файл включает конфиденциальную информацию (пароли), поэтому зашифруйте его с помощью ansible-vault:

    ansible-vault encrypt gluster_network_inventory.yml

    По запросу укажите пароль для шифрования.

  6. Если гиперконвергентное решение было развернуто с Keycloak, необходимо отредактировать запускаемый плейбук:

    Эти действия необходимо выполнять только если используется Keycloak. Если ваше решение развернуто традиционно с AAA-JDBC, правильное значение в файле уже установлено.

    1. Откройте для редактирования файл tasks/gluster_network_setup.yml.

    2. Измените значение параметра 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.
    3. Сохраните файл.

  7. Запустите на выполнение плейбук 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.

  1. Убедитесь в доступности логической сети gluster.

    1. Войдите в портал администрирования.

    2. Перейдите в Сеть  Сети. В списке должна появиться недавно созданная сеть gluster_net.

      gluster net check 1
    3. Нажмите на имя gluster_net для перехода в подробное представление.

    4. Перейдите на вкладку Кластеры.

    5. При наведении курсора мыши на столбец Роль сети должно отобразиться Миграция Gluster.

      gluster net check 2
  2. Убедитесь, что сеть gluster_net подключена к сетевому интерфейсу хранилища всех хостов.

    1. Перейдите в Ресурсы  Хосты и нажмите на имя любого гиперконвергентного хоста для перехода в подробное представление.

    2. Выберите вкладку Сетевые интерфейсы, нажмите на карточку интерфейса, который должен использоваться для сети Gluster.

    3. В списке назначенных сетей должна присутствовать сеть gluster_net.

      gluster net check 3

5.2.4. Изменение MTU для логической сети gluster_net

При необходимости для существующей логической сети gluster_net можно изменить значение MTU, например, для включения Jumbo-кадров.

5.2.4.1. Предварительные требования

Логическая сеть для трафика gluster успешно создана и подключена к хосту.

5.2.4.2. Настройка MTU
  1. Войдите в портал администрирования.

  2. Перейдите в Сеть  Сети.

  3. Выделите gluster_net и нажмите Изменить.

  4. Выберите пользовательский MTU и измените его значение на необходимое.

    gluster mtu edit
  5. Нажмите OK.

Убедитесь, что все сетевые компоненты поддерживают установленный MTU.