浮动 IP 分布式

Launchpad Bug: https://bugs.launchpad.net/neutron/+bug/1978039

Neutron 为每个浮动 IP 添加分布式属性。用户可以根据实际环境和使用需求设置此属性。

问题描述

Neutron 支持将浮动 IP 设置为分布式。外部流量可以直接到达计算节点,而无需经过网络节点,从而提高网络性能。这对于需要高性能网络的需求非常有用。

但是,我们可以通过设置配置选项(ovn 后端)或设置路由器“distributed”属性(ovs dvr 模式)来决定浮动 IP 是分布式还是集中式的。这是全局性的。配置后,所有浮动 IP 都是集中式的或分布式的。

实际使用可能比较复杂

  • 并非所有具有浮动 IP 的虚拟机都需要高性能网络,可能只是为了对外提供服务。

  • 由于设备条件限制,某些计算节点未配备外部网卡。如果启用分布式模式,则此计算节点的虚拟机将无法分配浮动 IP。

提议的变更

添加新的 API 扩展,以扩展 Neutron 中的 floatingip 资源,并添加 distributed 属性。如果未设置此属性,则浮动 IP 将使用路由器的 distributed 属性 [1]

服务器端变更

将添加一个新的 Neutron API 扩展,为 floatingip 资源添加新的属性。这个新属性将被称为 distributed

RESOURCE_ATTRIBUTE_MAP = {
    l3.FLOATINGIPS: {
        "distributed": {
            'allow_post': True,
            'allow_put': True,
            'convert_to': converters.convert_to_boolean_if_not_none,
            'default': constants.ATTR_NOT_SPECIFIED,
            'is_visible': True,
            'is_filter': True
        }
    }
}

数据库影响

floatingips 表中扩展一个布尔型列 distributed

REST API 影响

新的 API 扩展:floatingip-distributed 引入新的浮动 IP 属性:distributed

客户端影响

OSC 和 openstacksdk 中的相关更改,以添加对新浮动 IP 属性的支持。要为浮动 IP 启用它,应该如下所示

openstack floating ip create --distributed

要禁用它

openstack floating ip create --centralized

并更新它

openstack floating ip update [--distributed | --centralized ]

测试

  • 单元测试。

  • 功能测试。

  • neutron-tempest-plugin 中的 Tempest 测试。

负责人

参考资料