Neutron/LBaaS/Architecture/Scheduler
概述
调度器/设备管理是 Quantum 的一个独立组件。它负责
- 将服务的逻辑模型绑定到设备(例如:将 VIP 调度到负载均衡器)
- 管理实现高级服务的设备(负载均衡器、防火墙、VPN 网关等)。这包括对设备数据库进行 CRUD 操作的 REST API。
工作流程
示例 1. 典型的 VIP 创建流程
详情
- 创建池的请求由 LBaaS 插件接收
- LBaaS 插件调用 DB 插件创建模型并将其存储到 DB,返回 pool_id
- LBaaS 插件调用调度器,并传递 service_type、pool_id、pool 和其他可选参数。
- 调度器找到满足 service_type 和参数的设备,包括池中指定的参数。
If no device could be found, scheduler creates new DB object representing tenant's private virtual HAProxy
- 调度器将其 DB 中存储设备 ID 和 pool_id 之间的映射。此映射将在后续请求中使用
it also increments device ref_counter.
- 调度器将 device_info 返回给 LBaaS 插件
- LBaaS 插件以“HTTP 202 Accepted”响应 API。其余过程异步完成
- LBaaS 插件向 Agent 发送 rpc 消息,指定命令、service_type、逻辑对象(pool)和物理对象(设备参数)
- Agent 读取消息并将其转发给驱动程序。
- 驱动程序负责在是按需 HAProxy 的情况下启动新设备
- 驱动程序负责根据服务插入模式将设备连接到租户网络,并将逻辑对象部署到设备
- Agent 将结果返回给 LBaaS 插件,后者更新相应的 DB 对象的状态:pool、资源关联和设备。
以下图表代表两种情况
- 创建新设备
- 创建设备和部署失败
重要提示:Agent 对所有服务都是通用的。它将处理委托给驱动程序[service_type][device_type][version]。
整个组件图
Where:
- Dev 处理程序 - 设备特定代码的一部分,用于评估特定类型的设备是否符合提供的资源;对于负载均衡器服务,是 pool
- Agent 加载驱动程序集,这些驱动程序不仅负责特定于服务的设备配置,还负责设备管理功能,例如在设备上配置 VLAN 的代码,以及将其连接到租户网络所需的其他任务。


