负载均衡器 v2 (LBaaSv2 & octavia)

日期:

2016-01-28 00:00

标签:

lbaasv2, octavia, 负载均衡, neutron

蓝图:负载均衡器 v2 (LBaaSv2 & octavia)

OpenStack-Ansible 目前提供 LBaaSv1,但它已在 Liberty 中弃用,并计划在 Newton 中移除。LBaaSv2 在 Liberty 中变得稳定,并且比 LBaaSv1 提供了多项改进

  • 每个负载均衡器的多个 TCP 端口: 这有助于托管必须为访问者提供 80 和 443 端口的网站。它还可以减少部署所需的浮动 IP 地址数量。

  • 故障转移支持: 部署者可以选择部署单个负载均衡器节点或主动/被动对。

  • 虚拟机内的负载均衡器: 负载均衡器在虚拟机内运行,而不是与其他的 neutron agent 运行在一起。

  • 维护: 如果负载均衡器离线或 haproxy 宕机,健康管理器将移除有故障的负载均衡器并在其位置构建一个新的负载均衡器。

  • TLS 终止: TLS 可以在负载均衡器处终止,这样单个虚拟机就不需要加密/解密流量。

然而,LBaaSv2 也有一些限制

  • Horizon 支持: Horizon 对 LBaaSv2 的支持计划在 Mitaka 中实现,目前正在进行中,但撰写本文时面板尚未可用。

  • 无法与 v1 并行运行: LBaaS 的两个版本无法同时运行,并且目前没有可用的迁移路径供希望将他们的 v1 负载均衡器迁移到 v2 的用户使用。

问题描述

虽然 LBaaSv1 支持已存在于 OpenStack-Ansible 中,但它已在 Liberty 中弃用,并计划在 Newton 中移除。它还有一个限制,即每个负载均衡器只有一个监听端口,这限制了用户在单个负载均衡器上托管应用程序的能力(例如 HTTP 和 HTTPS)。

LBaaSv2 替换了 LBaaSv1,并将由 OpenStack 开发者继续支持。

提议的变更

部署 LBaaSv2 需要进行一些更改

  1. 将 octavia 添加到现有的 neutron virtualenv: octavia 项目需要包含在 neutron-server 容器中部署的 neutron virtualenv 中。

  2. 管理四个 octavia 守护进程: 需要在 neutron-server 容器中运行四个守护进程:octavia-api、octavia-housekeeping、octavia-worker 和 octavia-health-monitor。

  3. 部署 octavia 的配置文件: 需要部署和管理 /etc/octavia/octavia.conf

  4. RabbitMQ/MariaDB 凭据: Octavia 将需要它自己的数据库、数据库凭据和 RabbitMQ 凭据。

  5. Neutron 配置更改: 需要在 neutron.conf 中进行更改,以添加 LBaaSv2 服务插件和驱动程序。

  6. 更新文档: 部署者需要了解两种负载均衡器实现之间的区别以及如何部署每种实现。使用 LBaaSv1 的部署者还需要一些关于如何在他们的 OpenStack 环境中处理更改为 LBaaSv2 的建议。

备选方案

我们可以选择在 Mitaka 版本中继续使用 v1,但随后我们可能被迫在 Newton 版本中移除它,以支持 v2。

Playbook/Role 影响

大部分更改应该发生在 neutron role 中。LBaaSv1 当前通过添加 service_plugin 条目来启用,并且可以对 LBaaSv2 执行相同的操作。当存在 LBaaSv2 service_plugin 条目时,neutron role 将确保 octavia 正在运行并准备好接收请求。

升级影响

升级影响取决于部署者是否当前正在使用 LBaaSv1。

如果部署者已经在使用 LBaaSv1,他们需要仔细考虑迁移到 v2 的路径,因为两种实现无法同时运行。但是,如果部署者已经在使用 v1,他们可以在不调整负载均衡器使用方式的情况下升级到 Liberty 或 Mitaka。升级到 Newton 需要进行更改,因为预计 LBaaSv1 将在该版本中移除。

如果部署者此时未在使用 LBaaSv1,那么他们只需在升级到 Liberty、Mitaka 或 Newton 时获得他们之前没有的功能。

安全影响

LBaaSv2 内部没有显著的性能影响,但它可能允许部署者在与他们的 HTTP 站点相同的 IP 地址上部署 HTTPS 网站。

Octavia 还与 Anchor 和 Barbican 项目集成。Anchor 允许用户从 OpenStack 环境内的预配置证书颁发机构 (CA) 获取证书,Barbican 可用于存储 SSL/TLS 连接的私钥。

性能影响

由于 LBaaSv2 在虚拟机内运行,而不是在 neutron-agents 容器内与多个 haproxy-agents 一起运行,因此 LBaaSv2 应该比 LBaaSv1 扩展得更好。

最终用户影响

如果最终用户当前未在使用 LBaaSv1,那么他们将获得他们可以通过 API 使用的新功能。Horizon 面板计划在 Mitaka 中实现。

如果最终用户当前正在使用 LBaaSv1,他们将在部署 LBaaSv2 时失去负载均衡器功能,直到他们配置他们的负载均衡器在 LBaaSv2 API 中。部署者必须与最终用户密切合作,以确定最佳的前进方向。

部署者影响

如果部署者当前未在使用 LBaaSv1,他们可以通过在他们的 openstack_user_config.yml 中添加 LBaaSv2 的 service_plugin,就像他们今天为 LBaaSv1 所做的那样,轻松启用 LBaaSv2。

如果部署者当前正在使用 LBaaSv1,他们可以在不中断的情况下继续使用它(直到 Newton 版本)。如果他们选择迁移到 LBaaSv2,他们需要与最终用户协调更改,以避免长时间的服务中断。

开发人员影响

LBaaSv2 的部署将是 neutron 部署的一部分,就像当前 LBaaSv1 的部署过程一样。不需要额外的 role 或 playbook。

依赖项

此规范不依赖于 OpenStack-Ansible 中的任何其他开发工作。

实现

负责人

主要负责人

Major Hayden (IRC: mhayden, LP: rackerhacker)

其他贡献者

工作项

请参阅上面的提议的更改部分中的详细信息。

测试

Tempest 测试存在于 LBaaSv2 API 中,但 octavia API 的 tempest 测试仍在进行中。

文档影响

上面在提议的更改部分中提到了一些主题。必须记录以下主题

  • LBaaSv1/2 有什么不同?

  • 如果我已经部署了 LBaaSv1,我该怎么办?

  • 如何从 v1 迁移到 v2?

  • 如何部署/配置 LBaaSv2?

  • 如何解决 LBaaSv2 问题?

参考资料

邮件列表讨论

软件

文档