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
    API                  A
                         D
               Core
                         A
                         P
 Extension               T
    API                  E
             Extension   R
Atlas Core
Core Resource Model
REST
    Layer




  Persistence
    Service
     Layer
(transactions)




Persistence
Repository
   Layer
  (ORM)
REST
 Layer




   MQ
Consumers




 Device
Adapter
Atlas
                       data-model                         Atlas API
                       component                          component
 XML request
 JSON request                             JAXB object     JAX-RS (CXF)
                          JAXB
         1                                   2              Resource
                       (XSD files)                                       3 JAXB object
      9                                                      classes
          Response
                                           Entity       Entity        4
    Atlas API                        7     Object              5   Entity
                                                        Object                  Dozer
    component                                                      Object
                                                                               Mapper

              Async             Repository
                                                             Service             Atlas API
             classes              Classes
                                                             classes             component
                                (Hibernate)
               8
                                     6        Atlas persistence
Message                                          component
Queue
(ActiveMQ)

                                     DB
Message
 Queue
 (ActiveMQ)
                                                                       Atlas adapter
              1 Consume message                                        component
                                                          Entity
           Async                   4                      Object
                                           ReverseProxy                  Adapter
          classes             Entity                               6
                                              Service                    classes
        (Listeners)           Object                      Endpoint
Entity 3   ID                                              config            Device-specific
         2            8   Update                                         7
Object                    status
                                           Reads                                  API
                                       5
                                           Endpoint
         Repository                         config
           Classes                                                     Network
         (Hibernate)

                      Atlas persistence
                         component

                                                                       LB Device
                                                                        LB Device
              DB                                                          LB Device
                                                                           LB Device
                                                                             LB Device
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

Atlas LBaaS overview

  • 1.
    Atlas LBaaS Overview September 2012
  • 2.
    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
  • 3.
    Atlas Server scalableand HA deployment
  • 4.
    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)
  • 5.
    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
  • 6.
    Atlas Plugins andextensions Core API A D Core A P Extension T API E Extension R
  • 7.
  • 8.
  • 9.
    REST Layer Persistence Service Layer (transactions) Persistence Repository Layer (ORM)
  • 10.
    REST Layer MQ Consumers Device Adapter
  • 11.
    Atlas data-model Atlas API component component XML request JSON request JAXB object JAX-RS (CXF) JAXB 1 2 Resource (XSD files) 3 JAXB object 9 classes Response Entity Entity 4 Atlas API 7 Object 5 Entity Object Dozer component Object Mapper Async Repository Service Atlas API classes Classes classes component (Hibernate) 8 6 Atlas persistence Message component Queue (ActiveMQ) DB
  • 12.
    Message Queue (ActiveMQ) Atlas adapter 1 Consume message component Entity Async 4 Object ReverseProxy Adapter classes Entity 6 Service classes (Listeners) Object Endpoint Entity 3 ID config Device-specific 2 8 Update 7 Object status Reads API 5 Endpoint Repository config Classes Network (Hibernate) Atlas persistence component LB Device LB Device DB LB Device LB Device LB Device
  • 13.
  • 14.
    Adapter Tasks • Minimumsharing 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
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    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
  • 24.
  • 25.
    packaging • Java WAR file • Debian package • Adapters are built as separate JAR files • Extensions are built as separate JAR files
  • 26.