2.12. 多路径配置
使用多路径将服务器节点和存储阵列之间的多个 I/O 路径配置为单一设备,以创建冗余并提高性能。
2.12.1. 使用 director 配置多路径
您可以在 Red Hat OpenStack Platform (RHOSP) overcloud 部署中配置多路径,以便提高带宽和网络弹性。
当您在现有部署中配置多路径时,新工作负载会了解多路径。如果您有预先存在的工作负载,则必须 shelve 并取消移除实例,以便在这些实例上启用多路径。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
流程
-
以
stack
用户身份登录 undercloud 主机。 查找
stackrc
凭证文件:$ source ~/stackrc
使用覆盖环境文件或创建新文件,如
multipath_overrides.yaml
。添加和设置以下参数:parameter_defaults: ExtraConfig: cinder::config::cinder_config: backend_defaults/use_multipath_for_image_xfer: value: true
注意默认设置将生成适用于大多数环境的基本多路径配置。但是,检查您的存储厂商是否有建议,因为有些供应商已经优化了特定于其硬件的配置。有关多路径的详情,请参考 配置设备映射器多路径 指南。
可选:如果您有一个用于 overcloud 部署的多路径配置文件,请使用
MultipathdCustomConfigFile
参数指定此文件的位置:您必须将多路径配置文件复制到
/var/lib/mistral
目录中:$ sudo cp <config_file_name> /var/lib/mistral
将
<config_file_name
> 替换为您的文件的名称。将
MultipathdCustomConfigFile
参数设置为多路径配置文件的这个位置:parameter_defaults: MultipathdCustomConfigFile: /var/lib/mistral/<config_file_name>
注意其他 TripleO 多路径参数覆盖本地自定义配置文件中任何对应的值。例如,如果
MultipathdEnableUserFriendlyNames
为False
,则 overcloud 节点上的文件会更新为匹配,即使本地自定义文件中启用了该设置。有关多路径参数的更多信息,请参阅 多路径 heat 模板参数。
在
openstack overcloud deploy
命令中包含环境文件,以及与您的环境相关的任何其他环境文件:$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/multipathd.yaml -e multipath_overrides.yaml \ …
2.12.1.1. 多路径 heat 模板参数
使用它来了解启用多路径的以下参数。
参数 | 描述 | 默认值 |
---|---|---|
|
定义是否启用多路径守护进程。这个参数通过 |
|
| 定义是否为每个路径分配用户友好名称。 |
|
| 定义是否为每个路径自动创建多路径设备。 |
|
| 定义是否跳过在该设备中自动创建分区。 |
|
|
在 overcloud 节点上包括本地的自定义多路径配置文件。默认情况下会安装最小
注意: 其他 TripleO 多路径参数会覆盖您添加的任何本地自定义配置文件中的任何对应值。例如,如果 |
2.12.2. 验证多路径配置
此流程描述了如何在新的或现有 overcloud 部署中验证多路径配置。
先决条件
- 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director。
- 成功部署 overcloud。如需更多信息,请参阅使用 CLI 工具创建基本 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
使用
nova show INSTANCE
命令的输出的名称替换 compute_name。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>
注意如果您有多种后端,则必须在所有后端上验证实例和卷,因为每个后端返回的连接信息可能会有所不同。