Top Banner
Atlas LBaaS Overview September 2012
26
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Atlas LBaaS overview

Atlas LBaaS Overview

September 2012

Page 2: Atlas LBaaS overview

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

Page 3: Atlas LBaaS overview

Atlas Server scalable and HA deployment

Page 4: Atlas LBaaS overview

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)

Page 5: Atlas LBaaS overview

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

Page 6: Atlas LBaaS overview

Atlas Plugins and extensions

Core

Extension

A D A P T E R

Core API

Extension API

Page 7: Atlas LBaaS overview

Atlas Core

Page 8: Atlas LBaaS overview

Core Resource Model

Page 9: Atlas LBaaS overview

REST Layer

Persistence Service Layer

(transactions)

Persistence Repository

Layer (ORM)

Page 10: Atlas LBaaS overview

MQ Consumers

Device Adapter

REST Layer

Page 11: Atlas LBaaS overview

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

Page 12: Atlas LBaaS overview

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

Page 13: Atlas LBaaS overview

Adapters

Page 14: Atlas LBaaS overview

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

Page 15: Atlas LBaaS overview

Core Adapter Contract

Page 16: Atlas LBaaS overview

Adapter Core Usage interface

Page 17: Atlas LBaaS overview

Extensions

Page 18: Atlas LBaaS overview

Rackspace Extended Adapter

Page 19: Atlas LBaaS overview

Citrix Extended Adapter

Page 20: Atlas LBaaS overview

Validation Framework

Page 21: Atlas LBaaS overview

Notification Service

Page 22: Atlas LBaaS overview

Scheduled Jobs

Page 23: Atlas LBaaS overview

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

Page 24: Atlas LBaaS overview

Example of extending API

Page 25: Atlas LBaaS overview

packaging

• Java WAR file

• Debian package

• Adapters are built as separate JAR files

• Extensions are built as separate JAR files

Page 26: Atlas LBaaS overview

END