Atlas LBaaS Overview September 2012
Atlas LBaaS Overview
September 2012
Atlas Architecture tenets
• Database is the source of truth – Configuration on devices is enforced to match DB
• LBaaS APIs that change state are asynchronous – Operations return as soon as DB is updated
– Devices are updated in the background
• Scaling in Atlas is achieved through – Use of async operations through ActiveMQ
– Use of Cluster of Atlas servers
Atlas Server scalable and HA deployment
Atlas infrastructure dependency
• Atlas infrastructure is based on: – Any Java Server (Jetty, Tomcat, Glassfish, JBOSS, etc.)
– Spring framework (IoC, annotations, xml config)
– JAXB (for generating API objects and mapping to REST)
– Dozer (utility to map between Java classes)
– Abstraction of persistence providers (JPA) => DB, ORM and Transactions
– Abstraction of message queueing (JMS) => Message Queues
– Unit testing framework (SureFire)
Tenant API specification
• Multi-Tenant API • Specification: wiki.openstack.org/Atlas-LB • Follows OpenStack API design recommendations • Determined after careful research into the common
capabilities of open source and commercial load balancers. • Specified using XML Schema file (XSD)
– API POJO classes generated from spec.
• Supports both JSON and XML – JSON payload generated from XML schema – ATOM support skeleton is there
• Can list active extensions • Support account limits
Atlas Plugins and extensions
Core
Extension
A D A P T E R
Core API
Extension API
Atlas Core
Core Resource Model
REST Layer
Persistence Service Layer
(transactions)
Persistence Repository
Layer (ORM)
MQ Consumers
Device Adapter
REST Layer
JAXB (XSD files)
Atlas data-model component
XML request JSON request JAX-RS (CXF)
Resource classes
JAXB object
Atlas API component
Dozer Mapper
1 2 3
4 5
Service classes
Atlas persistence component
Repository Classes
(Hibernate)
Async classes
7
DB
6 8
Atlas API component
Atlas API component
Message Queue (ActiveMQ)
Entity Object
JAXB object
Entity Object
Entity Object
9 Response
Message Queue (ActiveMQ)
Async classes
(Listeners)
Consume message
Atlas persistence component
Repository Classes
(Hibernate)
DB
ID
ReverseProxy Service
Adapter classes
Endpoint config Entity
Object
Entity Object
Entity Object
Network
LB Device LB Device
LB Device LB Device
LB Device
Endpoint config
Reads
1
2 3
4
5
6
7 Device-specific
API 8 Update
status
Atlas adapter component
Adapters
Adapter Tasks
• Minimum sharing with Core – Only what is specified in the interface
• Translates Atlas APIs and semantics to device API or configuration
• Manages IPv4 and IPv6 address pools • Manages devices. Could include onboarding and failure
detection • Manages rollback on failure to ensure device config
stays correct • Decides on device placement for each load balancer • Reports back any errors to core
Core Adapter Contract
Adapter Core Usage interface
Extensions
Rackspace Extended Adapter
Citrix Extended Adapter
Validation Framework
Notification Service
Scheduled Jobs
Atlas Extension Structure
• Extend the core XSD to specify new APIs or extension into existing APIs
• Extend the resource layer
• Extend the Service Layer
• Extend the Repository layer
• Extend the Async layer
• Extend the adapter layer
Example of extending API
packaging
• Java WAR file
• Debian package
• Adapters are built as separate JAR files
• Extensions are built as separate JAR files
END