在 TripleO 中启用 Neutron DVR¶
https://blueprints.launchpad.net/tripleo/+spec/support-neutron-dvr
Neutron 分布式虚拟路由应该能够在 TripleO 中配置。
问题描述¶
为了能够在 Neutron 中启用分布式虚拟路由,当前 TripleO 超云部署需要进行一些更改。超云计算节点使用 neutron-openvswitch-agent 镜像元素构建,该元素在计算节点上提供 neutron-openvswitch-agent。为了支持分布式虚拟路由,计算节点还必须安装 neutron-metadata-agent 和 neutron-l3-agent。 neutron-l3-agent 和 neutron-dhcp-agent 的安装也需要解耦。
此外,为了启用分布式虚拟路由,neutron.conf、l3_agent.ini 和 ml2_conf.ini 都需要具有额外的设置。
提议的变更¶
概述¶
在 tripleo-image-elements 中,将当前的 neutron-network-node 元素移动到一个名为 neutron-router 的元素,该元素将负责执行安装和配置工作,以安装 neutron-l3-agent 和 neutron-metadata-agent。此 neutron-router 元素将在其 element-deps 中列出 neutron-openvswitch-agent。 neutron-network -node 元素然后将成为一个简单的“包装器”,其唯一目的是列出网络节点所需的依赖项(neutron、neutron-dhcp-agent、neutron-router、os-refresh-config)。
此外,在 tripleo-image-elements/neutron 元素中,将修改 neutron.conf、l3_agent.ini 和 plugins/ml2/ml2_conf.ini 以添加每个文件中支持分布式虚拟路由所需的配置变量(所需的配置变量列在 https://wiki.openstack.org/wiki/Neutron/DVR/HowTo#Configuration 中)。
在 tripleo-heat-templates 中,将修改 nova-compute-config.yaml nova-compute-instance.yaml 和 overcloud-source.yaml 文件,以提供新的分布式虚拟路由变量的正确设置。 分布式虚拟路由的启用将由一个“NeutronDVR”变量确定,该变量默认情况下为“False”(未启用分布式虚拟路由),以保持向后兼容性,但如果需要分布式虚拟路由,则可以设置为“True”。
最后,tripleo-incubator 脚本 devtest_overcloud.sh 将被修改为:a) 使用 neutron-router 而不是 neutron-openvswitch-agent 构建 overcloud-compute 磁盘镜像,以及 b) 配置要传递到 overcloud heat 堆栈创建中的适当参数值,以便启用或禁用分布式路由。
替代方案¶
我们可以选择不对 neutron-router 镜像元素进行任何更改,并且它可以包含在计算节点磁盘镜像构建的元素参数列表中。 这会产生一个不希望的效果,即还在每个计算节点上包含/配置和启动 neutron-dhcp-agent。 或者,可以保持 neutron-network-node 元素不变,并创建一个 neutron-router 元素,该元素是 neutron-network-node 元素的大部分内容的副本,但没有对 neutron-dhcp-agent 元素的依赖。 这种方法会引入大量的代码重复。
安全影响¶
虽然 TripleO 安装不使用 FWaaS,但启用 DVR 目前已知会破坏 FWaaS。 请参阅 https://blueprints.launchpad.net/neutron/+spec/neutron-dvr-fwaas
其他最终用户影响¶
用户将能够在安装期间设置环境变量,以确定是否启用分布式虚拟路由。
性能影响¶
未发现
其他部署者影响¶
将添加在安装时启用或禁用分布式虚拟路由的选项。 默认情况下,分布式虚拟路由将被禁用。
开发人员影响¶
未发现
实现¶
负责人¶
- 主要负责人
Erik Colnick (erikcolnick 在 Launchpad 上)
- 其他贡献者
无
工作项¶
在 tripleo-image-elements 中创建
neutron-router元素,并将相关内容从neutron-network-node元素移动到该元素。 从neutron-router元素的 element-deps 中删除neutron-dhcp-agent依赖项。将
neutron-router元素作为依赖项添加到neutron-network-nodeelement-deps文件中。element-deps文件将成为neutron-network-node元素的唯一内容。将 https://wiki.openstack.org/wiki/Neutron/DVR/HowTo#Configuration 中指示的配置值添加到
neutron.conf、l3_agent.ini和ml2_conf.ini文件中,这些文件位于neutron镜像元素中。将必要的引用变量添加到
nova-compute-config.yaml和nova-compute-instance.yamltripleo-heat-templates 文件中,以便能够设置上述文件中的新变量。 在overcloud-source.yaml中添加定义和默认值。修改 tripleo-incubator
devtest_overcloud.sh脚本,以设置适当的环境变量,这些变量将驱动超云上 neutron 的配置,以启用分布式虚拟路由器或禁用分布式虚拟路由器(默认情况下禁用)。
依赖项¶
无
测试¶
现有的 TripleO CI 将有助于确保在实施过程中,当前功能集不受影响,并且默认行为(禁用分布式虚拟路由器)得以保持。
应添加额外的 CI 测试,以测试使用分布式虚拟路由的安装,因为此实施完成。
文档影响¶
需要对新的配置选项进行文档记录。