跳转到: 导航, 搜索

Neutron/LBaaS/Deprecation

< Neutron‎ | LBaaS

OpenStack neutron-lbaas 弃用常见问题解答

我们为什么要弃用 neutron-lbaas?

我们一直在努力弃用 neutron-lbaas 的原因有很多,其中一些是

  • OpenStack 负载均衡不再需要深入访问 neutron 代码库和数据库。所有必需的网络功能现在都可通过稳定的 API 提供。
  • neutron 的规模变得很大,导致项目管理扩展问题。作为 neutron 体育场演进 的一部分,neutron-lbaas 被确定为应该从 neutron 中分离出来并成为顶级 OpenStack 项目
  • 在 Newton 发布周期期间,负载均衡从 neutron 中分离 获得批准。
  • 此更改将负载均衡发布版本控制与 OpenStack 部署的其余部分分离。由于 Octavia 在与其他 OpenStack 服务交互时使用稳定的 API,因此您可以运行与 OpenStack 云部署不同的 Octavia 版本。一位运营商正在运行 Queens Octavia,对应 Liberty 发布的云(我们强烈建议您在使用不匹配的发布版本时进行广泛的测试)。
  • 我们通过删除支持扩展的 neutron API 代码层来提高负载均衡 API 的性能。
  • 在 neutron 下添加新的 API 功能需要在最多四个不同的存储库中进行补丁。使用新的 Octavia 项目,我们将此减少到两个存储库。
  • 我们受到 neutron API 扩展框架的一些 API 功能限制。
  • neutron-lbaas API 代码在对象锁定逻辑中存在一些根本缺陷,导致在 API 调用速率非常高时状态不一致。修复这些问题基本上需要完全重写 API 代码,而 Octavia 已经提供了该代码。
  • 作为一个独立的项目,我们可以更快地发展。例如,Octavia 在 neutron 之前支持了 python 3.5代码中的策略 社区目标。
  • 人们会感到困惑,因为它在名称中包含“neutron”。

neutron-lbaas 弃用意味着什么?

neutron-lbaas 和 neutron-lbaas-dashboard 将不再接受新的功能增强。

这是一个指标,表明部署和驱动程序开发人员需要开始计划迁移到 Octavia。

这两个项目将在弃用周期内继续获得支持并接收错误修复。

在弃用周期结束之前,代码和项目将不会被停用。

有关 OpenStack 弃用过程的更多信息,请参阅 遵循标准弃用 文档和 TC 决议 上游支持的定义

neutron-lbaas 何时被标记为已弃用?

neutron-lbaas 和 neutron-lbaas-dashboard 在 Queens OpenStack 发布周期中被标记为已弃用。neutron 客户端在 Ocata OpenStack 发布周期中被标记为 已弃用

neutron-lbaas 弃用周期何时结束?

至少将是两个发布周期,这意味着项目可以退出的第一个发布版本将是“T” OpenStack 发布周期。

我们计划在 2019 年 9 月或“U” OpenStack 发布周期(以先到者为准)停用 neutron-lbaas 和 neutron-lbaas-dashboard。这意味着代码将被删除,并且不会作为“U” OpenStack 发布的一部分发布。2019 年 9 月的日期落在 Train 发布周期中,这意味着 neutron-lbaas 不会作为 Train 发布的一部分发布。neutron-lbaas 将在 Train 发布周期中停用。

停止使用 neutron-lbaas 意味着什么?

基础设施手册描述了 停用项目 的过程。

替代项目有哪些?

Neutron-lbaas 与 LBaaS v2 API 与 Octavia 与 Octavia v2 API

neutron-lbaas

Neutron-lbaas 是 neutron 扩展,它扩展了 neutron API 以提供负载均衡功能。它实现了 LBaaS v2 API。Neutron-lbaas 在 neutron API 进程内运行,必须与 neutron API 一起安装。

LBaaS v2 API

LBaaS v2 API 是负载均衡即服务 (LBaaS) API 的第二个版本。LBaaS v1 在 Mitaka OpenStack 发布周期结束时已达到使用寿命 (EoL) 并已停用。

neutron-lbaas 和 octavia 都实现了 LBaaS v2 API,但是 octavia 是 LBaaS v2 API 的超集,这意味着它包含其他功能。

Octavia

Octavia 是一个官方的 OpenStack 服务项目,为 OpenStack 提供负载均衡功能。它包含一个独立的 API 端点,在 Keystone 中作为服务类型“load-balancer”进行宣传。Octavia 包含一个参考负载均衡驱动程序 octavia,它通过当前实现为服务 VM 的“amphora”提供负载均衡。Octavia 实现了 LBaaS v2 API,就像 neutron-lbaas 一样,但也提供了其他功能。请参阅 Octavia v2 API 参考

Octavia v2 API

Octavia v2 API 是 LBaaS v2 API 的完全向后兼容的超集。它包含 LBaaS v2 API 的所有功能,以及其他功能,例如:侦听器统计信息、批量成员更新、负载均衡器故障转移、所有对象的状态字段、级联删除等等。

请参阅 Octavia v2 API 参考 以获取有关 Octavia v2 API 的更多信息。

如何迁移到 Octavia?

如果您的 neutron-lbaas 负载均衡器正在使用 Octavia 驱动程序,您只需要将 Octavia 升级到 OpenStack 的 Pike 发布版本或更高版本并启用 v2 API。您的负载均衡器详细信息已经位于 Octavia 数据库中,并使用 Octavia 驱动程序基础设施。这意味着您的应用程序可以简单地将用于负载均衡的端点从 neutron API 端点更新为 Octavia API 端点。唯一的注意事项是,如果 neutron-lbaas 创建了 VIP neutron 端口,Octavia 在通过 Octavia API 删除负载均衡器时不会删除它。将提供一个端口迁移工具,以将 neutron 端口的所有权从 neutron-lbaas 转移到 Octavia。

将开发迁移指南并在 管理文档 中提供。

lbaasv2-proxy neutron 服务插件可用,允许用户在迁移期间通过 neutron API 继续访问负载均衡。请参阅标题为“有哪些迁移工具可用?”的部分,了解更多信息。

有哪些迁移工具可用?

lbaasv2-proxy neutron 服务插件可用,允许用户在迁移期间通过 neutron API 继续访问负载均衡。此代理会将通过 neutron API 收到的所有负载均衡请求转发到 Octavia API。这应该用作临时迁移工具,因为它包含在 neutron-lbaas 代码库中并已弃用。您可以通过编辑 neutron.conf 文件,[DEFAULT] 部分并将“service_plugins”设置从“lbaasv2”更改为“lbaasv2-proxy”来启用它。

Octavia 的数据库模式与 neutron 数据库中的 neutron-lbaas 模式非常相似。将提供一个数据库迁移工具,以将现有的负载均衡器从 neutron-lbaas 数据库迁移到 Octavia 数据库。

此工具现在可用:https://git.openstack.org/cgit/openstack/neutron-lbaas/tree/tools/nlbaas2octavia 此工具支持实时迁移正在运行的负载均衡器(如果提供程序驱动程序支持它,例如 Octavia amphora 驱动程序)。

如何安装 Octavia?

您可能已经将 Octavia 作为 neutron-lbaas 安装的一部分安装了。Octavia 一直是自 OpenStack Liiberty 发布以来参考驱动程序。如果是这样,您只需要升级到 OpenStack 的 Pike 发布版本或更高版本并启用 v2 API。

有多种方法可以安装 Octavia

Octavia 支持 RBAC 吗?

是的,Octavia 在 Octavia v2 API 上具有基于角色的访问控制 (RBAC)。请参阅 Octavia 文档中的 Octavia 策略 页面。

Octavia 支持配额吗?

是的,Octavia 在 Octavia v2 API 中具有配额支持。请参阅 Octavia v2 API 文档中的 配额 部分。

如果您正在使用 neutron-lbaas 代理插件将负载均衡请求从 neutron API 传递到 Octavia API,则 neutron 配额设置和在 Octavia 中配置的配额都将被强制执行。您可能需要考虑在启用 neutron-lbaas 代理插件时将 neutron 负载均衡配额设置为无限制。

Octavia 有 Horizon 仪表板(Web GUI)吗?

是的,Octavia 仪表板 提供了一个大大增强的负载均衡 horizon 仪表板。

Octavia 的命令行界面 (CLI) 是什么?

python-octaviaclient 项目提供了一个 OpenStack 客户端 (OSC) 插件。

OpenStack 客户端是所有 OpenStack 项目的统一 CLI 客户端。它取代了自 Ocata 以来已弃用的 neutron CLI 客户端。

命令映射表 作为 python-octaviaclient 文档的一部分提供。

详细的命令文档 作为 python-octaviaclient 文档的一部分提供。

更新的用户 教程 也作为 Octavia 用户文档集的一部分提供。

neutron-lbaas 提供程序驱动程序怎么办?

与我们的驱动程序作者合作,提供程序驱动程序规范 已合并到 Octavia API 中。该规范为通过 风味机制 可用的驱动程序功能带来了显着增强。

这将需要对驱动程序进行一些修改以支持新的提供程序驱动程序规范。如果先前的驱动程序使用非稳定的内部 neutron 接口,这可能需要更多的工作。

在 neutron-lbaas 弃用周期内,我们预计将为 Octavia API 提供提供程序驱动程序。这些驱动程序将在 Octavia 管理文档 中列出。

使用上面描述的数据库迁移工具,您应该能够迁移使用提供程序驱动程序的现有负载均衡器,而不会对负载均衡器的数据平面造成停机时间。但是,此功能可能因驱动程序实现而异。

除了用于测试的 Octavia 参考驱动程序之外,提供程序驱动程序将不再存在于 Octavia 项目存储库中。我们通常无法访问所需的硬件或软件来正确测试和维护这些驱动程序作为主 Octavia 存储库的一部分。将这些驱动程序移动到它们自己的存储库将允许驱动程序的独立开发周期。提供程序驱动程序将使用 Stevedore 和打包来允许轻松地将驱动程序安装到 Octavia API 中。

有关提供程序驱动程序的更多信息,请参阅 提供程序驱动程序规范

我可以在同一时间运行 Octavia 和 neutron-lbaas 吗?

是的,您可以。但是请注意,只有使用 Octavia 参考驱动程序的负载均衡器在两个系统中都可见,并且对 Octavia API 的操作可能不会完全反映在 neutron-lbaas 中。

lbaasv2-proxy 插件也可用于允许 Octavia 中的负载均衡器通过 neutron API 可见。

OpenStack 客户端插件用于负载均衡仅支持 Octavia v2 API。要从命令行与 neutron-lbaas 交互,您必须继续使用“neutron”客户端。

Octavia v1 API 怎么办?

Octavia v1 API 旨在供 neutron-lbaas Octavia 驱动程序使用。由于它未实现访问控制,因此不应暴露给最终用户。对于托管 Octavia v2 API 以供用户使用的 Octavia API 进程,应通过 octavia.conf 文件中的“[api_settings] api_v1_enabled = False”设置禁用 v1 API。如果您在同一个 API 进程中启用了两个 API 版本,您还会看到警告日志消息。如果您需要在您的云中提供两个 API,我们建议运行一个单独的 v1 API 进程,该进程由访问控制保护,供您的 neutron-lbaas octavia 驱动程序使用。可以通过在替代的安全组控制端口或替代控制器主机/容器上运行它来实现。

Octavia v1 API 将遵循 neutron-lbaas 的弃用周期,并在 neutron-lbaas 移除时被移除。

Octavia v1 API 是专有 API,与 LBaaS v2 API 规范或任何其他 LBaaS API 规范不兼容。

我在哪里可以获取更多信息?

  • Octavia 文档
  • 联系 LBaaS 团队的最佳方式是通过 Freenode IRC 网络频道 #openstack-lbaas 上的 IRC。
  • 每周会议:每周三 16:00 UTC 在 Freenode IRC 网络的 #openstack-lbaas 频道中举行。
  • 向 OpenStack 邮件列表发送电子邮件:openstack-discuss [at] lists [dot] openstack [dot] org。请在主题前加上“[Octavia]”。