Octavia¶
- 日期:
2016-11-01 00:00:00
- 标签:
lbaas, octavia, 负载均衡器, neutron
- 蓝图:使用 OpenStack-Ansible 部署 Octavia (LBaaS)
链接:https://blueprints.launchpad.net/openstack-ansible/+spec/octavia
Octavia 项目部署了比最初基于 neutron-lbaas 代理的负载均衡器更具可扩展性和弹性的负载均衡器。Octavia 有几个守护进程来处理负载均衡器的构建、配置和拆解。
问题描述¶
目前 OpenStack 中有两种主要的负载均衡器方案
LBaaSv2 w/agent:使用带有在命名空间中运行的 haproxy 的 neutron-lbaasv2 代理
LBaaSv2 w/Octavia:将负载均衡器部署到虚拟机中,并使用 LBaaSv2 API 进行管理
基于代理的负载均衡器由于 haproxy 实例仅在一个地方运行而没有故障转移,因此具有可扩展性和可靠性限制。
Octavia 为负载均衡提供了一些有用的改进
负载均衡器部署到虚拟机中,这使得能够根据需要调整其大小,并将其与控制平面隔离。
将负载均衡器放入虚拟机中,使其更接近其正在均衡的资源。这提高了负载均衡器的性能,尤其是在控制平面部署在比数据平面(hypervisor)较弱的硬件上的云中。
Octavia 可以以高可用性配置(当前为主动/被动)部署负载均衡器,这有助于故障以及补丁/更新。
提议的变更¶
拟议的更改包括
为 Octavia 创建一个角色(可能为 openstack-ansible-os_octavia`)
添加 Ansible 代码以在 OpenStack-Ansible 环境中部署 Octavia
为 Ansible 角色添加集中式测试
为角色本身添加文档
将角色与 OpenStack-Ansible 集成,而不会破坏现有的 neutron-lbaasv2 + 代理支持
允许部署者选择 LBaaSv2+agent 或 LBaaSv2+Octavia
在 OpenStack-Ansible 的主文档中添加文档,以解释如何将 Octavia 作为集成构建的一部分进行部署
可选地,可以完成工作以启用 SSL 卸载支持,这需要部署 Barbican。
备选方案¶
我们可以继续使用带有代理架构的 LBaaSv2,直到该代码被弃用。这并非理想情况。
Playbook/Role 影响¶
需要向 OpenStack-Ansible 添加 playbook 以部署 Octavia,但这将与为其他服务(如 Neutron)完成的现有工作非常相似。
升级影响¶
Octavia 之前没有被部署过,因此这里没有什么可以升级的。但是,当前使用 LBaaSv2+agent 的部署者可以选择更改后端 LBaaSv2 驱动程序以使用 Octavia。在进行此更改之前,他们需要删除所有现有的负载均衡器并重新创建它们。
安全影响¶
主要的安全性问题是,Octavia 负载均衡器虚拟机需要位于某种类型的管理网络上,该网络可以被控制平面中运行的 Octavia 服务访问。这些虚拟机将具有一个网络连接到租户网络,以及一个连接到管理网络的连接。
这可能允许攻击者从受损的负载均衡器 VM 移动到控制平面。我们需要确定一些减轻这些类型攻击的方法。这可以通过 iptables 或其他网络过滤来完成。
性能影响¶
使用基于 Octavia 的负载均衡器,负载均衡性能应该更好。但是,我们需要生成或下载负载均衡器虚拟机的 VM 镜像。这可能需要时间,并且需要进行优化。
最终用户影响¶
已经使用 LBaaSv2 API 的最终用户不会注意到任何变化。API 合同和端点保持不变。只有后端 LBaaSv2 驱动程序会被更改。
部署者影响¶
部署者需要启用 Octavia 部署才能使用它们。Octavia 不会默认部署。部署者还需要稍作调整其容量规划,因为负载均衡器虚拟机将占用数据平面中的空间,而这些空间通常会被租户虚拟机占用。
开发人员影响¶
新的 Octavia 角色将遵循与其他角色相同的部署/测试模式。它应该像其他 OpenStack-Ansible 独立角色一样易于上手。
依赖项¶
Octavia 角色的工作没有未满足的依赖项。
实现¶
负责人¶
- 主要负责人
Major Hayden (IRC: mhayden)
工作项¶
请参阅上面的“拟议的更改”部分,以获取详细列表。
测试¶
Octavia 角色应使用与其他角色相同的标准集中式测试存储库。Octavia 需要 keystone、nova、neutron、glance 部署以进行适当的测试。
如果启用了该功能,Barbican 将需要用于 SSL 卸载。
文档影响¶
需要为角色本身以及集成存储库提供文档。此文档应与为其他服务(如 neutron 或 nova)编写的文档相匹配。
参考资料¶
Octavia wiki:https://wiki.openstack.org/wiki/Octavia Octavia 路线图:https://wiki.openstack.org/wiki/Octavia/Roadmap