
Привет, Хабр! Меня зовут Валентин, я инженер по тестированию ПО в компании Киберпротект. Сегодня я расскажу о том, как мы продолжаем развивать возможности защиты платформы виртуализации 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.

