Introduction to OpenStack

A journey into complexity

Antonio Messina - antonio.s.messina@gmail.com

Tyanko Aleksiev - tyanko.alexiev@gmail.com

Jens-Christian Fischer jens-christian.fischer@switch.ch

Clouds

http://www.flickr.com/photos/paulsgarden/3479326045

Let me tell you a story

Trudi Gerster, 1919 - 2013

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)

Links

License

Creative Commons License
OpenStack - a journey into complexity by Jens-Christian Fischer, SWITCH is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.