{"id":3606,"date":"2014-09-25T13:26:30","date_gmt":"2014-09-25T05:26:30","guid":{"rendered":"http:\/\/rmohan.com\/?p=3606"},"modified":"2014-09-25T15:46:58","modified_gmt":"2014-09-25T07:46:58","slug":"openstack-grizzly-architecture","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=3606","title":{"rendered":"OpenStack Grizzly Architecture"},"content":{"rendered":"<p>As OpenStack has continued to mature, it has become more complicated in some ways but radically simplified in others. From a deployers view, each service has become easier to deploy with more sensible defaults and the proliferations of cloud distributions. However, the architects view of OpenStack has actually gotten more complicated \u2013 new services have been added and new ways of integrating them are now feasible.<\/p>\n<p>As an aid to architects that are new to OpenStack, this post updates my<span class=\"Apple-converted-space\">\u00a0<\/span><a href=\"http:\/\/ken.pepple.info\/openstack\/2012\/09\/25\/openstack-folsom-architecture\/\">OpenStack Folsom Architecture<\/a>blog and revisits my<span class=\"Apple-converted-space\">\u00a0<\/span><a href=\"http:\/\/www.solinea.com\/2013\/04\/17\/openstack-summit-intro-to-openstack-architecture-grizzly-edition\/\">Intro to OpenStack Architecture (Grizzly Edition)<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>presentation from Portland, with a few clarfications and updates.<\/p>\n<p>&nbsp;<\/p>\n<p>1.OpenStack Introduction<\/p>\n<p>OpenStack and Rackspace is a cooperative research and development of the United States National Aeronautics and Space Administration to Apache licensed, and is a free software and open source projects.<\/p>\n<p>OpenStack is a cloud platform for project management, it is not a software.<span class=\"Apple-converted-space\">\u00a0<\/span>The portfolio consists of several main components up to complete some specific work.<\/p>\n<p>OpenStack is designed to provide software for public and private cloud construction and management of open source projects.<span class=\"Apple-converted-space\">\u00a0<\/span>It has more than 130 community enterprises and 1350 developers, these organizations and individuals will be OpenStack as infrastructure as a service (referred to as IaaS) generic front-end resources.<span class=\"Apple-converted-space\">\u00a0<\/span>The primary task of the project is to simplify OpenStack cloud deployment process and bring its good scalability.<span class=\"Apple-converted-space\">\u00a0<\/span>This paper aims to provide the necessary guidance information to help you use the front-end to set up and manage OpenStack own public or private cloud.<\/p>\n<p>OpenStack is jointly developed by Rackspace and NASA&#8217;s cloud computing platform to help service providers and enterprises to achieve similar internal Amazon EC2 and S3 cloud infrastructure services (Infrastructure as a Service, IaaS).<span class=\"Apple-converted-space\">\u00a0<\/span>OpenStack consists of two main modules: Nova and Swift, the former is a NASA developed virtual server deployment and business computing module; latter is developed, distributed Rackspace cloud storage module, the two can be used together, can also be used separately.<span class=\"Apple-converted-space\">\u00a0<\/span>OpenStack is an open source project, in addition to the strong support of Rackspace and NASA, but after that there including Dell, Citrix, Cisco, Canonical these heavyweights contribution and support, development speed is very fast, has replaced another industry-leading open source cloud platform Eucalyptus trend.<\/p>\n<h2 id=\"openstackcomponents\">OpenStack Components<\/h2>\n<p>There are currently seven core components of OpenStack: Compute, Object Storage, Identity, Dashboard, Block Storage, Network and Image Service. Let\u2019s look at each in turn:<\/p>\n<ul class=\" list-paddingleft-2\" style=\"font: 14px\/28px ??, 'Arial Narrow', arial, serif; list-style: none; margin: 0px; padding: 0px 0px 0px 20px; color: #555555; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-stroke-width: 0px;\">\n<li>Object Store (codenamed \u201c<a href=\"http:\/\/swift.openstack.org\/\">Swift<\/a>\u201c) allows you to store or retrieve files (but not mount directories like a fileserver). Several companies provide commercial storage services based on Swift. These include KT, Rackspace (from which Swift originated) and Hewlett-Packard. Swift is also used internally at many large companies to store their data.<\/li>\n<li>Image Store (codenamed \u201c<a href=\"http:\/\/glance.openstack.org\/\">Glance<\/a>\u201c) provides a catalog and repository for virtual disk images. These disk images are mostly commonly used in OpenStack Compute.<\/li>\n<li>Compute (codenamed \u201c<a href=\"http:\/\/nova.openstack.org\/\">Nova<\/a>\u201c) provides virtual servers upon demand.<span class=\"Apple-converted-space\">\u00a0<\/span><a href=\"http:\/\/www.rackspace.com\/\">Rackspace<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>and<a href=\"https:\/\/www.hpcloud.com\/\">HP<\/a><span class=\"Apple-converted-space\">\u00a0<\/span>provide commercial compute services built on Nova and it is used internally at companies like Mercado Libre, Comcast, Best Buy and NASA (where it originated).<\/li>\n<li>Dashboard (codenamed \u201c<a href=\"http:\/\/horizon.openstack.org\/\">Horizon<\/a>\u201c) provides a modular web-based user interface for all the OpenStack services. With this web GUI, you can perform most operations on your cloud like launching an instance, assigning IP addresses and setting access controls.<\/li>\n<li>Identity (codenamed \u201c<a href=\"http:\/\/keystone.openstack.org\/\">Keystone<\/a>\u201c) provides authentication and authorization for all the OpenStack services. It also provides a service catalog of services within a particular OpenStack cloud.<\/li>\n<li>Network (which used to named \u201c<a href=\"http:\/\/quantum.openstack.org\/\">Quantum<\/a>\u201d but is in the process of being renamed due to a trademark issue) provides \u201cnetwork connectivity as a service\u201d between interface devices managed by other OpenStack services (most likely Nova). The service works by allowing users to create their own networks and then attach interfaces to them. Quantum has a pluggable architecture to support many popular networking vendors and technologies.<\/li>\n<li>Block Storage (codenamed \u201c<a href=\"http:\/\/cinder.openstack.org\/\">Cinder<\/a>\u201c) provides persistent block storage to guest VMs. This project was born from code originally in Nova (the<span class=\"Apple-converted-space\">\u00a0<\/span><code>nova-volume<\/code><span class=\"Apple-converted-space\">\u00a0<\/span>service that has been depricated). While this was originally a block storage only service,<span class=\"Apple-converted-space\">\u00a0<\/span><a href=\"http:\/\/www.stackgeek.com\/blog\/kmadac\/post\/netappnfsdriver-in-folsom\">it has been extended to NFS shares<\/a>.<\/li>\n<\/ul>\n<p>In addition to these core projects, there are also a number of non-core projects that will be included in future OpenStack releases.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3611\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-1.jpg\" alt=\"openstack-1\" width=\"916\" height=\"412\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-1.jpg 916w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-1-300x134.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-1-150x67.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-1-400x179.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-1-900x404.jpg 900w\" sizes=\"(max-width: 916px) 100vw, 916px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>(1) Calculation: NOVA<\/p>\n<p>(2) Object Storage: SWIFT<\/p>\n<p>(3) Mirror: GLANCE<\/p>\n<p>(4) Identity: KEYSTONE<\/p>\n<p>(5) Network &amp; Address Management: NEUTRON<\/p>\n<p>(6) block storage: CINDER<\/p>\n<p>(7) UI interface: HORIZON<\/p>\n<p>(8) Measurement: CEILOMETER<\/p>\n<p>(9) ASSIGNMENT: HEAT<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-2.jpg\">\u00a0<\/a><\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3616\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch.png\" alt=\"openstack_havana_conceptual_arch\" width=\"859\" height=\"782\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch.png 859w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch-300x273.png 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch-150x136.png 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack_havana_conceptual_arch-400x364.png 400w\" sizes=\"(max-width: 859px) 100vw, 859px\" \/><\/a><\/p>\n<h2 id=\"conceptualarchitecture\">Conceptual Architecture<\/h2>\n<p>The OpenStack project as a whole is designed to \u201cdeliver(ing) a massively scalable cloud operating system.\u201d To achieve this, each of the constituent services are designed to work together to provide a complete Infrastructure as a Service (IaaS). This integration is facilitated through public application programming interfaces (APIs) that each service offers (and in turn can consume). While these APIs allow each of the services to use another service, it also allows an implementer to switch out any service as long as they maintain the API. These are (mostly) the same APIs that are available to end users of the cloud.<\/p>\n<p>Conceptually, you can picture the relationships between the services as so:<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-3607\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2.jpg\" alt=\"openstack-arch-grizzly-conceptual-v2\" width=\"1290\" height=\"785\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2.jpg 1536w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2-300x182.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2-1024x623.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2-150x91.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2-400x243.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-conceptual-v2-900x547.jpg 900w\" sizes=\"(max-width: 1290px) 100vw, 1290px\" \/><\/a><\/p>\n<p>Dashboard provides a web front end to the other OpenStack services<br \/>\nCompute stores and retrieves virtual disks (\u201cimages\u201d) and associated metadata in the Image Store (\u201cGlance\u201d)<br \/>\nNetwork provides virtual networking for Compute.<br \/>\nBlock Storage provides storage volumes for Compute.<br \/>\nImage Store can store the actual virtual disk files in the Object Store<br \/>\nAll the services authenticate with Identity<br \/>\nThis is a stylized and simplified view of the architecture, assuming that the implementer is using all of the services together in the most common configuration. However, OpenStack does not mandate an all-or-nothing approach. Many implementers only deploy the pieces that they need. For example, Swift is a popular object store for cloud service providers, even if they deploy another cloud compute infrastructure.<\/p>\n<p>The diagram also only shows the \u201coperator\u201d side of the cloud \u2014 it does not picture how consumers of the cloud may actually use it. For example, many users will access object storage heavily (and directly).<\/p>\n<p>Logical Architecture<\/p>\n<p>As you can imagine, the logical architecture is far more complicated than the conceptual architecture shown above. As with any service-oriented architecture, diagrams quickly become \u201cmessy\u201d trying to illustrate all the possible combinations of service communications. The diagram below, illustrates the most common architecture of an OpenStack-based cloud. However, as OpenStack supports a wide variety of technologies, it does not represent the only architecture possible.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-3608\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2.jpg\" alt=\"openstack-arch-grizzly-logical-v2\" width=\"1081\" height=\"770\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2.jpg 1536w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2-300x213.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2-1024x729.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2-150x106.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2-400x284.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/openstack-arch-grizzly-logical-v2-900x641.jpg 900w\" sizes=\"(max-width: 1081px) 100vw, 1081px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>This picture is consistent with the conceptual architecture above in that:<\/p>\n<p>End users interact through a common web interface or directly to each service through their API<br \/>\nAll services authenticate through a common source (facilitated through Keystone)<br \/>\nIndividual services interact with each other through their APIs (except where privileged administrator commands are necessary) \u2014 including the user\u2019s web interface<br \/>\nIn the sections below, we\u2019ll delve into the architecture for each of the services.<\/p>\n<p>Dashboard<br \/>\nHorizon is a modular Django web application that provides an end user and cloud operator interface to OpenStack services.<br \/>\n<a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3609\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot.jpg\" alt=\"horizon-grizzly-screenshot\" width=\"1136\" height=\"680\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot.jpg 1136w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot-300x179.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot-1024x612.jpg 1024w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot-150x89.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot-400x239.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/09\/horizon-grizzly-screenshot-900x538.jpg 900w\" sizes=\"(max-width: 1136px) 100vw, 1136px\" \/><\/a><\/p>\n<p>he interface has user screens for:<\/p>\n<p>Quota and usage information<br \/>\nInstances to operate cloud virtual machines<br \/>\nVolume management to control creation, deletion and connectivity to block storage<br \/>\nImage and snapshot to upload and control virtual images, which are used to backup and boot new instances<br \/>\nAccess and security to manage keypairs and security groups (firewall rules)<br \/>\nIn addition to the user screens, it also provides an interface for cloud operators. The operator interface sees across the entire cloud and adds some configuration focused screens such as:<\/p>\n<p>Flavors to define service catalog offerings of CPU, memory and boot disk storage<br \/>\nProjects to provide logical groups of user accounts<br \/>\nUsers to administer user accounts<br \/>\nSystem Info to view services running in the cloud and quotas applied to projects<br \/>\nThe Grizzly edition of Horizon adds a few new features as well as significant refactoring to the user experience:<\/p>\n<p>Networking (see the new network topology diagrams)<br \/>\nDirect image upload to Glance<br \/>\nSupport for flavor extra specs<br \/>\nMigrate instances to other compute hosts<br \/>\nUser experience improvements<br \/>\nThe Horizon architecture is fairly simple. Horizon is usually deployed via mod_wsgi in Apache. The code itself is separated into a reusable python module with most of the logic (interactions with various OpenStack APIs) and presentation (to make it easily customizable for different sites).<\/p>\n<p>From a network architecture point of view, this service will need to be customer accessible as well as be able to talk to each service\u2019s public APIs. If you wish to use the administrator functionality (i.e. for other services), it will also need connectivity to their Admin API endpoints (which should not be customer accessible).<\/p>\n<p>Compute<br \/>\nNova is the most complicated and distributed component of OpenStack. A large number of processes cooperate to turn end user API requests into running virtual machines. Among Nova more prominent features are:<\/p>\n<p>Starting, resizing, stopping and querying virtual machines (\u201cinstances\u201d)<br \/>\nAssigning and removing public IP addresses<br \/>\nAttaching and detaching block storage<br \/>\nAdding, modifying and deleting security groups<br \/>\nShow instance consoles<br \/>\nSnapshot running instances<br \/>\nThere are several changes to the architecture in this release. These changes include the depreciation of nova-network and nova-volume as well as the decoupling of nova-compute from the database (through the no-compute-db feature). All of these changes are all optional (the old code is still available to be used), but are slated to disappear soon.<\/p>\n<p>Below is a list of these processes and their functions:<\/p>\n<p>nova-api is a family of daemons (nova-api, nova-api-os-compute, nova-api-ec2, nova-api-metadata or nova-api-all) that accept and respond to end user compute API calls. It supports OpenStack Compute API, Amazon\u2019s EC2 API and a special Admin API (for privileged users to perform administrative actions). It also initiates most of the orchestration activities (such as running an instance) as well as enforces some policy (mostly quota checks). Different daemons allow Nova to implement different APIs (Amazon EC2, OpenStack Compute, Metadata) or combination of APIs (nova-api starts both the EC2 and OpenStack APIs).<br \/>\nThe nova-compute process is primarily a worker daemon that creates and terminates virtual machine instances via hypervisor\u2019s APIs (XenAPI for XenServer\/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware, etc.). New to the Grizzly release is the return of Hyper-V (thanks to the Cloudbase Solutions guys for the comment). 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 through nova-conductor. Please note that the use of nova-conductor is optional in this release, but does greatly increase security.<br \/>\nThe nova-scheduler 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). In practice, it is now one of the most complex.<br \/>\nA new service called nova-conductor has been added to this release. It mediates access to the database for other daemons (only nova-compute in this release) to provide greater security.<br \/>\nThe queue provides a central hub for passing messages between daemons. This is usually implemented with RabbitMQ today, but could be any AMPQ message queue (such as Apache Qpid), or Zero MQ.<br \/>\nThe SQL database stores most of the build-time and run-time state for a cloud infrastructure. This includes the instance types that are available for use, instances in use, networks available and projects. Theoretically, OpenStack Nova can support any database supported by SQL-Alchemy but the only databases currently being widely used are sqlite3 (only appropriate for test and development work), MySQL and PostgreSQL.<br \/>\nNova also provides console services to allow end users to access their virtual instance\u2019s console through a proxy. This involves several daemons (nova-console, nova-xvpvncproxy, nova-spicehtml5proxy and nova-consoleauth).<br \/>\nNova interacts with many other OpenStack services: Keystone for authentication, Glance for images and Horizon for web interface. The Glance interactions are central. The API process can upload and query Glance while nova-compute will download images for use in launching images.<\/p>\n<p>Object Store<br \/>\nOpenStack\u2019s Object Store (\u201cSwift\u201d) is designed to provide large scale storage of data that is accessible via APIs. Unlike a traditional file server, it is completely distributed, storing multiple copies of each object to achieve greater availability and scalability. Swift provides the following user functionality:<\/p>\n<p>Stores and retrieves objects (files)<br \/>\nSets and modifies metadata on objects (tags)<br \/>\nVersions objects<br \/>\nServe static web pages and objects via HTTP. In fact, the diagrams in this blog post are being served out of Rackspace\u2019s Swift service.<br \/>\nThe swift architecture is very distributed to prevent any single point of failure as well as to scale horizontally. It includes the following components:<\/p>\n<p>Proxy server (swift-proxy-server) accepts incoming requests via the OpenStack Object API or just raw HTTP. It accepts files to upload, modifications to metadata or container creation. In addition, it will also serve files or container listing to web browsers. The proxy server may utilize an optional cache (usually deployed with memcache) to improve performance.<br \/>\nAccount servers manage accounts defined with the object storage service.<br \/>\nContainer servers manage a mapping of containers (i.e folders) within the object store service.<br \/>\nObject servers manage actual objects (i.e. files) on the storage nodes.<br \/>\nThere are also a number of periodic process which run to perform housekeeping tasks on the large data store. The most important of these is the replication services, which ensures consistency and availability through the cluster. Other periodic processes include auditors, updaters and reapers. Authentication for the object store service is handled through configurable WSGI middleware (which will usually be Keystone).<\/p>\n<p>To learn more about Swift, head over to the SwiftStack website and read their OpenStack Swift Architecture.<\/p>\n<p>Image Store<br \/>\nOpenStack Image Store centralizes virtual images for users and other cloud services:<\/p>\n<p>Stores public and private images that users can utilize to start instances<br \/>\nUsers can query and list available images for use<br \/>\nDelivers images to Nova to start instances<br \/>\nSnapshots from running instances can be stored so that virtual machines can be backed<br \/>\nThe Glance architecture has stayed relatively stable since the Cactus release.<\/p>\n<p>glance-api accepts Image API calls for image discovery, image retrieval and image storage.<br \/>\nglance-registry stores, processes and retrieves metadata about images (size, type, etc.).<br \/>\nA database to store the image metadata. Like Nova, you can choose your database depending on your preference (but most people use MySQL or SQlite).<br \/>\nA storage repository for the actual image files. In the diagram above, Swift is shown as the image repository, but this is configurable. In addition to Swift, Glance supports normal filesystems, RADOS block devices, Amazon S3 and HTTP. Be aware that some of these choices are limited to read-only usage.<br \/>\nThere are also a number of periodic process which run on Glance to support caching. The most important of these is the replication services, which ensures consistency and availability through the cluster. Other periodic processes include auditors, updaters and reapers.<\/p>\n<p>As you can see from the diagram in the Conceptual Architecture section, Glance serves a central role to the overall IaaS picture. It accepts API requests for images (or image metadata) from end users or Nova components and can store its disk files in the object storage service, Swift.<\/p>\n<p>Identity<br \/>\nKeystone provides a single point of integration for OpenStack policy, catalog, token and authentication:<\/p>\n<p>Authenticate users and issue tokens for access to services<br \/>\nStore users and tenants for a role-based access control (RBAC)<br \/>\nProvides a catalog of the services (and their API endpoints) in the cloud<br \/>\nCreate policies across users and services<br \/>\nArchitecturally, Keystone is very simple:<\/p>\n<p>keystone handles API requests as well as providing configurable catalog, policy, token and identity services.<br \/>\nEach Keystone function has a pluggable backend which allows different ways to use the particular service. Most support standard backends like LDAP or SQL, as well as Key Value Stores (KVS).<br \/>\nMost people will use this as a point of customization for their current authentication services.<\/p>\n<p>Network<br \/>\nQuantum provides \u201cnetwork connectivity as a service\u201d between interface devices<br \/>\nmanaged by other OpenStack services (most likely Nova). It allows users to:<\/p>\n<p>Users can create their own networks and then attach server interfaces to them<br \/>\nPluggable backend architecture lets users take advantage of commodity gear or vendor supported equipment<br \/>\nExtensions allow additional network services like load balancing<br \/>\nLike many of the OpenStack services, Quantum is highly configurable due to it\u2019s<br \/>\nplug-in architecture. These plug-ins accommodate different networking equipment<br \/>\nand software. As such, the architecture and deployment can vary dramatically.<\/p>\n<p>quantum-server accepts API requests and then routes them to the<br \/>\nappropriate quantum plugin for action.<br \/>\nQuantum plugins and agents perform the actual work such as plugging and<br \/>\nunplugging ports, creating networks or subnets and IP addressing. These<br \/>\nplugins and agents differ depending on the vendor and technologies used in the<br \/>\nparticular cloud. Quantum ships with plugins and agents for: Cisco virtual and<br \/>\nphysical switches, Nicira NVP product, NEC OpenFlow products, Open vSwitch,<br \/>\nLinux bridging and the Ryu Network Operating System. Midokua also provides a plug-in for Quantum integration. The common agents are L3 (layer 3), DHCP (dynamic host IP addressing) and vendor specific plug-in agent(s).<br \/>\nMost Quantum installations will also make use of a messaging queue to route<br \/>\ninformation between the quantum-server and various agents as well as a<br \/>\ndatabase to store networking state for particular plugins.<br \/>\nQuantum will interact mainly with Nova, where it will provide networks and<br \/>\nconnectivity for its instances. Florian Otel has written very thorough article on implementing Open vSwitch is you are looking for an example of Quantum in action.<\/p>\n<p>Block Storage<br \/>\nCinder separates out the persistent block storage functionality that was<br \/>\npreviously part of Openstack Compute (in the form of nova-volume) into it\u2019s own<br \/>\nservice. The OpenStack Block Storage API allows for manipulation of volumes,<br \/>\nvolume types (similar to compute flavors) and volume snapshots:<\/p>\n<p>Create, modify and delete volumes<br \/>\nSnapshot or backup volumes<br \/>\nQuery volume status and metadata<br \/>\nIt\u2019s architecture follows the Quantum model, which provides for a northbound API and vendor plugins underneath it.<\/p>\n<p>cinder-api accepts API requests and routes them to cinder-volume<br \/>\nfor action.<br \/>\ncinder-volume acts upon the requests by reading or writing to the<br \/>\nCinder database to maintain state, interacting with other processes (like<br \/>\ncinder-scheduler) through a message queue and directly upon block<br \/>\nstorage providing hardware or software. It can interact with a variety of<br \/>\nstorage providers through a driver architecture. Currently, there are included drivers for IBM (Xiv, Storwize and SVC), SolidFire, Scality, Coraid appliances, RADOS block storage (Ceph), Sheepdog, NetApp, Windows Server 2012 iSCSI, HP (Lefthand and 3PAR), Nexenta appliances, Huawei (T series and Dorado storage systems), Zadara VPSA, Red Hat\u2019s GlusterFS, EMC (VNX and VMAX arrays), Xen and linux iSCSI.<br \/>\nMuch like nova-scheduler, the cinder-scheduler daemon picks the optimal<br \/>\nblock storage provider node to create the volume on.<br \/>\ncinder-backup is a new service that backs up the data from a volume (not a full snapshot) to a backend service. Currently, the only shipping backend service is Swift.<br \/>\nCinder deployments will also make use of a messaging queue to route<br \/>\ninformation between the cinder processes as well as a database to store volume state.<br \/>\nLike Quantum, Cinder will mainly interact with Nova, providing volumes for its<br \/>\ninstances.<\/p>\n<p>Future Projects<br \/>\nIn the next version of OpenStack (\u201cHavana\u201d which is due in the Fall of 2013), two new projects will be brought into the fold:<\/p>\n<p>Ceilometer is a metering project. The project offers metering information and the ability to code more ways to know what has happened on an OpenStack cloud. While it provides metering, it is not a billing project. A full billing solution requires metering, rating, and billing. 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. For users that also want a billing package, BillingStack is another open source project that provides payment gateway and other billing features. Ceilometer is available as a preview now.<br \/>\nHeat provides a REST API to orchestrate multiple cloud applications implementing standards such as AWS CloudFormation.<br \/>\nLooking beyond the \u201cHavana\u201d release, OpenStack is slated to see the addition of two more projects in the Spring of 2014 (for the newly named \u201cIcehouse\u201d release):<\/p>\n<p>Reddwarf is a database as a service offering that provides MySQL databases within OpenVZ containers upon demand.<br \/>\nIronic is the aptly named project that uses OpenStack to deploy bare metal servers instead of virtualized cloud instances.<br \/>\nThere are also a number of related but unofficial projects:<\/p>\n<p>Moniker that provides DNS-as-a-service for OpenStack<br \/>\nMarconi which is a message queueing service<br \/>\nSavanna to provision Hadoop clusters on OpenStack<br \/>\nMurano that allows a non-experienced user to deploy reliable Windows based environments<br \/>\nConvection is a task or workflow service to execute command sequences or long running jobs<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As OpenStack has continued to mature, it has become more complicated in some ways but radically simplified in others. From a deployers view, each service has become easier to deploy with more sensible defaults and the proliferations of cloud distributions. However, the architects view of OpenStack has actually gotten more complicated \u2013 new services have [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3606"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3606"}],"version-history":[{"count":6,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3606\/revisions"}],"predecessor-version":[{"id":3618,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3606\/revisions\/3618"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}