第 2 章 将 ML2 机制驱动程序从 OVS 迁移到 OVN
2.1. 准备迁移到 OVN 机制驱动程序的环境 复制链接链接已复制到粘贴板!
环境评估和准备对于成功迁移至关重要。您的红帽大客户经理或全球专业服务将指导您完成这些步骤。
先决条件
- 您的部署是最新的 RHOSP 17.1 版本。换句话说,如果您需要升级或更新 OpenStack 版本,请首先执行升级或更新,然后执行 ML2/OVS 到 ML2/OVN 迁移。
每个子网池至少有一个 IP 地址。
OVN 机制驱动程序为每个子网创建一个元数据端口。每个元数据端口从 IP 地址池声明 IP 地址。
- 您已与红帽大客户经理或全球专业服务合作计划迁移,并提交了一个主动的支持问题单。请参阅如何提交主动问题单。
- 如果您的 ML2/OVS 部署使用 VXLAN 项目网络,请查看 第 2.3 节 “降低从 VXLAN OVS 部署迁移的 MTU” 中描述的潜在调整。
流程
创建一个 ML2/OVN 阶段部署,以获取目标 ML2/OVN 部署的基准配置,并测试目标部署的可行性。
使用与计划迁移后部署相同的基本角色、路由和拓扑设计阶段部署。将完整的
openstack overcloud deploy命令和所有部署参数保存到名为overcloud-deploy.sh的文件中。另外,也保存由openstack overcloud deploy命令引用的任何文件,如环境文件。此流程稍后需要这些文件来配置迁移的目标 ML2/OVN 环境。注意仅使用这些文件来创建阶段部署和迁移。迁移后请勿重新使用它们。
安装
openstack-neutron-ovn-migration-tool。sudo dnf install openstack-neutron-ovn-migration-tool
sudo dnf install openstack-neutron-ovn-migration-toolCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 复制在第 1 步中创建的 overcloud-deploy.sh 脚本,并将副本重命名为 overcloud-migrate-ovn.sh。确认 overcloud-migrate-ovn.sh 中 overcloud deploy 命令的所有路径仍然正确。在后续步骤中,您可以自定义 overcloud-migrate-ovn.sh 脚本中的一些参数。
在以下列表中找到迁移场景,并执行适当的步骤以在
overcloud-migrate-ovn.sh中自定义openstack deploy命令。在部署命令中,注意添加环境文件的 -e 参数的顺序。带有通用默认值(如 neutron-ovn-dvr-ha.yaml)的环境文件前必须加上 -e 参数来指定带有自定义网络环境设置的文件,如网桥映射。
- 场景 1: DVR 到 DVR,计算节点与外部网络连接
在
overcloud-migrate-ovn.sh中,添加自定义 heat 模板文件参数到openstack overcloud deploy命令。在核心模板文件参数后添加它们。以下命令示例使用默认的
neutron-ovn-dvr-ha.yamlheat 模板文件。您的部署可能会使用多个 heat 文件来定义 OVN 环境。使用单独的-e参数添加每个。openstack overcloud deploy \ --templates /usr/share/openstack-tripleo-heat-templates \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services/ \ neutron-ovn-dvr-ha.yaml
openstack overcloud deploy \ --templates /usr/share/openstack-tripleo-heat-templates \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/services/ \ neutron-ovn-dvr-ha.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 场景 2:集中路由到集中式路由(没有 DVR)
-
如果您的部署使用 SR-IOV 和其他 NFV 功能,在
overcloud-migrate-ovn.sh中,请使用-e参数将 SR-IOV 环境参数添加到openstack overcloud deploy命令中。在核心模板环境文件参数和其他自定义环境文件参数后,添加 SR-IOV 环境文件文件。有关 SR-IOV 环境文件的示例,请参阅/usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml。 - 保留任何自定义网络修改与迁移前相同。
-
如果您的部署使用 SR-IOV 和其他 NFV 功能,在
- 场景 3:到一个 DVR 的集中式路由,以及通过
br-ex连接到外部网络的 Compute 节点 确保 Compute 节点通过
br-ex网桥连接到外部网络。例如,在compute-dvr.yaml等环境文件中设置以下参数。然后使用-e将环境文件添加到脚本overcloud-migrate-ovn.sh中的openstack overcloud deploy命令中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
overcloud-migrate-ovn.sh中的overcloud deploy命令末尾添加以下参数:-e /usr/share/openstack-tripleo-heat-templates/environments/disable-container-manage-clean-orphans.yaml \ -e $HOME/ovn-extras.yaml
-e /usr/share/openstack-tripleo-heat-templates/environments/disable-container-manage-clean-orphans.yaml \ -e $HOME/ovn-extras.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果路由器显示为任何环境文件或
模板中的 NeutronServicePluginExtensions 或NeutronPluginExtensions的值,请将值router替换为ovn-。例如,在routertripleo-heat-templates/environments/services/neutron-ovn-dvr-ha.yaml中:parameter_defaults: NeutronServicePlugins: "ovn-router,trunk,qos,placement"
parameter_defaults: NeutronServicePlugins: "ovn-router,trunk,qos,placement"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确保所有用户对
overcloud-migrate-ovn.sh文件具有执行权限。该脚本需要在迁移过程中执行特权。chmod a+x ~/overcloud-migrate-ovn.sh
$ chmod a+x ~/overcloud-migrate-ovn.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
export命令设置以下与迁移相关的环境变量。例如:export OVERCLOUDRC_FILE=~/myovercloudrc
$ export OVERCLOUDRC_FILE=~/myovercloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow - STACKRC_FILE
undercloud 中的
stackrc文件。默认:~/stackrc
- OVERCLOUDRC_FILE
undercloud 中的
overcloudrc文件。Default: ~/overcloudrc
- OVERCLOUD_OVN_DEPLOY_SCRIPT
部署脚本。
Default: ~/overcloud-migrate-ovn.sh
- DHCP_RENEWAL_TIME
DHCP 续订时间(以秒为单位)在 DHCP 代理配置文件中配置。
默认:30
确保您位于
ovn-migration目录中,并运行命令ovn_migration.sh generate-inventory来生成hosts_for_migration清单文件和ansible.cfg文件:ovn_migration.sh generate-inventory | sudo tee -a /var/log/ovn_migration_output.txt
$ ovn_migration.sh generate-inventory | sudo tee -a /var/log/ovn_migration_output.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
hosts_for_migration文件是否准确:- 确保列表与您的环境匹配。
- 确保每个节点上都有 ovn 控制器。
- 确保没有列表标题(如 [ovn-controllers])没有列表项。
-
在
ovn-migration'目录中,运行命令 ansible -i hosts_for_migration -m ping all
(可选)在迁移过程中意外发生的情况下,备份部署来准备潜在的迁移恢复。
如果您计划使用 'ovn-migration.sh backup' 命令备份控制器节点,请使用
export命令设置以下环境变量:- BACKUP_MIGRATION_IP
存储备份的服务器的 IP 地址。
默认:192.168.4.1
- BACKUP_MIGRATION_CTL_PLANE_CIDRS
CIDR 标记中以逗号分隔的 control plane 子网字符串,用于备份的所有节点。
默认:192.168.24.0/24
您可以在 /usr/bin/ovn_migraton.sh 文件的开头看到所有相关环境变量的列表。
- CONTROLLER_GROUP
Ansible 用于备份控制器的主机组名称。
默认:
Controller如果您的控制器组具有除
Controller以外的名称,请将该名称导出为CONTROLLER_GROUP的值。例如,在 SR-IOV 环境中,控制器组名称可能是ControllerSriov。- OVERCLOUD_OVS_REVERT_SCRIPT
如果您创建了可选备份,用于选择性地从失败的 OVN 迁移中恢复。
默认:~/overcloud-revert-ovs.sh
备份 control plane。使用您选择的备份机制备份控制器节点。支持的选择是默认的
ovn-migration.sh 备份命令,它使用 ReaR 备份工具。ovn_migration.sh backup
$ ovn_migration.sh backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
备份用于部署 overcloud 的模板和环境文件。
ovn-migration.sh backup命令不会备份 overcloud。如果您需要在部分或迁移失败后恢复控制器节点,则需要此备份来恢复 OVS overcloud。 复制用于部署原始 RHOSP 17.1 ML2/OVS 部署的脚本。例如,原始脚本可以命名为
overcloud_deploy.sh。将复制命名为overcloud-revert-ovs.sh。警告如果
overcloud-revert-ovs.sh创建一个文件,请确保指定该文件的绝对路径。例如,如果您使用 --log-file 参数,请使用绝对路径指定文件。迁移恢复 playbook 使用变量 $ANSIBLE_DIR (默认为 /usr/share/ansible/neutron-ovn-migration)。如果在相对路径上创建文件,Ansible 会尝试在 $ANSIBLE_DIR 中写入该文件,其中恢复用户可能没有适当的权限。创建包含以下内容的文件
/home/stack/ovs-extra.yml:parameter_defaults: ForceNeutronDriverUpdate: true
parameter_defaults: ForceNeutronDriverUpdate: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保
overcloud-revert-ovs.sh中最终的环境文件参数如下:-e /home/stack/ovs-extra.yml
-e /home/stack/ovs-extra.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
安全地存储
overcloud-revert-ovs.sh。如果您恢复失败的迁移,则需要它。
- 继续 第 2.2 节 “准备将 ML2 机制驱动程序从 OVS 迁移到 OVN 的容器镜像”。