第 2 章 将 ML2 机制驱动程序从 OVS 迁移到 OVN
2.1. 准备将 ML2 机制驱动程序从 OVS 迁移到 OVN 的环境
环境评估和准备是成功迁移的关键。您的红帽大客户经理或全球专业服务将指导您完成这些步骤。
先决条件
- 您的部署是最新的 RHOSP 16.2 版本。换句话说,如果您需要升级或更新 OpenStack 版本,请首先执行升级或更新,然后执行 ML2/OVS 到 ML2/OVN 迁移。
每个子网池至少有一个 IP 地址。
OVN 机制驱动程序为每个子网创建一个元数据端口。每个元数据端口从 IP 地址池声明 IP 地址。
- 您已与红帽大客户经理或全球专业服务合作以规划迁移,并提交主动的支持问题单。请参阅 如何提交主动问题单。
流程
创建 ML2/OVN 阶段部署,以获取目标 ML2/OVN 部署的基础配置,并测试目标部署的可行性。
使用与迁移后生产部署相同的基本角色、路由和拓扑设计阶段部署。保存
overcloud-deploy.sh
文件以及部署引用的任何文件,如环境文件。稍后需要这些文件来配置迁移目标环境。注意这些文件仅用于创建 stage 部署并在迁移中。迁移后不要重新使用它们。
如果您的 ML2/OVS 部署使用 VXLAN 或 GRE 项目网络,请在 setup-mtu-t1 步骤后调度等待最多 24 小时。
- 此等待周期允许虚拟机实例续订其 DHCP 租期并接收新的 MTU 值。在此期间,您可能需要在一些实例上手动设置 MTU,并重新启动一些实例。
- 24 小时是基于 86400 秒默认配置的时间。实际时间取决于 /var/lib/config-data/puppet-generated/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/networking-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 文件。文件 ovn-extras.yaml 尚不存在,但在运行openstack deploy
命令前由脚本 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:利用 Geneve 类型驱动程序到 DVR 的集中式路由,以及通过
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 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.
镜像会在 pre-validation / 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
生成清单文件 host_for_migration
和ansible.cfg
文件。$ ovn_migration.sh generate-inventory | sudo tee -a /var/log/ovn_migration_output.txt
检查
host_for_migration
文件的准确性。- 确保列表与您的环境匹配。
- 确保每个节点上存在 ovn 控制器。
- 确保没有列表标题(如 [ovn-controllers])下没有列表项。
- 从 ovn 迁移目录中,运行命令 ansible -i hosts_for_migration -m ping all
如果您的原始部署使用 VXLAN 或 GRE,则需要调整最大传输单元(MTU)值。继续 调整 MTU,以便从 OVS 机制驱动程序迁移到 OVN 机制驱动程序。
如果您的原始部署使用 VLAN 网络,您可以跳过 MTU 调整,并继续 准备从 OVS 机制驱动程序迁移到 OVN 机制驱动程序的容器镜像。