Этот драйвер использует стандартный 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 указывается для репликации каждого целевого устройства