增强 iSCSI 多路径支持

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/cinder/+spec/enhance-iscsi-multipath

本文档提出通过定义告知 Nova 如何访问卷(LU)的多个 iSCSI 门户/IQN/LUN 的方式,来增强 iSCSI 多路径支持。

问题描述

目前,nova-compute 支持 iSCSI 卷数据路径的多路径。它依赖于对主 iSCSI 门户的目标发现的响应,并期望包含多个门户地址。

然而,某些阵列即使存在辅助门户,也仅响应单个门户地址的发现请求。在这种情况下,nova-compute 无法知道辅助门户和相应的 iSCSI 目标 IQN,因此无法为目标建立多个会话。为了使 nova-compute 能够登录到辅助门户,cinder 应该告知辅助门户地址和相应的目标 iqn/lun。

告知辅助门户地址和 iqn/lun 对于能够响应包含多个门户地址和 IQN 的发现请求的阵列也很有用,因为即使主门户由于网络问题无法访问,计算节点也可以通过辅助门户访问卷。(请注意,计算节点应该通过多路径设备“dm-X”附加卷,以便在网络恢复时可以重新建立到主门户的会话。)

用例

提议的变更

如果 nova-compute 支持 iSCSI 多路径(即,如果安装了 multipathd 并且 CONF.libvirt.iscsi_use_multipath 设置为 True),nova-compute 应该使用 ‘connector’ 字典中的一个新的可选键 ‘multipath=True’ 调用 Cinder initialize_connection API。此参数传递给后端驱动程序,以便驱动程序可以将卷导出到多个端口。

当指定 ‘multipath=True’ 时,API 响应的 ‘connection_info’ 将包含多个门户地址和相应的目标 iqn/lun。当前的 ‘target_portal’/‘target_iqn’/‘target_lun’ 参数将被 ‘target_portals’/‘target_iqns’/‘target_luns’ 替换,它们包含 iSCSI 门户的地址列表以及每个门户对应的 iqn/lun。当 nova-compute 识别到这些参数时,它将登录到每个门户地址/目标/lun。当后端不支持(或未配置为支持)多路径时,驱动程序可以返回当前的 ‘target_portal’/ ‘target_iqn’/‘target_lun’ 设置。

如果指定 ‘multipath=False’ 或省略了该键,API 必须返回 ‘target_portal’/‘target_iqn’/‘target_lun’ 设置。

此更改也必须应用于 cinder/brick/initiator。

备选方案

数据模型影响

REST API 影响

‘os-initialize_connection’ 卷操作 API 将在 connector 参数中接受新的可选参数 ‘multipath’,这意味着 connector 可以处理到 iSCSI 卷的多路径。

当指定 ‘multipath=True’ 时,‘os-initialize_connection’ 卷操作 API 将在 ‘connection_info’ 中使用 ‘target_portals’/‘target_iqns’/‘target_luns’ 进行响应,其中包含门户 IP 地址:端口对的列表、与每个门户地址对应的二级 iqn 和 lun 的列表。

例如

{"connection_info": {"driver_volume_type": "iscsi", ...
                     "data": {"target_portals": ["10.0.1.2:3260",
                                                 "10.0.2.2:3260"],
                              "target_iqns": [
                                            "iqn.2014-2.org.example:vol1-1",
                                            "iqn.2014-2.org.example:vol1-2"],
                              "target_luns": [1, 2],
                              ...}}}

例如,对于门户 “10.0.1.2:3260”, “iqn.2014-2.org.example:vol1-1”,lun=1,对于门户 “10.0.2.2:3260”, “iqn.2014-2.org.example:vol1-2”,lun=2。

安全影响

请注意,如果在 connection_info 中提供了任何 CHAP 凭据,则必须将它们应用于所有 target_portals。

通知影响

其他最终用户影响

性能影响

由于 nova-compute 可以省略发现查询以查找多个门户和目标,因此此更改可能会使卷附加/分离操作更快。

其他部署者影响

后端驱动程序可能有额外的设置来启用 iSCSI 门户多路径。例如,要在 iSCSI LVM 驱动程序中利用此功能,我们需要指定 cinder-volume 节点上 iSCSI 目标运行的辅助 IP 地址列表。

开发人员影响

如果驱动程序想要使用 iSCSI 多路径,并且 connector 具有 ‘multipath=True’ 值,那么驱动程序应该更改为返回 ‘target_portals’、‘target_iqns’ 和 ‘target_luns’。

支持通过现有过程进行目标门户发现的现有驱动程序无需更改,除非他们希望在导出卷时尊重 ‘multipath=True’ connector 条目。

支持使用现有设计进行多路径的现有驱动程序即使不支持此更改也必须工作。此类驱动程序即使指定 ‘multipath=True’ 也会返回单个 ‘target_portal’/‘target_iqn’/‘target_lun’。然后 connector 必须发送发现查询到返回的门户,以便查找多路径门户和目标,就像现有设计一样。

实现

负责人

主要负责人

tsekiyama

工作项

  • 在 LVM iSCSI 驱动程序中实现此功能作为示例

  • 启用 nova 和 brick 库以处理多个门户/iqn/lun。

依赖项

测试

  • 应该为支持此功能的驱动程序添加单元测试,以便 initialize_connection 将返回正确的 connection_info。

  • 为了在 tempest 中测试此功能,必须将多个地址分配给测试环境,以便建立到卷的多个会话。在 LVM iSCSI 驱动程序中实现将对测试很有用。

文档影响

应该添加一个部分来描述此功能。

如果驱动程序需要此功能的其他设置,则应该添加其文档。

参考资料