Neutron/LBaaS/Architecture
Scope
This document describes the architecture of LBaaS and introduces internal APIs
High-level Decomposition
LBaaS architecture is based on advanced services introduced into Quantum. The structure is following:
- LBaaS Quantum Extension - is responsible for handling REST API calls
- LBaaS Quantum AdvSvc Plugin - is a core of service, it is responsible for:
- DB storage
- Request validation
- Scheduling of load balancing services (deployment to LB devices)
- LBaaS Agent - is stand-alone service that provides API for driver developers
- Driver - is a module that transforms LBaaS object model into vendor-specific model and deploys configuration onto load-balancing device
LBaaS management is performed via REST API. Calls that perform read operations (involving DB only) are done in synchronous manner, all other calls (status retrieval, write operations) are done asynchronously. See Quantum/LBaaS/REST API for more details.
Communicaion between AdvSvc Plugin and Agent is done via AMQP.
The diagram (#1) for update operation is following:
Appendix
Diagram #1 is created using [1], source code:
title Update Request User -> +Extension: REST API Request activate User Extension --> +Plugin: Core API Request alt Valid Plugin --> Extension: Accepted Extension -> User: HTTP 202 else Error Plugin --> Extension: Error Message Extension -> -User: HTTP 40x end deactivate User Plugin --> +DB: Set W-Lock Plugin -> +Agent: AMQP Request Agent --> +Driver: Driver API call Driver -> +Device: Apply Change Device -> -Driver: Status Driver --> -Agent: Status Agent -> -Plugin: AMQP Response Plugin --> DB: Update DB Plugin --> DB: Clear W-Lock deactivate Plugin deactivate DB