第 2 章 将 ML2 机制驱动程序从 OVS 迁移到 OVN


环境评估和准备对于成功迁移至关重要。您的红帽大客户经理或全球专业服务将指导您完成这些步骤。

先决条件

  • 您的预迁移部署是 Red Hat OpenStack Platform (RHOSP) 16.2 或更高版本。
  • 您的 RHOSP 部署是最新的。换句话说,如果您需要升级或更新 OpenStack 版本,请首先执行升级或更新,然后执行 ML2/OVS 到 ML2/OVN 迁移。
  • 每个子网池都至少有一个 IP 地址。

    OVN 机制驱动程序为每个子网创建一个元数据端口。每个元数据端口从 IP 地址池声明一个 IP 地址。

  • 您已与红帽大客户经理或全球专业服务合作规划迁移,并提交主动支持问题单。请参阅 如何提交主动问题单

流程

  1. 创建 ML2/OVN 阶段部署,以获取目标 ML2/OVN 部署的基准配置,并测试目标部署的可行。

    使用与迁移后规划的生产部署相同的基本角色、路由和拓扑设计阶段部署。保存 overcloud-deploy.sh 文件以及部署引用的任何文件,如环境文件。您稍后需要这些文件来配置迁移目标环境。

    注意

    仅使用这些文件来创建阶段部署和迁移。迁移后不要重复使用它们。

  2. 如果您的 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 参数。
  3. 安装 python3-networking-ovn-migration-tool。

    sudo dnf install python3-networking-ovn-migration-tool @container-tools

    @container-tools 参数也会安装容器工具(如果容器工具尚不存在)。

  4. 在 undercloud 上创建目录,并复制 Ansible playbook:

    mkdir ~/ovn_migration
    cd ~/ovn_migration
    cp -rfp /usr/share/ansible/neutron-ovn-migration/playbooks .
  5. 将 ML2/OVN 阶段部署文件复制到迁移主目录中,如 ~/ovn_migration

    阶段迁移部署文件包括 overcloud-deploy.sh 以及部署引用的任何文件,如环境文件。将 overcloud-deploy.sh 的副本重命名为 overcloud-deploy-ovn.sh。仅将此脚本用于迁移。不要将它用于其他目的。

  6. 在以下列表中找到您的迁移场景,并执行适当的步骤在 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
    • 保留任何自定义网络修改与迁移前相同。
    场景 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
  7. 确保所有用户对文件 overcloud-deploy-ovn.sh 具有执行权限。这个脚本需要在迁移过程中执行特权。

    $ chmod a+x ~/overcloud-deploy-ovn.sh
  8. 使用 export 命令设置以下与迁移相关的环境变量。例如:

    $ export PUBLIC_NETWORK_NAME=my-public-network
    • STACKRC_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

  9. 确保您位于 ovn-migration 目录中,并运行命令 ovn_migration.sh generate-inventory 来生成清单文件 hosts_for_migrationansible.cfg 文件。

    $ ovn_migration.sh generate-inventory   | sudo tee -a /var/log/ovn_migration_output.txt
  10. 检查 hosts_for_migration 文件是否准确性。

    1. 确保列表与您的环境匹配。
    2. 确保每个节点上都有 ovn 控制器。
    3. 确保没有列表项(如 [ovn-controllers])。
    4. 在 ovn 迁移目录中运行命令 ansible -i hosts_for_migration -m ping all
  11. 如果您的原始部署使用 VXLAN 或 GRE,则需要调整最大传输单元(MTU)值。继续 调整 MTU 以从 OVS 机制驱动程序迁移到 OVN 机制驱动程序

    如果您的原始部署使用 VLAN 网络,您可以跳过 MTU 调整,然后继续 准备容器镜像以从 OVS 机制驱动程序迁移到 OVN 机制驱动程序

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部