第 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” 中描述的潜在调整。

流程

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

    使用与计划迁移后部署相同的基本角色、路由和拓扑设计阶段部署。将完整的 openstack overcloud deploy 命令和所有部署参数保存到名为 overcloud-deploy.sh 的文件中。另外,也保存由 openstack overcloud deploy 命令引用的任何文件,如环境文件。此流程稍后需要这些文件来配置迁移的目标 ML2/OVN 环境。

    注意

    仅使用这些文件来创建阶段部署和迁移。迁移后请勿重新使用它们。

  2. 安装 openstack-neutron-ovn-migration-tool

    sudo dnf install openstack-neutron-ovn-migration-tool
    Copy to Clipboard Toggle word wrap
  3. 复制在第 1 步中创建的 overcloud-deploy.sh 脚本,并将副本重命名为 overcloud-migrate-ovn.sh。确认 overcloud-migrate-ovn.sh 中 overcloud deploy 命令的所有路径仍然正确。在后续步骤中,您可以自定义 overcloud-migrate-ovn.sh 脚本中的一些参数。
  4. 在以下列表中找到迁移场景,并执行适当的步骤以在 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.yaml heat 模板文件。您的部署可能会使用多个 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
      Copy to Clipboard Toggle word wrap
    场景 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
    • 保留任何自定义网络修改与迁移前相同。
    场景 3:到一个 DVR 的集中式路由,以及通过 br-ex连接到外部网络的 Compute 节点
    • 确保 Compute 节点通过 br-ex 网桥连接到外部网络。例如,在 compute-dvr.yaml 等环境文件中设置以下参数。然后使用 -e 将环境文件添加到脚本 overcloud-migrate-ovn.sh 中的 openstack overcloud deploy 命令中:

      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
      Copy to Clipboard Toggle word wrap
  5. 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
    Copy to Clipboard Toggle word wrap
  6. 如果路由器显示为任何环境文件或 模板中的 NeutronService PluginExtensions 或 NeutronPluginExtensions 的值,请将值 router 替换为 ovn- router 。例如,在 tripleo-heat-templates/environments/services/neutron-ovn-dvr-ha.yaml 中:

    parameter_defaults:
       NeutronServicePlugins: "ovn-router,trunk,qos,placement"
    Copy to Clipboard Toggle word wrap
  7. 确保所有用户对 overcloud-migrate-ovn.sh 文件具有执行权限。该脚本需要在迁移过程中执行特权。

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

    $ export OVERCLOUDRC_FILE=~/myovercloudrc
    Copy to Clipboard Toggle word wrap
    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

  9. 确保您位于 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
    Copy to Clipboard Toggle word wrap
  10. 检查 hosts_for_migration 文件是否准确:

    • 确保列表与您的环境匹配。
    • 确保每个节点上都有 ovn 控制器。
    • 确保没有列表标题(如 [ovn-controllers])没有列表项。
    • ovn-migration' 目录中,运行命令 ansible -i hosts_for_migration -m ping all
  11. (可选)在迁移过程中意外发生的情况下,备份部署来准备潜在的迁移恢复。

    1. 如果您计划使用 '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

    2. 备份 control plane。使用您选择的备份机制备份控制器节点。支持的选择是默认的 ovn-migration.sh 备份 命令,它使用 ReaR 备份工具。

      $ ovn_migration.sh backup
      Copy to Clipboard Toggle word wrap
    3. 备份用于部署 overcloud 的模板和环境文件。ovn-migration.sh backup 命令不会备份 overcloud。如果您需要在部分或迁移失败后恢复控制器节点,则需要此备份来恢复 OVS overcloud。
    4. 复制用于部署原始 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 中写入该文件,其中恢复用户可能没有适当的权限。

    5. 创建包含以下内容的文件 /home/stack/ovs-extra.yml

      parameter_defaults:
        ForceNeutronDriverUpdate: true
      Copy to Clipboard Toggle word wrap
    6. 确保 overcloud-revert-ovs.sh 中最终的环境文件参数如下:

      -e /home/stack/ovs-extra.yml
      Copy to Clipboard Toggle word wrap
    7. 安全地存储 overcloud-revert-ovs.sh。如果您恢复失败的迁移,则需要它。
  12. 继续 第 2.2 节 “准备将 ML2 机制驱动程序从 OVS 迁移到 OVN 的容器镜像”
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat