在登录失败时故障转移到备用 iSCSI 门户¶
包含您的 Launchpad 蓝图的 URL
https://blueprints.launchpad.net/cinder/+spec/iscsi-alternative-portal
本规范建议在附加 iSCSI 卷时,当主 iSCSI 门户不可访问时,添加对备用 iSCSI 门户的故障转移功能。
问题描述¶
当主 iSCSI 门户因网络故障等原因无法访问时,即使其他门户地址可访问,卷的附加/分离也会失败。为了使 nova-compute 能够回退到备用门户地址,cinder 应该将备用门户地址告知 nova。
用例¶
提议的变更¶
在 os-initialize_connection 卷操作 API 返回的 ‘connection_info’ 中添加可选参数 ‘target_alternative_portals’、‘target_alternative_iqns’ 和 ‘target_alternative_luns’,它们代表 iSCSI 门户的备用地址列表以及每个门户对应的 iqn 和 lun。(当地址指向相同的门户时,iqns 和 luns 可以相同。)
当 nova-compute 识别到这些参数时,它将在发现过程中失败时回退到参数指定的备用门户地址/目标/lun。旧的 nova-compute 会忽略这些新参数,因此如果主门户地址可用,它仍然可以正常工作。
请注意,此提案适用于单个 iSCSI 数据路径用例(故障转移)。这意味着,如果主门户和目标失败,则在该路径上已经附加的其他 LUN 将无法访问,直到手动恢复该路径。多数据路径(多路径)用例由另一个规范涵盖。
此更改也必须应用于 cinder/brick/initiator。
备选方案¶
无
数据模型影响¶
后端驱动程序(如果需要)可以将多个门户地址和 iqn 放入卷表的 ‘provider_location’ 字段中。
例如,LVM iSCSI 驱动程序会将地址以以下格式放入,以便将它们作为卷字典传递给目标管理助手
provider_location = ‘<门户 IP>:<端口>;<门户 IP 2>:<端口>,<门户> <iqn>’
例如:
- provider_location = ‘10.0.1.2:3260;10.0.2.2:3260,0 iqn.2010-10.org.openstack
volume-12345678-abcd-1234-5678-12345678abcd’
(请注意,‘volume-12345678…’ 是目标的名称,而不是卷;在 LVM iSCSI 驱动程序中它们是相同的。)
其他后端驱动程序可以将多个门户地址和 iqn 添加到 cinder.conf 中,或者可以从阵列中动态检索它们。
REST API 影响¶
‘os-initialize_connection’ 卷操作 API 响应可能包含附加参数 ‘target_alternative_portals’ 和 ‘target_alternative_iqns’,它们包含门户 IP 地址:端口对列表、与每个门户地址对应的备用 iqn 和 lun 列表。例如
{"connection_info": {"driver_volume_type": "iscsi", ...
"data": {"target_portal": "10.0.1.2:3260",
"target_alternative_portals": [
"10.0.2.2:3260",
"10.0.3.2:3260"],
"target_iqn": "iqn.2014-2.org.example:vol1-1",
"target_alternative_iqns": [
"iqn.2014-2.org.example:vol1-2",
"iqn.2014-2.org.example:vol1-3"],
"target_lun": 1,
"target_alternative_luns": [2, 3],
...}}}
在这种情况下,“iqn.2014-2.org.example:vol1-1”,lun=1 对应于门户 “10.0.1.2:3260”, “iqn.2014-2.org.example:vol1-2”,lun=2 对应于门户 “10.0.2.2:3260”,以及 “iqn.2014-2.org.example:vol1-3”,lun=3 对应于门户 “10.0.3.2:3260”。
在某些后端中,门户可能具有相同目标和/或 lun。
后端驱动程序负责指定备用门户的顺序。Nova 和 Cinder brick 库应首先尝试连接到主门户和目标。如果失败,它应尝试按照提供的列表顺序连接到备用门户和目标。例如,如果后端驱动程序希望为每个 LUN 对门户进行轮询,则驱动程序可以返回不同的门户地址作为相同目标中 LUN 的主地址。
安全影响¶
无
请注意,如果在 connection_info 中提供了任何 CHAP 凭据,则必须将它们应用于所有 target_portals。
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
后端驱动程序可能具有额外的设置来启用备用 iSCSI 门户。例如,要在 iSCSI LVM 驱动程序中利用此功能,我们需要指定 cinder-volume 节点上运行 iSCSI 目标的备用 IP 地址列表。
开发人员影响¶
为了启用多个 iSCSI 门户功能,后端驱动程序必须更改 initialize_connection 方法的实现,以返回附加参数 ‘target_alternative_portals’、‘target_alternative_iqns’ 和 ‘target_alternative_luns’。
实现¶
负责人¶
- 主要负责人
tsekiyama
工作项¶
在 LVM iSCSI 驱动程序中实现此功能作为示例
修改 Nova 和 Cinder brick 库以故障转移到备用门户
依赖项¶
无
测试¶
应为支持此功能的驱动程序添加单元测试,以便 initialize_connection 将返回正确的 connection_info。
为了在 tempest 中测试此功能,必须将多个地址分配给测试环境,以便访问备用门户地址。在 LVM iSCSI 驱动程序中实现将对测试有用。
文档影响¶
应添加一个部分来描述此功能。
如果驱动程序需要此功能的其他设置,则应添加其文档。
参考资料¶
nova-specs: 在登录失败时故障转移到备用 iSCSI 门户 https://review.openstack.org/#/c/137468/
cinder-specs: 增强 iSCSI 多路径支持(多路径用例) https://review.openstack.org/#/c/136500/