介绍 Octavia

欢迎使用 Octavia!

Octavia 是一个开源的、运营商级别的负载均衡解决方案,旨在与 OpenStack 协同工作。

Octavia 源自 Neutron LBaaS 项目。它的构思影响了 Neutron LBaaS 项目的转型,因为 Neutron LBaaS 从版本 1 迁移到版本 2。从 OpenStack Liberty 版本开始,Octavia 已成为 Neutron LBaaS 版本 2 的参考实现。

Octavia 通过管理虚拟机器、容器或裸机服务器(统称为 amphorae)的集群来交付负载均衡服务,并根据需求启动这些服务器。这种按需、水平扩展的功能使 Octavia 与其他负载均衡解决方案区分开来,从而使 Octavia 真正适合“云环境”。

Octavia 在 OpenStack 生态系统中的位置

负载均衡对于实现简单或自动交付扩展和可用性至关重要。反过来,应用程序交付扩展和可用性必须被认为是任何云的关键特性。综上所述,这意味着负载均衡是任何云的关键特性。

因此,我们认为 Octavia 与 Nova、Neutron、Glance 或任何其他实现现代 OpenStack 云的关键特性核心项目一样重要。

在完成其角色时,Octavia 使用其他 OpenStack 项目

  • Nova - 用于管理 amphorae 生命周期和按需启动计算资源。

  • Neutron - 用于 amphorae、租户环境和外部网络之间的网络连接。

  • Barbican - 用于管理 TLS 证书和凭据,当在 amphorae 上配置 TLS 会话终止时。

  • Keystone - 用于对 Octavia API 进行身份验证,以及 Octavia 与其他 OpenStack 项目进行身份验证。

  • Glance - 用于存储 amphorae 虚拟机镜像。

  • Oslo - 用于 Octavia 控制器组件之间的通信,使 Octavia 融入标准的 OpenStack 框架和审查系统,以及项目代码结构。

  • Taskflow - 技术上是 Oslo 的一部分;但是,Octavia 在编排后端服务配置和管理时,会广泛使用这个作业流系统。

Octavia 被设计为与前面列出的组件进行交互。在每种情况下,我们都仔细定义了这种交互方式,通过驱动程序接口。这样,外部组件就可以用功能等效的替代品进行交换——而无需重构 Octavia 的主要组件。例如,如果您的环境中使用的 SDN 解决方案不是 Neutron,您应该能够为您的 SDN 环境编写 Octavia 网络驱动程序,它可以作为 Octavia 中标准 Neutron 网络驱动程序的即插即用替代品。

截至 Pike 版本,建议将 Octavia 作为独立的负载均衡解决方案运行。Neutron LBaaS 在 Queens 版本中已被弃用,Octavia 是它的替代品。尽可能,强烈建议操作员迁移到 Octavia。对于最终用户来说,这种过渡应该相对无缝,因为 Octavia 支持 Neutron LBaaS v2 API,并且具有类似的 CLI 界面。或者,如果最终用户无法在可预见的未来进行迁移,操作员可以在 Neutron LBaaS 中启用实验性的 Octavia 代理插件。

也可以像任何其他供应商一样,将 Octavia 用作 Neutron LBaaS 插件。您可以将 Octavia 视为 Neutron LBaaS 的“开源供应商”。

Octavia 支持 Neutron LBaaS 提供的第三方供应商驱动程序,并完全取代 Neutron LBaaS 作为 OpenStack 的负载均衡解决方案。

有关 OpenStack Neutron LBaaS 弃用的更多信息,请参阅 https://wiki.openstack.org/wiki/Neutron/LBaaS/Deprecation

Octavia 术语

在您进一步阅读本介绍之前,请注意

经验表明——在创建、部署和使用负载均衡设备或服务的 IT 行业细分领域中——术语的使用往往不一致。为了减少混淆,Octavia 团队创建了一个术语表,其中定义了在 Octavia 项目和 Neutron LBaaS 版本 2 的上下文中使用的术语。该术语表可在此处找到:Octavia 术语表

如果您熟悉 Neutron LBaaS 版本 1 的术语和用法,那么尤其重要的是要了解“VIP”、“负载均衡器”和“负载均衡”等术语的含义在 Neutron LBaaS 版本 2 中发生了变化。

我们对这些术语的使用应在 Octavia 的文档、Octavia 团队成员在公共邮件列表中进行的讨论、IRC 频道和会议中与 Octavia 术语表 保持一致。为了避免误解,最好熟悉这些术语表的定义。

Octavia 组件的 10,000 英尺概览

Octavia Component Overview

Octavia 版本 4.0 包含以下主要组件

  • amphorae - Amphorae 是实现向租户应用程序环境交付负载均衡服务的单个虚拟机、容器或裸机服务器。在 Octavia 版本 0.8 中,amphorae 镜像的参考实现是在 Ubuntu 虚拟机上运行的 HAProxy。

  • controller - 控制器是 Octavia 的“大脑”。它由五个子组件组成,这些子组件是独立的守护进程。如果需要,它们可以在单独的后端基础设施上运行

    • API Controller - 顾名思义,此子组件运行 Octavia 的 API。它接收 API 请求,对其执行简单的清理,并通过 Oslo 消息总线将其发送到控制器工作器。

    • Controller Worker - 此子组件从 API 控制器接收清理后的 API 命令,并执行必要的操作以满足 API 请求。

    • Health Manager - 此子组件监视单个 amphorae,以确保它们已启动并正在运行,并且总体上运行良好。它还处理 amphorae 意外故障时的故障转移事件。

    • Housekeeping Manager - 此子组件清理过时(已删除)的数据库记录并管理 amphorae 证书轮换。

    • Driver Agent - 驱动程序代理接收来自提供程序驱动程序的状态和统计信息更新。

  • network - Octavia 无法在不操作网络环境的情况下完成其任务。Amphorae 会使用网络接口启动到“负载均衡器网络”,并且它们还可能直接连接到租户网络,以访问后端池成员,具体取决于租户如何部署任何给定的负载均衡服务。

有关 Octavia 组件的更完整描述,请参阅此文档存储库中的 Octavia v0.5 组件设计 文档。