第 2 章 将 ML2 机制驱动程序从 OVS 迁移到 OVN
2.1. 准备将 ML2 机制驱动程序从 OVS 迁移到 OVN 的环境 复制链接链接已复制到粘贴板!
环境评估和准备对于成功迁移至关重要。您的红帽大客户经理或全球专业服务将指导您完成这些步骤。
先决条件
- 您的预迁移部署是 Red Hat OpenStack Platform (RHOSP) 16.2 或更高版本。
- 您的 RHOSP 部署是最新的。换句话说,如果您需要升级或更新 OpenStack 版本,请首先执行升级或更新,然后执行 ML2/OVS 到 ML2/OVN 迁移。
每个子网池都至少有一个 IP 地址。
OVN 机制驱动程序为每个子网创建一个元数据端口。每个元数据端口从 IP 地址池声明一个 IP 地址。
- 您已与红帽大客户经理或全球专业服务合作规划迁移,并提交主动支持问题单。请参阅 如何提交主动问题单。
流程
创建 ML2/OVN 阶段部署,以获取目标 ML2/OVN 部署的基准配置,并测试目标部署的可行。
使用与迁移后规划的生产部署相同的基本角色、路由和拓扑设计阶段部署。保存
overcloud-deploy.sh文件以及部署引用的任何文件,如环境文件。您稍后需要这些文件来配置迁移目标环境。注意仅使用这些文件来创建阶段部署和迁移。迁移后不要重复使用它们。
如果您的 ML2/OVS 部署使用 VXLAN 或 GRE 项目网络,请在 setup-mtu-t1 步骤后调度最多 24 小时的等待时间。
- 此等待周期允许虚拟机实例续订 DHCP 租期并接收新的 MTU 值。在此期间,您可能需要在一些实例上手动设置 MTU,并重新引导一些实例。
- 24 小时是默认配置为 86400 秒的时间。实际时间取决于 /var/lib/config-data/puppet-generated/neutron/etc/neutron/dhcp_agent.ini dhcp_renewal_time 和 /var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf dhcp_lease_duration 参数。
安装 python3-networking-ovn-migration-tool。
sudo dnf install python3-networking-ovn-migration-tool @container-tools@container-tools参数也会安装容器工具(如果容器工具尚不存在)。在 undercloud 上创建目录,并复制 Ansible playbook:
mkdir ~/ovn_migration cd ~/ovn_migration cp -rfp /usr/share/ansible/neutron-ovn-migration/playbooks .将 ML2/OVN 阶段部署文件复制到迁移主目录中,如
~/ovn_migration。阶段迁移部署文件包括
overcloud-deploy.sh以及部署引用的任何文件,如环境文件。将overcloud-deploy.sh的副本重命名为overcloud-deploy-ovn.sh。仅将此脚本用于迁移。不要将它用于其他目的。在以下列表中找到您的迁移场景,并执行适当的步骤在
overcloud-deploy-ovn.sh中自定义openstack deploy命令。- 场景 1: DVR 到 DVR,计算节点与外部网络的连接
将以下环境文件添加到 overcloud-deploy-ovn.sh 中的
openstack deploy命令中。按照显示的顺序添加它们。此命令使用默认neutron-ovn-dvr-ha.yaml文件。如果您使用其他文件,请替换命令中的文件名。-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-dvr-ha.yaml \ -e $HOME/ovn-extras.yaml
- 场景 2:集中路由到集中式路由(无 DVR)
-
如果您的部署使用 SR-IOV,请将服务定义
OS::TripleO::Services::OVNMetadataAgent添加到文件roles_data.yaml中的 Controller 角色。 保留预迁移自定义网桥映射。
在网络器或组合的 networker/controller 节点上运行这个命令来获取当前的网桥映射:
sudo podman exec -it neutron_ovs_agent crudini --get /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings输出示例
datacentre:br-ex,tenant:br-isolated-
在 undercloud 上,为网桥映射创建一个环境文件:
/home/stack/neutron_bridge_mappings.yaml。 在环境文件中设置默认值。例如:
parameter_defaults: ComputeParameters: NeutronBridgeMappings: "datacentre:br-ex,tenant:br-isolated"
将以下环境文件添加到 overcloud-deploy-ovn.sh 中的
openstack deploy命令中。按照显示的顺序添加它们。如果您的环境没有使用 SR-IOV,请省略 neutron-ovn-sriov.yaml 文件。运行openstack deploy命令前,文件 ovn-extras.yaml 尚不存在,但由脚本 ovn_migration.sh 创建。-e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-ha.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovn-sriov.yaml \ -e /home/stack/ovn-extras.yaml \ -e /home/stack/neutron_bridge_mappings.yaml- 保留任何自定义网络修改与迁移前相同。
-
如果您的部署使用 SR-IOV,请将服务定义
- 场景 3:集中路由到 DVR,使用 Geneve 类型驱动程序,以及通过
br-ex连接到外部网络的计算节点 - 警告
如果您的 ML2/OVS 部署使用集中式路由,并且 VLAN 项目(租户)网络,请不要使用 DVR 迁移到 ML2/OVN。您可以使用集中式路由迁移到 ML2/OVN。要跟踪这个限制的进度,请参阅 https://bugzilla.redhat.com/show_bug.cgi?id=1766930。
确保计算节点通过
br-ex网桥连接到外部网络。例如,在 compute-dvr.yaml 等环境文件中,设置以下内容:type: ovs_bridge # Defaults to br-ex, anything else requires specific # bridge mapping entries for it to be used. name: bridge_name use_dhcp: false members: - type: interface name: nic3 # force the MAC address of the bridge to this interface primary: true
确保所有用户对文件
overcloud-deploy-ovn.sh具有执行权限。这个脚本需要在迁移过程中执行特权。$ chmod a+x ~/overcloud-deploy-ovn.sh使用
export命令设置以下与迁移相关的环境变量。例如:$ export PUBLIC_NETWORK_NAME=my-public-networkSTACKRC_FILE - undercloud 中的 stackrc 文件。
默认: ~/stackrc
OVERCLOUDRC_FILE - undercloud 中的 overcloudrc 文件。
默认: ~/overcloudrc
OVERCLOUD_OVN_DEPLOY_SCRIPT - 部署脚本。
默认: ~/overcloud-deploy-ovn.sh
PUBLIC_NETWORK_NAME - 公共网络的名称。
默认: public。
IMAGE_NAME - 用于引导测试服务器的 glance 镜像的名称或 ID。
默认: cirros。
镜像在预验证 / post-validation 过程中自动下载。
VALIDATE_MIGRATION - 创建迁移资源以验证迁移。在开始迁移前,迁移脚本会引导服务器,并验证该服务器可在迁移后访问。
默认:True。
警告迁移验证至少需要两个可用的浮动 IP 地址、两个网络、两个子网、两个实例,以及两个路由器作为 admin。
另外,由 PUBLIC_NETWORK_NAME 指定的网络必须具有可用的浮动 IP 地址,您必须从 undercloud ping它们。
如果您的环境没有满足这些要求,请将 VALIDATE_MIGRATION 设置为 False。
SERVER_USER_NAME - 用于登录到迁移实例的用户名。
默认: cirros。
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检查
hosts_for_migration文件是否准确性。- 确保列表与您的环境匹配。
- 确保每个节点上都有 ovn 控制器。
- 确保没有列表项(如 [ovn-controllers])。
- 在 ovn 迁移目录中运行命令 ansible -i hosts_for_migration -m ping all
如果您的原始部署使用 VXLAN 或 GRE,则需要调整最大传输单元(MTU)值。继续 调整 MTU 以从 OVS 机制驱动程序迁移到 OVN 机制驱动程序。
如果您的原始部署使用 VLAN 网络,您可以跳过 MTU 调整,然后继续 准备容器镜像以从 OVS 机制驱动程序迁移到 OVN 机制驱动程序。