2.5. 多路径配置
使用多路径将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备,以创建冗余并提高性能。您可以在新的和现有的 overcloud 部署中配置多路径。
2.5.1. 在新部署中配置多路径
完成此流程,以在新的 overcloud 部署中配置多路径。
有关如何在现有 overcloud 部署中配置多路径的详情,请参考 第 2.5.2 节 “在现有部署中配置多路径”。
前提条件
overcloud Controller 和 Compute 节点必须有权访问 Red Hat Enterprise Linux 服务器存储库。如需更多信息,请参阅 Director 安装和使用指南中的下载基本云镜像。
流程
配置 overcloud。
注意有关更多信息,请参阅 Director 安装和使用指南中的使用 CLI 工具配置基本的 overcloud。
更新 heat 模板以启用多路径:
parameter_defaults: NovaLibvirtVolumeUseMultipath: true NovaComputeOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw CinderVolumeOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
可选:如果您使用 Block Storage (cinder)作为镜像服务(glance)后端,还必须完成以下步骤:
将以下
GlanceApiOptVolumes
配置添加到 heat 模板中:parameter_defaults: GlanceApiOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
使用以下方法设置
ControllerExtraConfig
参数:parameter_defaults: ControllerExtraConfig: glance::config::api_config: default_backend/cinder_use_multipath: value: true
- 备注
-
确保
default_backend
和GlanceBackendID
heat 模板默认值都匹配。
对于每个配置的后端,将
use_multipath_for_image_xfer
设置为true
:parameter_defaults: ExtraConfig: cinder::config::cinder_config: <backend>/use_multipath_for_image_xfer: value: true
部署 overcloud:
$ openstack overcloud deploy
注意有关使用 overcloud 参数创建 overcloud 的详情,请参考 Director 安装和使用指南中的使用 CLI 工具创建 Overcloud。
在容器运行前,在所有 Controller 和 Compute 节点上安装多路径:
$ sudo dnf install -y device-mapper-multipath
注意director 提供了一组 hook,以便在第一次引导完成后以及核心配置开始前支持特定节点角色的自定义配置。有关自定义 overcloud 配置的更多信息,请参阅高级 Overcloud 自定义指南中的 Pre-Configuration: 自定义特定 Overcloud 角色。
在所有 Controller 和 Compute 节点上配置 multipath 守护进程:
$ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
注意示例代码创建适用于大多数环境的基本多路径配置。但是,检查您的存储供应商以获得建议,因为有些供应商有特定于硬件的优化配置。有关多路径的更多信息,请参阅配置设备映射器多路径 指南。
在所有 Controller 和 Compute 节点上运行以下命令以防止分区创建:
$ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
注意将
skip_kpartx
设置为yes
可防止 Compute 节点上的 kpartx 自动在设备上创建分区,这可以防止不必要的设备映射器条目。有关配置属性的更多信息,请参阅配置设备映射器多路径 指南中的 修改 DM-Multipath 配置文件。在所有 Controller 和 Compute 节点上启动多路径守护进程:
$ systemctl enable --now multipathd
2.5.2. 在现有部署中配置多路径
在现有部署中配置多路径,以便您的工作负载可以使用多路径功能。
在现有部署中配置多路径后创建的所有新工作负载都是多路径感知。如果您有任何已存在的工作负载,您必须检查并取消缩小实例以便在这些实例上启用多路径。
有关如何在新 overcloud 部署中配置多路径的更多信息,请参阅 第 2.5.1 节 “在新部署中配置多路径”。
前提条件
overcloud Controller 和 Compute 节点必须有权访问 Red Hat Enterprise Linux 服务器存储库。如需更多信息,请参阅 Director 安装和使用指南中的下载基本云镜像。
流程
验证所有 Controller 和 Compute 节点上安装多路径:
$ rpm -qa | grep device-mapper-multipath device-mapper-multipath-0.4.9-127.el8.x86_64 device-mapper-multipath-libs-0.4.9-127.el8.x86_64
如果没有安装多路径,请在所有 Controller 和 Compute 节点上安装它:
$ sudo dnf install -y device-mapper-multipath
在所有 Controller 和 Compute 节点上配置 multipath 守护进程:
$ mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
注意示例代码创建适用于大多数环境的基本多路径配置。但是,检查您的存储供应商以获得建议,因为有些供应商已针对其硬件优化配置。有关多路径的更多信息,请参阅配置设备映射器多路径 指南。
在所有 Controller 和 Compute 节点上运行以下命令以防止分区创建:
$ sed -i "s/^defaults {/defaults {\n\tskip_kpartx yes\n\trecheck_wwid yes/" /etc/multipath.conf
注意将
skip_kpartx
设置为yes
可防止 Compute 节点上的 kpartx 自动在设备上创建分区,这可以防止不必要的设备映射器条目。有关配置属性的更多信息,请参阅配置设备映射器多路径 指南中的 修改 DM-Multipath 配置文件。在所有 Controller 和 Compute 节点上启动多路径守护进程:
$ systemctl enable --now multipathd
更新 heat 模板以启用多路径:
parameter_defaults: NovaLibvirtVolumeUseMultipath: true NovaComputeOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw CinderVolumeOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
可选:如果您使用 Block Storage (cinder)作为镜像服务(glance)后端,还必须完成以下步骤:
将以下
GlanceApiOptVolumes
配置添加到 heat 模板中:parameter_defaults: GlanceApiOptVolumes: - /etc/multipath.conf:/etc/multipath.conf:ro - /etc/multipath/:/etc/multipath/:rw
使用以下方法设置
ControllerExtraConfig
参数:parameter_defaults: ControllerExtraConfig: glance::config::api_config: default_backend/cinder_use_multipath: value: true
- 备注
-
确保
default_backend
和GlanceBackendID
heat 模板默认值都匹配。
对于每个配置的后端,将
use_multipath_for_image_xfer
设置为true
:parameter_defaults: ExtraConfig: cinder::config::cinder_config: <backend>/use_multipath_for_image_xfer: value: true
运行以下命令以更新 overcloud:
$ openstack overcloud deploy
注意当您运行
openstack overcloud deploy
命令来安装和配置多路径时,您必须传递用于部署 overcloud 的所有之前角色和环境文件,如--templates
、--roles-file
、--e
用于所有环境文件和--timeout
。无法传递所有以前的角色和环境文件可能会导致您的 overcloud 部署出现问题。有关使用 overcloud 参数的更多信息,请参阅 Director 安装和使用指南中的使用 CLI 工具创建 Overcloud。
2.5.3. 验证多路径配置
此流程描述了如何在新的或现有 overcloud 部署中验证多路径配置。
流程
- 创建虚拟机。
- 将非加密卷附加到虚拟机。
获取包含实例的 Compute 节点的名称:
$ nova show INSTANCE | grep OS-EXT-SRV-ATTR:host
将 INSTANCE 替换为您引导的虚拟机的名称。
检索实例的 virsh 名称:
$ nova show INSTANCE | grep instance_name
将 INSTANCE 替换为您引导的虚拟机的名称。
获取 Compute 节点的 IP 地址:
$ . stackrc $ nova list | grep compute_name
将 compute_name 替换为
nova show INSTANCE
命令的输出中的名称。SSH 到运行虚拟机的 Compute 节点:
$ ssh heat-admin@COMPUTE_NODE_IP
将 COMPUTE_NODE_IP 替换为 Compute 节点的 IP 地址。
登录到运行 virsh 的容器:
$ podman exec -it nova_libvirt /bin/bash
在 Compute 节点实例中输入以下命令,以验证它是否在 cinder 卷主机位置中使用多路径:
virsh domblklist VIRSH_INSTANCE_NAME | grep /dev/dm
将 VIRSH_INSTANCE_NAME 替换为
nova show INSTANCE | grep instance_name
命令的输出。如果实例显示
/dev/dm-
以外的值,则连接是非多路径,您需要使用nova shelve
和nova unshelve
命令刷新连接信息:$ nova shelve <instance> $ nova unshelve <instance>
注意如果您有多种后端,您必须验证所有后端上的实例和卷,因为每个后端返回的连接信息可能有所不同。