Jump to: navigation, search

Neutron/LBaaS/Architecture/Scheduler

< Neutron‎ | LBaaS‎ | Architecture
Revision as of 12:11, 29 November 2012 by Ilya (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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:

Template:Http://goo.gl/6BKpE

Details:

  • The request to create vip is sent from API to LBaaS Plugin
  • LBaaS Plugin calls DB plugin to create model and store it to DB, vip_id is returned
  • LBaaS Plugin responds to API (HTTP 202 Accepted). The rest of process is done asynchronously
  • LBaaS Plugin calls via MQ Scheduler to bind vip to load balancer, service_type is specified.
  • Scheduler picks ServiceHandler that corresponds to service_type. Handler returns device object. The device may be selected according to filter or launched.
  • Scheduler stores mapping between device_id and vip_id in its DB. This mapping will be used by ServiceHandler next time
  • ServiceHandler forms message and puts it into MQ that corresponds to LBaaS Agent
  • LBaaS Agent picks message and forwards it to driver
  • LBaaS Agent returns result to Scheduler, then it is forwarded to LBaaS Plugin.

ServiceHandler is a "plugin" for Scheduler. Its main function is to provide device. The logic may be:

  • return first available
  • return some that satisfies filter (ex. LB capabilities)
  • launch a new VM, plug it into net, register as device and return it.

ServiceHandler also knows where to forward the message, ex. LBaaS messages will be forwarded to LBaaS Agent

LBaaS Agent may be also a module of ServiceHandler.