OpenStack octavia简介

什么是Octavia?

Octavia是一款开源的运营商级负载均衡解决方案,旨在与OpenStack配合使用。Octavia出自Neutron LBaaS项目。 当Neutron LBaaS从版本1转移到版本2时,Neutron LBaaS项目发生了一次大的转变。从Liberty版本的OpenStack开始,Octavia已成为Neutron LBaaS版本2的参考实现。

Octavia自kilo版本从neutron lbaas项目中分离出来,通过管理一系列amphora(vm、containers, or bare metal servers)来完成负载均衡的功能。其框架结构也是一个典型的openstack项目框架。api作为项目入口,rpc来作为组内模块之间通信的中介,controller及数据库来保证数据存储及一致性,实现使用driver来保证能够实现兼容性。

Octavia通过管理一系列虚拟机,容器或裸机服务器(统称为amphorae)来完成其负载均衡服务的交付,这些服务器可根据需要进行调整。 这种按需水平缩放功能将Octavia与其他负载平衡解决方案区分开来,从而使Octavia真正适合“云端”。

Octavia可以结合哪些OpenStack组件 ?

负载均衡对于实现简单或自动交付扩展和可用性至关重要。为了发挥其作用,Octavia使用了其他OpenStack项目:

Nova - 用于管理amphorae生命周期并根据需求启动计算资源。
Neutron - 用于amphorae,租户环境和外部网络之间的网络连接。
Barbican - 用于管理TLS证书和凭证。
Keystone - 用于针对Octavia API进行认证,并用于Octavia与其他OpenStack项目进行认证。
Glance - 用于存储amphorae虚拟机映像。
Oslo - 用于Octavia与其他组件之间的通信
Octavia旨在与前面列出的组件进行交互。在设计原则上,我们都通过driver interface来定义这种交互。这样,外部组件可以用功能相同的其他组件进行替换。
建议将Octavia作为独立的负载平衡解决方案运行。 Neutron LBaaS在Queens版本中已弃用,而Octavia则是其替代产品。对于最终用户来说,这种转换应该是相对无缝的,因为Octavia支持Neutron LBaaS v2 API并且具有类似的CLI界面。也可以使用Octavia作为Neutron LBaaS插件。
有关OpenStack Neutron LBaaS弃用的更多信息,请参阅https://wiki.openstack.org/wiki/Neutron/LBaaS/Deprecation。

Octavia架构

1

Octavia 0.9版包含以下主要组件:
amphorae - Amphorae是完成向租户应用程序环境提供负载平衡服务的单个虚拟机,容器或裸机服务器。在Octavia 0.8版本中,amphorae映像的参考实现是运行HAProxy的Ubuntu虚拟机。
Controller - Controller是Octavia的“大脑”。它由四个子组件组成,它们是单独的守护进程。如果需要,它们可以在单独的后端基础架构上运行:
API Controller - 顾名思义,这个子组件运行Octavia的API。它需要API请求,对它们执行简单的处理,并通过Octavia消息总线将它们发送给Controller Worker。
Controller Worker - 此子组件从API控制器获取已过滤的API命令,并执行必要的操作以完成API请求。
Health Manager - 该子组件监视单个amphorae以确保它们正常运行,并且保持健康。它还处理故障事件。
Housekeeping Manager - 该子组件清理陈旧(已删除)的数据库记录,管理备用池并管理amphora证书轮换。
Network - Octavia无法在不使用网络环境的情况下完成任务。 Amphorae在“负载平衡器网络”上构建了一个网络接口,并且它们也可能直接插入到租户网络中以访问后端池成员,具体取决于租户如何部署给定的负载平衡服务。

Octavia组件设计

2

Octavia的这个版本致力于使服务交付可扩展(尽管单个的listener在此阶段不能水平扩展),Driver是允许Octavia与OpenStack环境中的其他服务进行交互的“粘合”的组件。 Octavia希望尽可能与那些必须交互的服务尽可能松散耦合,以便保持这些接口的松耦合度。

为了保持Octavia的设计更独立,作为网络服务的纯粹消费者,但是仍然不能“绕过”现有的Neutron API,Octavia决定编写一个“网络驱动程序”组件,通过编写的API来执行那些dirty back-end配置命令,直到它们成为Neutron的标准组件。 该组件应与Octavia松散耦合,因为Octavia将与Neutron一起使用,并为Octavia提供完成网络配置任务。

在前端,Octavia使用来自LBaaS驱动程序的命令和控制。
Octavia在设计上保持足够的灵活性,以便某些组件(如amphorae)可以被第三方产品替代(如果需要)。Amphorae的LB驱动程序还为用户提供了可以替换不同(可通过不同flavor访问)的其他开源Amphorae的选择,这样的话可以方便地对新的amphorae进行测试。
LB Network是控制器用来与amphorae进行通信的子网。 这意味着控制器必须连接到到这个子网才能起作用。由于amphorae将在其上进行通信,这意味着该网络不属于“undercloud”。

HEALTH MONITORS

控制器需要能够监控它们控制的amphorae的可用性和整体健康状况。对于active的amphorae,这种检查大约每5秒一次。对于备用的amphorae,检查可能会发生得更少(比如每分钟一次)。
octavia采用虚拟机来做为负载均衡的执行体,这是一个Nova VM,它实际上提供用户配置的负载均衡服务,可以实现灵活的弹性伸缩。

文档

https://wiki.openstack.org/wiki/Octavia/Roadmap
https://github.com/openstack/octavia-dashboard
https://wiki.openstack.org/wiki/Octavia

蒋暕青

蒋暕青
Lots of mountains to climb,lots of enemies to defeat.

OpenStack cinder mutil-attach技术探秘

OpenStack cinder mutil-attach技术探秘 Continue reading

Openstack Cyborg项目介绍

Published on July 15, 2018

OpenStack Neutron L3性能测试

Published on July 10, 2018