Как стать автором
Обновить

Как мы развиваем поддержку OpenStack в Кибер Бэкапе

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров631

Привет, Хабр! Меня зовут Валентин, я инженер по тестированию ПО в компании Киберпротект. Сегодня я расскажу о том, как мы продолжаем развивать возможности защиты платформы виртуализации OpenStack в нашей системе резервного копирования Кибер Бэкап.

Мы уже рассказывали о том, как в нашем продукте реализована возможность резервного копирования платформы OpenStack, здесь же поговорим о том, как в Кибер Бэкапе 17.3 мы добавили поддержку OpenStack Multiple Regions.

OpenStack. Коротко о главном

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

OpenStack Multiple Regions — это конфигурация в OpenStack в которой развертывание облачной инфраструктуры охватывает несколько географически распределенных регионов. Каждый регион в OpenStack представляет собой отдельную, независимую инсталляцию службы, которая может содержать свои собственные ресурсы, такие как вычислительные узлы, хранилища и сети.

Основные фишки мультирегионной конфигурации

  • В каждом регионе развертывание настраивается отдельно — таким образом можно по‑разному настроить и выделить ресурсы вычислительного узла под каждый регион.

  • Виртуальные машины обычно развертывают ближе к пользователям, поэтому все работает быстрее и стабильнее; дополнительно это помогает распределить нагрузку по разным локациям.

  • Если в каком‑то регионе что‑то пойдет не так, остальные регионы продолжат работать в штатном режиме и система, в целом, не пострадает.

  • OpenStack с несколькими регионами позволяет удобно управлять всеми ресурсами сразу из одного места — через API или панель управления.

Как в Кибер Бэкапе обеспечена поддержка регионов OpenStack

Реализации поддержки мультирегионных конфигураций в нашей СРК состоит из нескольких основных шагов:

  • развертывание агента (виртуального устройства) для OpenStack;

  • создание резервной копии;

  • восстановление из резервной копии.

Текущая версия Кибер Бэкапа поддерживает выпуски OpenStack от Ussuri до Zed.

Развертывание

Перед началом развертывания агентов необходимо указать адрес подключения к OpenStack с настроенными регионами, учетные записи (логин и пароль) и имен домена.

Один из компонентов Кибер Бэкапа (мы называем его «автодеплоер») отвечает за процесс автоматического развертывания агента. Этот компонент использует API OpenStack для получения списка регионов и доступных в них проектов. Далее пользователь может выбрать проект в конкретном регионе для последующей установки виртуального устройства. Если виртуальное устройство развернуто в OpenStack вручную, то агент автоматически определяет к какому региону принадлежит виртуальная машина, в котором она запущена, и дальше уже работает с сервисами (endpoints) этого региона.

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

Создание резервной копии

Процесс создания резервных копий практически не изменился по сравнению с предыдущими версиями Кибер Бэкапа. Агент продолжает «видеть» виртуальные машины своего региона и может выполнять их резервное копирование. Это обеспечивает стабильность и надежность сохранения данных в рамках одной географической зоны.

Восстановление из резервной копии

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

В новой версии КиберБэкап теперь есть возможность выбора региона OpenStack при восстановлении виртуальной машины. Раньше, чтобы восстановить виртуальную машину, нужно было просто выбрать домен и проект, где планировалось это сделать.

Заключение

Мы продолжаем развивать поддержку наиболее востребованных на рынке и среди наших заказчиков платформ виртуализации — отечественных., зарубежных и свободно‑распространяемых.

Самостоятельно протестировать поддержку OpenStack или любые другие возможности Кибер Бэкапа вы можете развернув у себя бесплатную 30-дневную пробную версию продукта.

Приложение. Как развернуть стенд с OpenStack Regions

Для разработки и тестирования работы Кибер Бэкапа с мультирегионными конфигурациями OpenStack мы развернули тестовый стенд. На стенде мы развернули два идентичных по техническим характеристикам сервера на базе ОС Ubuntu, установленной внутри виртуальной машины.

В следующей таблице приведены характеристики вычислительных узлов стенда.

Узел

Система

Имя узла

Диски

Распределение дисков

Интерфейсы

Распределение интерфейсов

vCPU

RAM

1

Ubuntu 22.04.1 LTS

RegionOne

2

100 GB под систему, 200 GB для Cinder

2

1 интерфейс для mgmt (сети управления)

2 интерфейс для  ext. network and floating IP + VIP

40

64

2

Ubuntu 22.04.1 LTS

RegionTwo

2

100 GB под систему, 200 GB для Cinder

2

1 интерфейс для mgmt (сети управления)

2 интерфейс для  ext. network and floating IP + VIP

40

64

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

Для упрощения развертывания стенда будем использовать Kolla Ansible — проект на базе конфигурации OpenStack Kolla, который упрощает развертывания компонентов OpenStack и управление ими. В проекте используются Ansible playbooks и контейнеры Docker. На момент написания статьи в Kolla Ansible поддерживались следующие операционные системы для узлов (nodes):

  • CentOS Stream 9

  • Debian Bookworm 12

  • Rocky Linux 9

  • Ubuntu Jammy 22.04

Перед началом установки необходимо убедиться, что в среде корректно отображаются все подключенные устройства (диски, сетевые интерфейсы e.t.c).

Первым делом обновим список доступных пакетов следующей командой:

sudo apt update -y

Далее создадим и подготовим том (VG) для Cinder‑backend (volume instances) следующей командой:

# запустим команду которая выведет все доступные диски в системе и
# выберем подходящий не размеченный диск
lsblk
#Создадим раздел
pvcreate /dev/sdbvgcreate cinder-volumes /dev/sdb
# выполним проверку о созданных группах томов запустив команду
vgs
#результат выполняеникоманды:
VG              #PV #LV #SN Attr    VSize      VFree
cinder-volumes    1   0   0 wz--n-  <200.00g   <200.00g

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

sudo apt install git python3-dev libffi-dev gcc libssl-dev libdbus-glib-1-dev

Установка будет выполняться в виртуальном окружении:

sudo apt install python3-venv

Подготовим виртуальное окружение командой:

python3 -m venv openstack-regionone

Таким же образом подготовимвиртуальное окружение на втором узле:

python3 -m venv openstack-regiontwo

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

После этого необходимо активировать виртуальное окружение следующими командами:

#для узла с RegionOne
source openstack-regionone/bin/activate
#для узла с RegionTwo
source openstack-regiontwo/bin/activate

Теперь необходимо проверить, что установлена последняя версия менеджера пакетов PIP и в случае его отсутствия установить командой:

#для каждого узла
pip install git+https://opendev.org/openstack/kolla-ansible@master

Установка будет выполняться из ветки master. В зависимости от предполагаемой версии можно переключиться на нужную ветку из репозитория https://opendev.org/openstack/kolla‑ansible.

Следует создать директорию для размещения всех необходимых файлов и изменить владельца на каждом узле:

sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kola

Далее потребуется выполнить копирование конфигурационных файлов globals.yml и passwords.yml в каталог /etc/kolla.

#для каждого узла
cp -r /openstack-regionone/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

Файл globals.yml представляет собой предустановленный шаблон для развертывания необходимых сервисов и их конфигураций.

Файл passwords.yml содержит учетные данные для всех сервисов, служб и ключей OpenStack.

Для успешного выполнения команд необходимо скопировать файлы инвентаря (в этом примере установки используется «all‑in‑one») в текущий каталог. Для копирования инвентаря будем использовать следующую команду — ее необходимо выполнить для каждого узла:

cp /openstack-regionone/share/kolla-ansible/ansible/inventory/all-in-one

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

Далее подготовим новую директорию для установки ansible на каждом узле:

sudo mkdir /etc/ansible

Создадим конфигурационный файл на каждом узле с регионами ansible.cfg для успешной установки со следующими параметрами:

vi /etc/ansible/ansible.cfg

[defaults]
host_key_checking=False
pipelining=True
fork=100

Теперь можно запустить установку зависимостей Ansible Galaxy на каждом узле с регионами

kolla-ansible install-deps

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

Откроем файл инвентаря для редактирования:

vi /etc/kolla/globals.yml

Убедимся, что все необходимые сервисы для нашего стенда и их конечные точки (endpoints) указаны. В качестве примера представлены настройки файла инвентаря нашего стенда.

kolla_base_distro: "ubuntu"
kolla_install_type: "source"

kolla_internal_vip_address: "<ip address>"
kolla_internal_fqdn: "<ip address>"

network_interface: "ens192"
api_interface: "ens192"

neutron_external_interface: "ens224"
neutron_plugin_agent: "openvswitch"
openstack_region_name: "RegionOne"
multiple_regions_names:
   - "{{ openstack_region_name }}"
   - "RegionTwo"

enable_haproxy: "no"
enable_keystone: "yes"

enable_cinder: "yes"
enable_cinder_backup: "no"
enable_cinder_backend_lvm: "yes"
enable_heat: "yes"
enable_neutron_provider_networks: "yes"
enable_horizon: "yes"
enable_neutron_trunk: "yes"
nova_compute_virt_type: "kvm"

Отметим, что названия сетевых интерфейсов могут отличаться.

После внесения изменений сохраняем файл настроек.

Пример файла конфигурации для узла RegionTwo:

workaround_ansible_issue_8743: yes
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
kolla_internal_vip_address: "<ip address>"
network_interface: "ens224"
neutron_external_interface: "ens256"
neutron_plugin_agent: "openvswitch"
api_interface: "ens224"
enable_keystone: "no"
enable_neutron_trunk: "yes"
enable_haproxy: "no"
enable_cinder: "yes"
enable_cinder_backup: "no"
enable_cinder_backend_lvm: "yes"
enable_horizon: "no"
enable_neutron_provider_networks: "yes"
enable_heat: "yes"
nova_compute_virt_type: "kvm"
#Deployment of other regions
Openstack_region_name: "RegionTwo"
kolla_internal_fqdn_r1: ip address keystone_admin_url: "{{ admin_protocol }}://{{
kolla_internal_fqdn_r1 }}:{{ keystone_admin_port }}"
keystone_internal_url: "{{ internal_protocol }}://{{ kolla_internal_fqdn_r1 }}:{{ keystone_public_port }}"
openstack_auth:
    auth_url: "<http://ip address:35357>"
    username: "admin"
    password: "admin"
    project_name: "admin"
    domain_name: "default"
    user_domain_name: "default

Для безопасного развертывания OpenStack и обеспечения защиты необходимых сервисов, необходимо сгенерировать пароли, которые будут храниться в файле /etc/kolla/passwords.yml.

Все пароли в этом файле изначально пустые и должны быть заполнены либо вручную, либо с использованием генератора случайных паролей. Данный шаг необходимо выполнить для узлов RegionOne и RegionTwo.

Команда для генерации паролей:

kolla-genpwd

После завершения всех настроек и конфигураций можно перейти к этапу развертывания для узлов с RegionOne и RegionTwo. Сначала выполним установку OpenStack RegionOne, а затем на узле RegionTwo:

# проверим все ли зависимости для развертывания соблюдены
kolla-ansible bootstrap-servers -i ./all-in-one
# проверим хосты перед развертыванием
kolla-ansible prechecks -i ./all-in-one
# запустим развертывание OpenStack
kolla-ansible deploy -I ./all-in-one

После успешного развертывания можно попробовать авторизоваться на стенде перейдя по адресу <http://ip address:35357>. В меню авторизации Horizon будет доступно переключение между RegionOne и RegionTwo.

Теги:
Хабы:
0
Комментарии1

Публикации

Работа

DevOps инженер
27 вакансий

Ближайшие события