Этот драйвер использует стандартный API репликации Openstack Cinder для обеспечения высокой доступности и быстрого восстановления томов Cinder в случае сбоя. Репликация Openstack Cinder обеспечивает синхронную (full-sync), около синхронную (semi-sync) или асинхронную (async) репликацию данных между исходным и реплицируемыми томами, гарантируя целостность данных и минимальное время восстановления. Что особенно важно, это позволяет использовать драйвер для приложений, требующих блочного хранилища с низкой задержкой, потенциально заменяя Ceph там, где минимальная задержка имеет первостепенное значение.
Для получения подробной информации о настройке и использовании стандартного API функционала репликации Openstack Cinder обратитесь к официальной документации OpenStack: https://docs.openstack.org/cinder/latest/contributor/replication.html
Поддерживаемые операции
- Создание отказоустойчивого ресурса/сервиса хранения Openstack Cinder с репликацией данных на failover хосты.
- Переключение томов блочных устройств на один из резервных узлов хранения, в случае сбоя основного узла хранения.
- "Заморозка" (freeze) - блокировка операций управления жизненным циклом блочных устройств с сохранением доступа к данным на момент аварии.
- Возврат к исходному состоянию, обеспечивающий выполнение операций на основном сервере, как только он станет доступным/работоспособным.
- "Разморозка" (thaw) – полная разблокировка операций управления жизненным циклом блочного устройства.
- Тонкие и толстые тома
- Создание, удаление, подключение и отключение томов.
- Создание, просмотр и удаление снимков томов.
- Создание тома из снимка тома.
- Копирование образа виртуальной машины в том.
- Копирование тома в образ виртуальной машины.
- Клонирование тома.
- Миграция тома между хостами хранения
- Изменение типа блочного устройства (retyping)
- Изменение размера тома
Конфигурация
Создайте тип блочных устройств Openstack Cinder c поддержкой репликации:
openstack volume type create RBS --property volume_backend_name='ev3' --property replication_enabled=' True'
В файле конфигурации cinder.conf на каждом из узлов хранения выполните настройку бэкенда:
[RBS]
target_helper=lioadm
target_protocol=iscsi
target_ip_address=
#target_secondary_ip_addresses=<вторичный IP адрес для доступа к target порталу>
volume_backend_name=ev3
volume_driver = cinder.volume.drivers.ovt.ev3.ReplicatedVolumeDriver
volume_group=volumes
# ID текущего бэкенда, в формате <ИМЯ_ХОСТА@ИМЯ_БЭКЕНДА>
backend_id=host-01@RBS
# Адрес API управление бэкендом
backend_ip=10.0.10.21
# Порт API управление бэкендом, значение по умолчанию - 7000
# backend_port=7000
# Уникальный секретный ключ репликации, совместно используемый в веб-запросах для формирования подписи передаваемого WEB запроса.
# Используйте свое уникальное значение...
# replication_internal_secret = 4abcfe3b-367f-477d-89bd-283c4382e5f6
# Режимы репликации
# async: асиинхронный - завершение записи определяется, когда данные записаны на локальный диск и в локальный буфер передачи данных
# полусинхронный: завершение записи определяется, когда данные записаны как на локальный диск, так в удаленных буфер передачи данных
# full-sync: полносинхронный - завершение записи определяется, когда данные записаны как на локальный диск, так и на удаленный диск (режим по умолчанию)
# replication_mode = full-sync
# replication_resync_rate = 100
# Самый первый порт, используемый для репликации томов
# replication_starting_port = 7001
# Реплицируемый
replication_device = backend_id:host-02@RBS,ip:10.0.10.22,port:7000,volume_group:volumes
Для предоставление доступа к бэкенду, укажите в cinder.conf
[DEFAULT]
...
enabled_backends = RBS
и выполните запуск cinder-volume сервиса
systemctl enable --now cinder-volume
Описание параметров конфигурации ev3.Storage
| Параметр конфигурации = значение по умолчанию | Описание |
|---|---|
| target_secondary_ip_addresses | Вторичный IP адрес для доступа к target порталу |
| backend_id | ID текущего бэкенда, в формате <ИМЯ_ХОСТА@ИМЯ_БЭКЕНДА> |
| backend_ip | API адрес управление бэкендом хранения блочных устройств |
| backend_port = 7000 | Порт API управление бэкендом хранения блочных устройств |
| replication_internal_secret = '' | Уникальный секретный ключ репликации, совместно используемый в веб-запросах для формирования подписи передаваемого запроса. Используйте свое уникальное значение. |
| replication_mode = full-sync | Режим репликации. async (асиинхронный): завершение записи определяется, когда данные записаны на локальный диск и в локальный буфер передачи данных; semi-sync (полусинхронный): завершение записи определяется, когда данные записаны как на локальный диск, так в удаленных буфер передачи данных; full-sync (полносинхронный): завершение записи определяется, когда данные записаны как на локальный диск, так и на удаленный диск (режим по умолчанию) |
| replication_resync_rate = 100 | Ограничение скорости репликации в мегабайтах в секунду |
| replication_starting_port = 7001 | Первый порт, используемый для репликации, присваевоемое первому тому. Каждый последующий том будет получать увеличенно на единицу значение |
| replication_device | указывается для репликации каждого целевого устройства |