TITRE SUR 1 OU 2 LIGNES MAXIMUM

advertisement
Connecting to the Clouds
Cloud Brokers and OCCI.
Raffaele Di Fazio
Overview
•
The Broker, components and architecture
•
jOCCI: an OCCI Java implementation
•
The “Connector Project”
•
A full overview
Raffaele Di Fazio
November 2012 - 2
Disclaimer
•
My visibility on the projects was limited.
•
I was just asked to design and develop with a general overview
of the goals.
•
I do NOT have any details about European projects involved
with the cloud broker nor any of the other parts I will show to
you.
Raffaele Di Fazio
November 2012 - 3
The Broker
Raffaele Di Fazio
November 2012 - 4
The Broker: a cloud perspective
•
A cloud broker is an intermediary between the customer and a
cloud provider.
•
The goal of a Cloud Broker is:
•
To be able to provide a unified interface to manage multiple
cloud providers.
•
To simplify the choice for the customer.
•
To try to understand the need of the customer and to find
the provider that best suits its needs.
Raffaele Di Fazio
November 2012 - 5
The Broker: a cloud perspective
•
Can have different goals based on the user request:
•
Try to minimize the costs.
•
Try to give the fastest service (i.e. deploying in EU instead of
US)
•
The Broker, essentially: propose the user a service.
Raffaele Di Fazio
November 2012 - 6
Cloud Platforms
•
At the beginning: one player (Amazon)
•
Now: multiple players, variegated offer.
•
Several cloud providers:
•
Amazon
•
VCloud
•
HP Cloud
•
Eucalyptus
•
…
Raffaele Di Fazio
November 2012 - 7
Amazon Web Services
Raffaele Di Fazio
November 2012 - 8
HP Cloud
Raffaele Di Fazio
November 2012 - 9
OpenStack
•
A scalable “operating system” for cloud computing.
•
It is used to control “compute, network, storage” resources.
•
A “compute” is any information processing resource (i.e. a VM).
•
It can be used to control cloud infrastructures. It is a software
suite.
•
This leads to multiple custom clouds ( see
http://www.openstack.org/user-stories/)
Raffaele Di Fazio
November 2012 - 10
Differences btw cloud providers
•
Interfaces
•
APIs
•
Costs
•
Way of managing the VMs (i.e. different functionalities)
•
Even the terminology used can be different.
•
GOAL: simplify this mess!
Raffaele Di Fazio
November 2012 - 11
Broker + OCCI + Proactive
Cloud
Provider
OCCI Server
Raffaele Di Fazio
ProActive
Broker
November 2012 - 12
Broker + OCCI + Proactive: 2nd architecture
Cloud
Provider
OCCI Server
Raffaele Di Fazio
Broker
ProActive
November 2012 - 13
Broker + OCCI + Proactive: expanded
OCCI Server
ProActive
Broker
PROCCI
jOCCI
Cloud
connectors
Raffaele Di Fazio
November 2012 - 14
JOCCI: AN OCCI JAVA
LIBRARY
Raffaele Di Fazio
November 2012 - 15
Dictionary… pay attention!
•
OCCI has a particular naming convention we must follow.
•
There are very common words that are keywords when
speaking about OCCI.
•
Kind, Link, Resource, Attributes, Category are some of them.
•
Other classes are: Parser, Server, Model.
•
Please be careful!
Raffaele Di Fazio
November 2012 - 16
OCCI
•
OCCI: Open Cloud Computing Interface
•
It is a standard for interoperability between cloud platforms.
•
GOALS:
•
Interoperability: between cloud providers
•
Portability: avoid vendor lock-in
•
Integration: possibility to support multiple platforms
•
Extensibility
Raffaele Di Fazio
November 2012 - 17
OCCI continued
•
Currently focus on IaaS.
•
•
•
An extension to support PaaS, SaaS is possible.
It is a set of specifications:
•
Core: Model specification
•
Rendering: How to structure the OCCI requests
•
…
IN PRACTICE: RESTful protocol for cloud management tasks
Raffaele Di Fazio
November 2012 - 18
OCCI Core Model
Raffaele Di Fazio
November 2012 - 19
OCCI implementation – core
•
Main classes reflect the OCCI core model:
•
Category: basic classes to identify OCCI types
•
•
Kind: type identification system for all the Entities.
•
Mixin: extension mechanism for a Kind.
•
Action: …
Entity: abstract type of resource and link types
•
Resource: represent a concrete resource and represents
real world instances of VMs, etc.
•
Link: association between two resources.
Raffaele Di Fazio
November 2012 - 20
jOCCI
•
It is a OCCI server written in Java.
•
Born because of the necessity to replace occi4java
•
•
Unsupported, unmaintainable, ugly code.
Inspired by the design of rOCCI, a ruby based OCCI
implementation.
Raffaele Di Fazio
November 2012 - 21
jOCCI design goals
•
Be extensible
•
Model expressed by means of JSONs, defined at runtime.
•
Extendible, following OCCI principles.
•
No assumption on the backend (more about this later)
•
Only supporting OCCI core model by default
Raffaele Di Fazio
November 2012 - 22
jOCCI implementation
•
Made up of two components:
•
OCCI Core: contains the definitions of all the classes
representing the OCCI core specifications
•
OCCI Server: contains the server, the parser and all the
other classes with functionalities to handle OCCI
requests/responses.
•
This makes the development of the specification (CORE) and
the server, decoupled.
Raffaele Di Fazio
November 2012 - 23
jOCCI core – features
•
jOCCI implements only the core classes of the OCCI Model.
•
Rough example:
•
It defines what are the fields of the Kind class
•
It does NOT define which types of Kind we can use (i.e.
Compute)
•
This approach makes jOCCI independent from a specific
definition of the instances.
Raffaele Di Fazio
November 2012 - 24
jOCCI – Server
•
•
Developed using the following technologies:
•
Apache Tomcat
•
RESTEasy
•
Jackson (JSON parsing)
Completely independent of the backend implementation. This is
loaded at runtime (more about this later).
Raffaele Di Fazio
November 2012 - 25
jOCCI - Server
•
REST interfaces supporting HEAD, GET, POST, PUT, DELETE
HTTP methods.
•
OCCI requests are HTTP requests that can be expressed in
different formats.
•
Request formats: text/occi, text/plain, application/json, etc.
•
The server should be flexible enough to support these different
types.
Raffaele Di Fazio
November 2012 - 26
Example of OCCI request
•
curl -X POST --header 'Content-type:text/occi' --header 'XOCCI-Attribute: method=start'
http://localhost:8080/jocci/compute/8432c343-15ec-40ff-bb191a7062a1aa5b?action=start --header 'Category: start;
scheme="http://schemas.ogf.org/occi/infrastructure/compute/acti
on#"; class="action"' -u demo:demo
Raffaele Di Fazio
November 2012 - 27
Broker + OCCI + Proactive: an Expanded
view
OCCI Server
ProActive
Broker
PROCCI
jOCCI
Cloud
connectors
Raffaele Di Fazio
November 2012 - 28
Connecting to ProActive:
PROCCI
Raffaele Di Fazio
November 2012 - 29
PROCCI
•
Procci was created to be integrated with occi4java to allow
ProActive to process OCCI requests.
•
These requests are mainly intended to be used to manage
virtual machines.
•
The final goal of this interconnection is to be able to speak with
the broker.
Raffaele Di Fazio
November 2012 - 30
PROCCI
•
jOCCI parses OCCI requests.
•
Methods exposed by PROCCI are called directly by jOCCI.
•
Under the hood, a job is created and it is submitted to the
scheduler.
•
After the job is executed, a response is shown to the user
through jOCCI by means of HTTP response.
Raffaele Di Fazio
November 2012 - 31
PROCCI Connection
•
When jOCCI is started, it executes the setup phase.
•
In each Action class attach the method implemented by the
backend.
•
This allow us to plug the actions to be executed.
•
Does not force jOCCI to know the backend.
Raffaele Di Fazio
November 2012 - 32
PROCCI connection
Raffaele Di Fazio
November 2012 - 33
THE CONNECTOR PROJECT
Raffaele Di Fazio
November 2012 - 34
Broker + OCCI + Proactive: an Expanded
view
OCCI Server
ProActive
Broker
PROCCI
jOCCI
Cloud
connectors
Raffaele Di Fazio
November 2012 - 35
The connector project
•
We wanted to write several connectors to be able to connect to
multiple cloud providers.
•
Connectors are fundamental for the broker.
•
•
It must talk with the cloud service providers.
Technically they are built on top of APIs to connect to the cloud
providers.
•
Not much more to say here! 
Raffaele Di Fazio
November 2012 - 36
A complete example
•
A user submit a OCCI request to start an already created virtual
machine.
•
jOCCI receives the request. Once processed, it calls PROCCI.
•
PROCCI creates a job. The job is submitted to ProActive
scheduler.
•
The job is executed. A remote cloud provider is called using a
connector.
Raffaele Di Fazio
November 2012 - 37
That’s it!
Thank you!
Raffaele Di Fazio
November 2012 - 38
Download