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

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

1. Введение

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

Перед началом развертывания обязательно ознакомьтесь со следующими документами:

2. Подготовка среды

Перед развертыванием гиперконвергентного решения zVirt выполните следующие действия:

2.1. Подготовка инфраструктуры

Перед развертыванием гиперконвергентного решения необходимо соответствующим образом подготовить инфраструктуру:

  1. Подготовьте полные доменные имена для менеджера управления и хостов перед развертыванием. Записи прямого и обратного просмотра должны быть установлены в DNS.

    Хосты в гиперконвергентном решении должны использовать внешний и внутренний FQDN:

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

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

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

    Объект FQDN IP адрес Комментарии

    Менеджер управления

    en.vlab.local

    10.252.12.10

    Хост 1

    h1.vlab.local

    10.252.12.11

    Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления.

    g1.vlab.local

    10.252.11.101

    Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами.

    Хост 2

    h2.vlab.local

    10.252.12.12

    Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления.

    g2.vlab.local

    10.252.11.102

    Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами.

    Хост 3

    h3.vlab.local

    10.252.12.12

    Эти FQDN и IP будут использоваться во внешней сети для предоставления доступа к порталу и взаимодействия с Менеджером управления.

    g3.vlab.local

    10.252.11.103

    Эти FQDN и IP будут использоваться во внутренней сети Gluster для взаимодействия между пирами.

  2. Настройте беспарольную SSH-аутентификацию для пользователя root на всех хостах. Это необходимо сделать для всех интерфейсов (общедоступной сети и сети хранения), а также для IP-адресов и полных доменных имен.

    1. Перейдите в веб-интерфейс управления хостом виртуализации Cockpit.

      Используйте учетную запись root. Сервис доступен по доменному имени сервера и порту 9090. Например, https://h1.vlab.local:9090.

      cockpit
    2. Выберите из основного списка вкладку Терминал для выполнения нижеуказанных команд.

      terminal
  3. Убедитесь, что репозитории настроены и активированы.

  4. Сгенерируйте беспарольный ключ:

    ssh-keygen -t rsa

    В процессе генерации будет предложено указать каталог для хранения ключа или выбрать каталог по умолчанию. Не используйте парольную фразу.

  5. Скопируйте полученный открытый ключ на каждый хост, к которому необходимо получить доступ, включая хост, на котором выполняете команду. Можно использовать как внешние, так и внутренние полные доменные имена.

    Синтаксис команды:

    ssh-copy-id -i <расположение ключа>/<имя ключа>.pub <пользователь>@<имя хоста>

    Пример выполнения копирования ключа:

    ssh-copy-id -i /root/.ssh/id_rsa.pub root@h1.vlab.local
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@h2.vlab.local
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@h3.vlab.local

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

Перед развертыванием убедитесь, что сервис multipath не использует локальные диски, которые подготовлены для Gluster Storage. Информацию см. в Отключение multipath для работы дополнительных дисков.

В случае отсутствия доступа к сети Интернет на хосте, необходимо скачать пакет zvirt-appliance-4.3.rpm, после чего перенести файл(ы) на хост любым удобным способом в папку /root и затем установить:

dnf install -y zvirt-appliance-4.3.rpm

Также необходимо отключить все имеющиеся репозитории:

dnf config-manager --disable '*'
  1. Перейдите в Cockpit первого хоста виртуализации.

    Используйте учетную запись root. Сервис доступен по доменному имени сервера и порту 9090. Например, https://h1.vlab.local:9090.

    cockpit
  2. Выберите из основного списка вкладку «zVirt», далее «Гиперконвергентная среда» и нажмите «Запустить» для запуска процесса подготовки хранилища.

    wizard
  3. Выберите вариант развертывания:

    • Установщик для одного хоста - позволяет развернуть гиперконвергентное решение на одном хосте.

      Настоятельно не рекомендуется использовать такое решение для продуктивной среды, поскольку оно не обеспечивает высокую доступность Менеджера управления и данных. Используйте этот вариант только для знакомства с решением.
    • Установщик Gluster - позволяет развернуть полнофункциональное гиперконвергентное решение. Требует наличия трёх подготовленных хостов.

    gl installer conf

    Далее в описании развертывания будет использоваться Установщик Gluster, но схожие параметры можно использовать и для Установщика для одного хоста.

  4. На этапе настройки хостов:

    • Укажите полные доменные имена хостов, которые будут использоваться для общедоступной сети и сети хранения.

      Будьте внимательны при указании FQDN, чтоб не перепутать сеть хранения и общедоступную сеть.

      В поле Хост 1 укажите FQDN гиперконвергентного хоста, который с помощью беспарольной SSH-аутентификации может подключаться к другим хостам.

      Если планируется использовать хост с бриками-арбитрами, его FQDN необходимо указать в полях Хост 3.

    • Если хосты используют только одну сеть, включите опцию Используется одно и тоже имя хоста для общедоступной сети и сети хранения.

    • Если хосты используют сеть IPv6, включите опцию Хосты используют IPv6 (по умолчанию IPv4). Перед включением опции убедитесь, что хосты используют полные доменные имена. Указание IPv6 адресов не поддерживается.

    gl installer hosts
  5. На вкладке Выбор пакетов возможно установить дополнительные пакеты на всех хостах.

    gl installer repo
  6. На вкладке Тома определяются тома, которые будут созданы. Указанные тома будут использоваться для создания доменов хранения в zVirt.

    Для каждого тома можно активировать опцию Арбитр. При её активации, вместо трехстороннего реплицированного тома будет создан арбитражный реплицированный том.

    Подробнее о типах томов см. в разделе Типы томов системных требований.

    gl installer volumes

    Если необходимо добавить дополнительный том, нажмите Добавить том, введите имя и путь к брику.

  7. На вкладке Брики настройте параметры бриков:

    • В разделе Настройка RAID:

      • Если на физическом слое используется RAID, выберите соответствующий тип и укажите его параметры.

      • Если на физическом слое не используется RAID, выберите JBOD.

    • В разделе Настройка Multipath при необходимости измените опцию Черный список устройств Gluster. Её активация запрещает использовать для диска имя в формате multipath. Для использования имени устройства в формате multipath, отключите эту опцию и укажите имя устройства в формате /dev/mapper/<WWID>.

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

    • В поле Имя LV указывается имя логического тома. Это поле предварительно заполняется именем, которое было указано на предыдущей странице мастера.

    • В поле Имя устройства укажите устройство в формате - /dev/sdc, которое будет использоваться для создания томов. Используйте формат - /dev/mapper/<WWID> для multipath - устройств.

    • В поле Размер LV (Гб) при необходимости измените размер создаваемых логических томов в гигабайтах. Не вводите единицы, только число. Это число должно быть одинаковым для всех бриков в наборе репликации. Брики-арбитры могут быть меньше других бриков в их наборе репликации.

      Логический том для брика engine должен быть толстым LV размером 100 ГБ, остальные брики создаются как тонкие LV с резервированием 16 ГБ для метаданных пула и 16 ГБ для резервных метаданных.

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

      Пример 1. Пример расчета размера бриков

      Исходные данные:

      • К серверу подключен диск 1 Тб:

      • Размер брика engine - 100 Гб

      • Метаданные пула - 16 Гб

      • Резервные метаданные - 16 Гб

      В этом случае для дополнительных бриков остается свободным следующий объем:

      1Тб - (100Гб + 16Гб + 16Гб) = 868Гб

      Это доступное пространство можно разделить, например, следующим образом:

      • брик vmstore: 200Гб

      • брик data: 668Гб

    • При необходимости активируйте опцию Настройка дедупликации и компрессии для включения VDO. Подробнее о его использовании см. в разделе VDO архитектуры.

      Обратите внимание, что при активации VDO логический размер бриков увеличивается до десятикратного размера.

    • При необходимости настройте LV Cache. Этот параметр позволяет использовать для lvmcache SSD диски, если для бриков используются HDD диски.

    gl installer bricks
  8. На вкладке Проверка доступен для просмотра и редактирования сгенерированный сценарий Ansible.

    gl installer summary

    Если в процессе подготовки Gluster возникают ошибки, можно активировать опцию Установить уровень логгирования - debug для увеличения детализации вывода.

  9. По нажатию на кнопку Установить будет запущен процесс подготовки томов.

    gl installer prepare
  10. После успешной подготовки томов будет предложено продолжить развертывание среды виртуализации в режиме Hosted Engine. Нажмите на кнопку Продолжить установку Hosted Engine.

    gl installer prepare complete
  11. Заполните поля для настройки ВМ HostedEngine (минимальное количество виртуальных ЦП - 4, минимальный размер ОЗУ - 4096 МБ, рекомендуемый - не менее 16384 МБ). Укажите пароль для учётной записи администратора root операционной системы ВМ HostedEngine. При необходимости измените дополнительные настройки в разделе Дополнительно.

    vm 1
    vm 2
  12. Укажите пароль для учётной записи администратора портала (учётная запись - admin@internal, используется для авторизации в веб-интерфейсе среды виртуализации). Используйте опцию Установить Keycloak, для включения/отключения интеграции с Keycloak на этапе установки.

    engine

    Рекомендуем предварительно принять решение о необходимости использования Keycloak, исходя из следующих особенностей:

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

    • Если на данном согласиться с интеграцией с Keycloak, в дальнейшем можно будет переключиться на AAA, но это необходимо делать вручную. Кроме того, мы настоятельно не рекомендуем выполнять такой переход.

    • На текущий момент не существует никаких средств автоматизации, упрощающих миграцию между AAA JDBC/LDAP и keycloak.

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

  13. Проверьте конфигурацию, если она корректна, нажмите на кнопку Подготовить ВМ.

    vm preparation

    Процесс подготовки и создания ВМ HostedEngine:

    vm process

    Успешное завершение процесса подготовки и создания ВМ HostedEngine:

    vm finish
  14. Выполните настройку домена хранения для ВМ HostedEngine. Конфигуратор автоматически предложит использовать ранее подготовленный том.

    gl store he
  15. Проверьте итоговую конфигурацию, если она корректна, нажмите на кнопку Завершить установку.

    gl store summary
  16. Процесс развертывания среды виртуализации в режиме Hosted Engine.

    gl store process
  17. После успешного развертывания будет показано сообщение.

    deploy finish

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

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

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

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

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

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

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

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

    domains

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

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

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

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

    hosts

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

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

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

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

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

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

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

4.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
4.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.

4.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

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

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

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

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

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

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

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

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

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