Neutron/ServiceAgent
< Neutron
目录
范围
计划在 Havana 版本中添加另外两个服务代理。此蓝图的目标是为所有服务代理指定通用架构,并展示如何使用现有的代理-调度器框架。新的服务代理将作为 lbaas、vpnaas、fwaas 代理的基础。
用例
注意。此处及以下,“资源对象”是指服务模型(例如,LBaaS 中的 VIP,VPNaaS 中的 vpn_connections)的根对象。术语“设备”代表运行服务的机器/进程。
从部署角度来看,设备可以是
- 宿主机上的进程 - 例如,在网络控制器或运行 haproxy 的专用节点上的 haproxy 进程
- 在计算节点上运行的虚拟机
- 物理设备
图 1. 服务代理部署
在此部署中,用户拥有 1 个网络控制器,2 个运行 haproxy-namespace 代理的专用主机,1 个运行 F5 代理的主机以及 2 个由 F5 代理管理的硬件负载均衡器。
用例 1. 使用 3 个节点和 HAProxy 进程进行负载均衡
- 在每个主机上启用 'lbaas-haproxy-namespace-agent'
- 配置调度器(类似于 L3 和 DHCP 代理的操作方式)
- 注册代理
- 创建 LB 逻辑对象。一旦创建 VIP,代理调度器就会选择代理并将其绑定。代理将逻辑模型编译为 haproxy 配置并启动进程(如 Grizzly 参考实现中所做的那样)
用例 2. 使用 F5 硬件负载均衡器进行负载均衡
- 在网络控制器上启用 'lbaas-f5-agent'(此处,我们可以使用具有 f5 驱动程序的 lbaas-agent 代替特定的 lbaas-f5-agent)。代理配置了设备列表。配置可以是静态的(通过配置文件),也可以通过 API 公开(如 l3-agent 和 dhcp-agent 的 API)。
- 配置调度器。可以选择特定的调度器 - 能够感知设备状态及其容量的调度器。
用例 3. 创建 VPN 隧道
- 在网络节点上启用 'vpnaas-agent'
- 使用特定的 VPNaaS 感知调度器配置调度器
实现概述
代理调度器框架已经引入了实现所需的部分:可插拔的调度算法、API 扩展、l3-agent 和 dhcp-agent 可以用作参考点。
从代码角度来看,更改如下
- 引入新的代理类型(对于 lbaas,我们可以基于 lbaas-namespace-agent 的参考实现)
- 引入新的调度算法,该算法考虑设备的功能、负载等。
- 引入代理和代理调度器之间的报告协议
- 引入与 l3-agent 和 dhcp-agent 类似的代理服务 API。此 API 可以支持管理设备列表的操作。
架构如下
图 2. 插件和代理架构
注意。在代理实现方面有多种选择:与特定服务实现混合或每个服务扩展。
数据模型变更
引入新的表来存储资源对象和代理之间的绑定。作为一种选择,我们可以考虑将现有的 NetworkDhcpAgentBinding 和 RouterL3AgentBinding 重构为通用模型。
配置变量
- quantum.conf:用于配置服务代理调度器的变量。
- service-agent.conf
API
用于配置面向设备的代理服务的设备列表的 API。但对于第一个版本,这不是首要任务,因为设备可以静态配置。
CLI 要求
设备配置的 CLI(可选)
Horizon 要求
'待定'

