
Привет, Хабр! Меня зовут Валентин, я инженер по тестированию ПО в компании Киберпротект. Сегодня я расскажу о том, как мы продолжаем развивать возможности защиты платформы виртуализации 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 VFreecinder-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
Имя окружения и путь могут быть выбраны произвольно, при этом рекомендуется использовать название, которое интуитивно соответствует задаче установки.
После этого необходимо активировать виртуальное окружение следующими командами:
#для узла с RegionOnesource openstack-regionone/bin/activate
#для узла с RegionTwosource 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/kollasudo 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=Falsepipelining=Truefork=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 regionsOpenstack_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# запустим развертывание OpenStackkolla-ansible deploy -I ./all-in-one
После успешного развертывания можно попробовать авторизоваться на стенде перейдя по адресу <http://ip address:35357>. В меню авторизации Horizon будет доступно переключение между RegionOne и RegionTwo.

