Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to OpenStack Architecture (Grizzly...

Introduction to OpenStack Architecture (Grizzly Edition)

Presented at 2013 Spring OpenStack Summit (Portland).
Quick walk through of the architecture of OpenStack Grizzly and its key software components.

Avatar for Ken Pepple

Ken Pepple

April 16, 2013

Other Decks in Technology

Transcript

  1. About Me   CTO, Solinea   Former Director of Cloud

    Development, Internap Public Cloud   Author of O’Reilly “Deploying OpenStack”   Code contributor since Bexar   Twitter @ken_pepple   IRC kpepple 2
  2. Conceptual Architecture 3 Identity Dashboard Image Compute Object Storage Block

    Storage Network Provides UI for Provides UI for Provides UI for Provides UI for Provides UI for Provides Auth for Provides Auth for Provides Auth for Provides Auth for Provides Auth for Provides Auth for Provides volumes for Provide network connectivity for Stores images in Stores disk files in http://www.solinea.com
  3. OpenStack Basics   Everything is written in python   End

    users can interact through a common web interface (Horizon) or directly to each service through their API   All services authenticate through a common source   Individual services interact with each other through their public APIs *   Most daemons implemented WSGI middleware (Paste) –  Used extensively in OpenStack –  Configured through *-paste.ini files 4
  4. Grizzly Logical Architecture 5 OpenStack Object Store OpenStack Image Service

    OpenStack Compute OpenStack Dashboard OpenStack Identity Service OpenStack Compute API / Admin API keystone (service & admin APIs) nova-api (OS, EC2, Admin) nova-consoleauth nova-cert/ objectstore nova-console VNC/VMRC OpenStack Object API http://www.solinea.com Queue nova-compute nova-scheduler nova database OpenStack Compute API OpenStack Image API Horizon OpenStack Image API identity backend swift-proxy object container account object store account DB container DB OpenStack Object API HTTP(S) OpenStack Object API OpenStack Identity API OpenStack Identity API OpenStack Identity API Internet OpenStack Image API OpenStack Identity API OpenStack Image API catalog backend token backend OpenStack Identity API hypervisor libvirt, XenAPI, etc. HTTP(S) Amazon Web Services EC2 API OpenStack Network Service glance-api glance-registry glance database OpenStack Block Storage OpenStack Block Storage API cinder-api cinder-volume OpenStack Identity API quantum-server quantum plugin(s) OpenStack Identity API cinder-scheduler cinder database OpenStack Network API AMQP AMQP network provider OpenStack Block Storage API OpenStack Network API policy backend Queue OpenStack Network API quantum database quantum agent(s) volume provider (iSCSI, etc) nova-conductor memcached OpenStack Identity API ⁃ OpenStack Command Line Tools (Novaclient, Swiftclient, etc.) ⁃ Cloud Management Tools (Rightscale, Enstraius, etc.) ⁃ GUI tools (Cyberduck, iPhone client, etc.)
  5. Identity (“Keystone”)   Keystone provides a single point of integration

    for OpenStack policy, catalog, token and authentication.   keystone handles API requests as well as providing configurable catalog, policy, token and identity services.   Standard backends include LDAP or SQL, as well as Key Value Stores (KVS).   Most people will use this as a point of customization for their current authentication services. OpenStack Identity Service keystone (service & admin APIs) identity backend catalog backend token backend policy backend 6
  6. Dashboard (“Horizon”)   Django application that users can access in

    their web browser   Communicates with each OpenStack service through their API (and sometimes their admin API) OpenStack Dashboard Horizon HTTP(S) 7
  7. 8

  8. Object Storage (“Swift”) OpenStack Object Store swift-proxy object container account

    object store account DB container DB memcached 9   Stores and serves objects (files)   Employs object level replication to safeguard data   Accepts client requests via Objectstore API or HTTP from clients through swift-proxy   Maintains distributed account and container databases   Stores objects according the ring layout on filesystem with extended attributes (XFS, EXT4, etc.)
  9. Image Service (“Glance”)   glance-api accepts Image API calls for

    image discovery, image retrieval and image storage.   glance-registry stores, processes and retrieves metadata about images (size, type, etc.).   Database to store the image metadata.   A storage repository for the actual image files. In many deployments, this is OpenStack Swift OpenStack Image Service glance-api glance-registry glance database 10
  10. Compute (“Nova”) OpenStack Compute nova-api (OS, EC2, Admin) nova-consoleauth nova-cert/

    objectstore nova-console Queue nova-compute nova-scheduler nova database hypervisor libvirt, XenAPI, etc. nova-conductor 11   nova-api accepts and responds to end user compute API calls.   Supports OpenStack Compute API, Amazon's EC2 API and a special Admin API (for privileged users to perform administrative actions).   Initiates most of the orchestration activities (such as running an instance)   Enforces some policy (mostly quota checks)   Authentication is handled through middleware before getting to this daemon
  11. Nova Compute OpenStack Compute nova-api (OS, EC2, Admin) nova-consoleauth nova-cert/

    objectstore nova-console Queue nova-compute nova-scheduler nova database hypervisor libvirt, XenAPI, etc. nova-conductor 12   The nova-compute process is primarily a worker daemon that creates and terminates virtual machine instances via hypervisor's APIs (XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware, etc.).   The process by which it does so is fairly complex but the basics are simple: accept actions from the queue and then perform a series of system commands (like launching a KVM instance) to carry them out while updating state in the database.
  12. Nova Scheduler   The nova-schedule process is conceptually the simplest

    piece of code in OpenStack Nova: take a virtual machine instance request from the queue and determines where it should run (specifically, which compute server host it should run on). 13 def _schedule(self, context, topic, request_spec, filter_properties):! """Picks a host that is up at random."""! ! elevated = context.elevated()! hosts = self.hosts_up(elevated, topic)! if not hosts:! msg = _("Is the appropriate service running?")! raise exception.NoValidHost(reason=msg)! ! hosts = self._filter_hosts(request_spec, hosts, filter_properties)! if not hosts:! msg = _("Could not find another compute")! raise exception.NoValidHost(reason=msg)! ! return hosts[int(random.random() * len(hosts))]!
  13. Block Storage (“Cinder”)   cinder-api accepts API requests and routes

    them to cinder-volume for action.   cinder-volume acts upon the requests by reading or writing to the Cinder database to maintain state, interacting with other processes (like cinder-scheduler) through a message queue and directly upon block storage providing hardware or software. It can interact with a variety of storage providers through a driver architecture. Currently, there are drivers for IBM, SolidFire, NetApp, Nexenta, Zadara, linux iSCSI and other storage providers.   Much like nova-scheduler, the cinder- scheduler daemon picks the optimal block storage provider node to create the volume on. 14 OpenStack Block Storage cinder-api cinder-volume cinder-scheduler cinder database volume provider
  14. Networking (“Quantum”) OpenStack Network Service quantum-server quantum plugin(s) network provider

    Queue quantum database quantum agent(s)   quantum-server accepts API requests and then routes them to the appropriate quantum plugin for action.   Quantum ships with plugins and agents for: –  Cisco virtual and physical switches –  Nicira NVP product –  NEC OpenFlow products –  Open vSwitch –  Linux bridging –  Ryu Network Operating System –  Midokua   The common agents are L3 (layer 3), DHCP (dynamic host IP addressing) and the specific plug-in agent. 15
  15. Future Projects (Havana Release)   Ceilometer is a metering project.

    The project offers metering. Metering lets you know what actions have taken place, rating enables pricing and line items, and billing gathers the line items to create a bill to send to the consumer and collect payment.   Heat provides a REST API to orchestrate multiple cloud applications implementing standards such as AWS CloudFormation. 16