备份多后端配置

https://blueprints.launchpad.net/cinder/+spec/backup-backends-configuration

添加一个新的配置节用于备份配置选项,以统一我们处理卷驱动程序的方式,并支持在一个服务中使用多个备份驱动程序。

问题描述

目前,所有备份相关的配置选项都定义在 [DEFAULT] 节中

[DEFAULT]
backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_user = cinder-backups
backup_ceph_pool = volume-backups
...

这导致备份相关的配置选项与 Cinder 通用配置混杂在一起。这种方法也不支持备份多后端。操作员只能通过配置多个 cinder-backup 服务来配置多个备份后端。

当前方法阻碍了通用备份的实现,因为驱动程序的 self.configuration 将无法看到在 [DEFAULT] 节中定义的必需配置。

用例

这里的核心用例是从 [DEFAULT] 节中解耦备份相关的配置,并引入 backup_type。

提议的变更

新的配置选项 ‘enabled_backup_backends’ 将包含一个启用的备份后端列表。这将实现与卷的 ‘enabled_backends’ 配置选项相同的方法。

所有备份相关的配置将被移动到新的后端特定节

[DEFAULT]
enabled_backup_backends = ceph_backup, ceph_backup_ssd
default_backup_type = ceph-backup-type
...

[ceph_backup]
backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_user = cinder-backups
backup_ceph_pool = volume-backups

[ceph_backup_ssd]
backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_user = cinder-backups
backup_ceph_pool = volume-backups-ssd

旧式的备份配置将在至少一个版本中得到支持,以遵循所有弃用策略。

使用多备份配置,我们还希望引入备份类型。这将帮助我们利用所有多后端优势。备份类型将遵循与卷类型相同的方法

  • __DEFAULT__ 备份类型将被引入,并且所有现有的备份都将被迁移到此备份类型。

  • default_backup_type 配置选项将被引入。

  • 备份类型将拥有自己的额外规格。

备选方案

保持一切不变,并在代码中引入一些技巧,使卷驱动程序在通用备份功能的范围内作为备份驱动程序工作。

数据模型影响

新的备份类型表将被引入。我们将遵循与卷类型相同的方法,该方法对 Cinder 来说效果很好

BackupType +————–+————–+ | 字段 | 类型 | +————–+————–+ | created_at | datetime | | updated_at | datetime | | id | varchar(36) | | name | varchar(255) | | description | varchar(255) | | deleted | boolean | | is_public | boolean | +————–+————–+

BackupTypeProjects +—————-+————–+ | 字段 | 类型 | +—————-+————–+ | created_at | datetime | | updated_at | datetime | | id | varchar(36) | | project_id | varchar(36) | | backup_type_id | varchar(36) | | deleted | boolean | +—————-+————–+

BackupTypeExtraSpecs +—————-+————–+ | 字段 | 类型 | +—————-+————–+ | created_at | datetime | | updated_at | datetime | | key | varchar(255) | | value | varchar(255) | | deleted | boolean | +—————-+————–+

REST API 影响

将为备份类型实现新的 API 端点。它应该类似于卷类型 API。

安全影响

通知影响

其他最终用户影响

性能影响

备份创建过程将包含更多数据库调用,但它不应该对性能产生太大影响。

其他部署者影响

操作员应该使用新的机制配置备份,并从旧式配置迁移。

开发人员影响

实现

负责人

主要负责人

e0ne

工作项

  • 添加一个新的 ‘enabled_backup_backends’ 配置选项并弃用旧式配置

  • 修改备份管理器以尊重新的配置

  • 添加一些单元测试

  • Devstack 应该能够以新的方式配置 cinder 备份

  • 操作员文档应该更新

  • API 参考应该更新

依赖项

测试

  • 单元测试

  • 现有的 tempest 测试将涵盖新的功能

文档影响

  • 更新文档以描述新的配置选项

  • 新的 REST API 端点将被记录

参考资料