Neutron/LBaaS/Architecture/Scheduler
< Neutron | LBaaS | Architecture
Overview
Scheduler is a separate Quantum plugin. It is responsible for:
- Management of devices that implement advanced services (load balancers, firewalls, vpn gateways, etc)
- Binding of service's logical models to devices (ex: schedule vip to load balancer)
- Deployment of configs to devices with help of agents/drivers
Workflow
Example 1. The typical workflow for vip creation:
Details:
- The request to create vip is is received by LBaaS Plugin
- LBaaS Plugin calls DB plugin to create model and store it to DB, vip_id is returned
- LBaaS Plugin responds to API with "HTTP 202 Accepted". The rest of process is done asynchronously
- LBaaS Plugin calls Scheduler and passes it service_type, vip_id, and other parameters.
- Scheduler finds device that satisfies service_type and other filter parameters.
- Scheduler stores mapping between device_id and vip_id in its DB. This mapping will be used in latter requests
- Scheduler sends message to Agent
- Agent reads message and forwards it to driver
- Agent returns result to Scheduler, then it is forwarded to LBaaS Plugin.
Agent is common for all services. It delegates processing to drivers[service_type][device_type][version].
See also Scheduler API