Clouds
http://www.flickr.com/photos/paulsgarden/3479326045
In a land, far, far away
In the times, when wishes would get you absolutely nothing
Little Joe Doe wanted to start a VM
And he had heard about this newfangled Cloud thing
And he thought: "This is easy, I will just start a VM"
And he did
And life was good
And he lived happily ever after
until...
He wanted to understand what was happening
So he went to the Internet
And looked at the OpenStack website
And read
And he got confused
And read some more
And got some more confused
Not just fluffy
http://www.flickr.com/photos/paulsgarden/3479326045
http://www.flickr.com/photos/9926320@N05/2359829594
Big and Scary
http://www.flickr.com/photos/34534185@N00/8656549092
Seems simple
Logically
Major Blocks
- Compute
- Storage
- Networking
- Dashboard
- Shared Services
Compute
Nova
Provision and manage large networks of virtual machines
Storage
Object and Block storage for use with servers and applications.
Swift
Object storage to store and retrieve files.
Cinder
Provides persistent block storage for VMs (think mountable disks)
Networking
Pluggable, scalable, API-driven network and IP management
Nova Network
"simple" daemon for IP, NAT and Firewall Management
Neutron
Allows user to create networks and attach interfaces to them. (we will graciously skip Neutron
in this class, otherwise we'd be here for another 3 days)
Dashboard
Horizon
Graphical interface to access, provision and automate cloud-based resources
Shared Services
Keystone
Identity (authentication and authorisation) and Image services
MySQL
Meta Data storage for all services
RabbitMQ
Queue that handles synchronisation between components
The life of a VM Request
- User logs into Horizon and starts a VM create
- Keystone authenticates and authorizes
- Nova starts provisioning and creates DB record
- Nova schedulers finds appropriate host
- Nova network setups network, NAT and Firewall rules
- Cinder provides block device
- Image URI comes from Glance
- Swift retrieves the image
- Finally VM is rendered
The life of a VM Request
- User logs into Horizon and starts a VM create
- Keystone authenticates and authorizes
- Nova starts provisioning and creates DB record
- Nova schedulers finds appropriate host
- Nova network setups network, NAT and Firewall rules
- Cinder provides block device
- Image URI comes from Glance
- Swift retrieves the image
- Finally VM is rendered
Keystone
Provides identity services, authentication and authorisation
- Authenticate users and issue tokens for access to services
- Store users and tenants for role-based access control
- Catalog of services (and API endpoints)
- Create policies across users and services
keystone handles API requests and has configurable catalog, policy token and identity services
Each keystone function has a pluggable backend and can be customized to use other backends (LDAP, ...)
Glance
Centralized storage of images of virtual machines
- Store public/private images that are used to start instances
- Users can query and list available images
- Deliver images to Nova to start instances
- Store snapshots from running instances as backup
- glance-api: accepts API calls
- glance-registry: stores and processes metadata about images
- SQL database to store metadata
- Storage repository (usually Swift, but also filesystems, RADOS, S3 and others)
Swift
Designed to provide large scale storage of data that can be accessed via APIs. Distributed storage,
storing multiple copies of each object.
- Stores & retrieves objects (files)
- Sets & modifies metadata (tags)
- Versioning of objects
- Serve static web pages/objects via HTTP
Distributed architecture to prevent single point of failures
Can work with a large number of storage backends
- swift-proxy-server: handles API and HTTP requests
- Account servers
- Container servers
- Object storage servers
Cinder
Persistent block storage for instances
- Create, modify and delete volumes
- Create snapshots or backups of volumes
- Query volume status and metadata
- cinder-api: receives api request and routes them to
- cinder-volume who acts on these requests
- cinder database for metadata storage
- interfaces to a large number of block storage provider hard and software
- cinder-scheduler: selects the best storage option
Horizon
Horizon is the user and admin facing admin UI. It is a modular Django web application.
User features
- Create, start, stop, destroy VMs
- Create, start, stop, destroy volumes
- Image and snapshot management
- Security: Access keys, Firewall rules
Admin features
- Flavors
- Projects (user groups)
- User management
- Usage information
Nova Network
A deamon that performs network related tasks (assigning floating IPs, setting up firewall and
NAT rules, setting up bridging interfaces)
Neutron
Starting in Grizzly, the neutron service (formerly known as Quantum) handles networking tasks.
Allows End users to define networks and attach server interfaces to them
Neutron interfaces with actual networking hardware from a variety of vendors
Compute
The most complicated component of them all.
- Start, resize, stop and query VMs (instances)
- Assign/remove public IP addresses
- Attach/detach block storage
- Add/modify/delete security groups
- VNC console
- Snapshot instances
Consists of multiple sub-components:
- nova-admin: set of daemons that accept end user computer API calls. (OpenStack Compute and EC2 compatible)
- nova-compute: daemon that creates/terminates VMs using the underlying hypervisor API (Xen, KVM, VMWare, Hyper-V)
- nova-scheduler: decide on which host a VM should run
- nova-conductor: mediates access to database (increased security)
- Queue as the communication mechanism (use an AMQP compatible queue like RabbitMQ)
- SQL database stores build-time and run-time state
- Console access
MySQL
or another SQL database - commonly used is PostgreSQL (or SQLite for development/test)
Components like nova, cinder, glance, keystone store information in their respective databases.
RabbitMQ
Message queue - based on the open AMQP standard
The communication glue between different OpenStack components
http://www.rabbitmq.com/
Details
It just works (tm)