可用区类型

背景

在全新部署的区域环境中,卷类型(SSD、HDD 或其他)可能只存在于部分可用区 (AZ) 中,但最终用户不知道哪个 AZ 允许使用特定的卷类型,并且他们无法意识到只有在无法将卷调度到后端时才会发生这种情况。在这种情况下,我们已经在 Rocky 周期中支持了可用区卷类型,管理员可以利用它来解决这个问题。

如何配置可用区类型?

我们决定使用类型自身的 extra-specs 来存储这些附加信息,管理员可以通过更新卷类型的键 RESKEY:availability_zones 来启用它,如下所示

"RESKEY:availability_zones": "az1,az2,az3"

它是一个数组列表,其中的项目用逗号分隔并存储在字符串中。配置了可用区类型后,任何 UI 组件或客户端都可以根据其选择的可用区过滤掉无效的卷类型

Request example:
/v3/{project_id}/types?extra_specs={'RESKEY:availability_zones':'az1'}

请记住,Cinder 将始终尝试进行不精确匹配以获取此 spec 值,例如,当 extra spec RESKEY:availability_zones 配置值为 az1,az2 时,az1az2 都是查询的有效输入,并且此 spec 不会在执行能力过滤期间使用,而是仅在以下两种情况下用于选择合适的可用区。

1. 创建卷,在此功能中,现在可以通过参数 availability_zone、卷源(卷、快照、组)、配置选项 default_availability_zonestorage_availability_zone 来指定可用区。创建新卷时,Cinder 将尝试按照以下优先级读取 AZ(s):

source group > parameter availability_zone > source snapshot (or volume) > volume type > configuration default_availability_zone > storage_availability_zone

如果其中任何一个存在冲突,将引发 400 BadRequest 错误,并且现在将 AZ 列表而不是单个 AZ 传递给 AvailabilityZoneFilter

2. 重新类型卷,此流程也已更新,如果新类型配置了 RESKEY:availability_zones,Cinder 调度器也会对其进行验证。