a93a74daaa
GUI Label ID's ... warning for other commiters, make sure that the images have different ID's if you are copy pasting the docs for refactoring. Need to get some text for Glance Conceptual Section, should be able to finish with Controller Node Installation and Network Node Concepts by the end of the day. b/p training-manuals Change-Id: I2d2f43d74c39e9ffeb9d7a56b83dcef182a284be
1129 lines
52 KiB
XML
1129 lines
52 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
|
||
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
||
xml:id="associate-getting-started">
|
||
<title>Getting Started</title>
|
||
<para>
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>Knowledge and skills</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Materials and equipment</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>About OpenStack</para>
|
||
<para>OpenStack is a cloud operating system that controls large
|
||
pools of compute, storage, and networking resources throughout a
|
||
datacenter, all managed through a dashboard that gives
|
||
administrators control while empowering their users to provision
|
||
resources through a web interface.</para>
|
||
<para>OpenStack is a global collaboration of developers and cloud
|
||
computing technologists producing the ubiquitous open source cloud
|
||
computing platform for public and private clouds. The project aims
|
||
to deliver solutions for all types of clouds by being</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>simple to implement</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>massively scalable</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>feature rich.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>To check out more information on OpenStack visit <link
|
||
xlink:href="http://goo.gl/Ye9DFT"
|
||
>http://goo.gl/Ye9DFT</link></para>
|
||
<para><guilabel> OpenStack Foundation :</guilabel></para>
|
||
<para>The OpenStack Foundation, established September 2012, is an
|
||
independent body providing shared resources to help achieve the
|
||
OpenStack Mission by Protecting, Empowering, and Promoting
|
||
OpenStack software and the community around it, including users,
|
||
developers and the entire ecosystem. For more information visit
|
||
http://goo.gl/3uvmNX.</para>
|
||
<para><guilabel> Who's behind OpenStack? </guilabel></para>
|
||
<para>Founded by Rackspace Hosting and NASA, OpenStack has grown
|
||
to be a global software community of developers collaborating on
|
||
a standard and massively scalable open source cloud operating
|
||
system. The OpenStack Foundation promotes the development,
|
||
distribution and adoption of the OpenStack cloud operating
|
||
system. As the independent home for OpenStack, the Foundation
|
||
has already attracted more than 7,000 individual members from
|
||
100 countries and 850 different organizations, secured more than
|
||
$10 million in funding and is ready to fulfill the OpenStack
|
||
mission of becoming the ubiquitous cloud computing platform.
|
||
Checkout <link xlink:href="http://goo.gl/BZHJKd">http://goo.gl/BZHJKd</link>for more on the same.</para>
|
||
<figure>
|
||
<title>Nebula (NASA)</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image23.jpg"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>The goal of the OpenStack Foundation is to serve developers,
|
||
users, and the entire ecosystem by providing a set of shared
|
||
resources to grow the footprint of public and private OpenStack
|
||
clouds, enable technology vendors targeting the platform and
|
||
assist developers in producing the best cloud software in the
|
||
industry.</para>
|
||
<para><guilabel>Who uses OpenStack?</guilabel></para>
|
||
<para>Corporations, service providers, VARS, SMBs, researchers,
|
||
and global data centers looking to deploy large-scale cloud
|
||
deployments for private or public clouds leveraging the support
|
||
and resulting technology of a global open source community. And
|
||
this is just two years into OpenStack, its new, its yet to
|
||
mature and has immense possibilities. How do I say that? All
|
||
these ‘buzz words’ will fall into a properly solved jigsaw
|
||
puzzle as you go through this article.</para>
|
||
<para><guilabel>Its Open Source:</guilabel></para>
|
||
<para>All of the code for OpenStack is freely available under the
|
||
Apache 2.0 license. Anyone can run it, build on it, or submit
|
||
changes back to the project. This open development model is one
|
||
of the best ways to foster badly-needed cloud standards, remove
|
||
the fear of proprietary lock-in for cloud customers, and create
|
||
a large ecosystem that spans cloud providers.</para>
|
||
<para><guilabel>Who it's for:</guilabel></para>
|
||
<para>Enterprises, service providers, government and academic
|
||
institutions with physical hardware that would like to build a
|
||
public or private cloud.</para>
|
||
<para><guilabel>How it's being used today:</guilabel></para>
|
||
<para>Organizations like CERN, Cisco WebEx, DreamHost, eBay, the
|
||
Gap, HP, MercadoLibre, NASA, PayPal, Rackspace and University of
|
||
Melbourne have deployed OpenStack clouds to achieve control,
|
||
business agility and cost savings without the licensing fees and
|
||
terms of proprietary software. For complete user stories visit
|
||
<link xlink:href="http://goo.gl/aF4lsL"
|
||
>http://goo.gl/aF4lsL</link>, this should give a good idea
|
||
about importance of OpenStack.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>OpenStack Projects, History and Releases Overview</para>
|
||
<para><guilabel>Project history and releases overview.</guilabel></para>
|
||
<para>OpenStack is a cloud computing project to provide an
|
||
infrastructure as a service (IaaS). It is free open source
|
||
software released under the terms of the Apache License. The
|
||
project is managed by the OpenStack Foundation, a non-profit
|
||
corporate entity established in September 2012 to promote
|
||
OpenStack software and its community.</para>
|
||
<para>More than 200 companies joined the project among which are
|
||
AMD, Brocade Communications Systems, Canonical, Cisco, Dell, EMC,
|
||
Ericsson, Groupe Bull, HP, IBM, Inktank, Intel, NEC, Rackspace
|
||
Hosting, Red Hat, SUSE Linux, VMware, and Yahoo!</para>
|
||
<para>The technology consists of a series of interrelated projects
|
||
that control pools of processing, storage, and networking
|
||
resources throughout a datacenter, all managed through a dashboard
|
||
that gives administrators control while empowering its users to
|
||
provision resources through a web interface.</para>
|
||
<para>The OpenStack community collaborates around a six-month,
|
||
time-based release cycle with frequent development milestones.
|
||
During the planning phase of each release, the community gathers
|
||
for the OpenStack Design Summit to facilitate developer working
|
||
sessions and assemble plans.</para>
|
||
<para>In July 2010 Rackspace Hosting and NASA jointly launched an
|
||
open-source cloud-software initiative known as OpenStack. The
|
||
OpenStack project intended to help organizations which offer
|
||
cloud-computing services running on standard hardware. The
|
||
community’s first official release, code-named Austin, appeared
|
||
four months later, with plans to release regular updates of the
|
||
software every few months. The early code came from NASA’s Nebula
|
||
platform as well as from Rackspace’s Cloud Files platform. In July
|
||
2011 developers of the Ubuntu Linux distribution decided to adopt
|
||
OpenStack.</para>
|
||
<para><emphasis role="bold">OpenStack Releases</emphasis></para>
|
||
<informaltable class="c20">
|
||
<tbody>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Release Name</td>
|
||
<td rowspan="1" colspan="1">Release Date</td>
|
||
<td rowspan="1" colspan="1">Included Components</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Austin</td>
|
||
<td rowspan="1" colspan="1">21 October 2010</td>
|
||
<td rowspan="1" colspan="1">Nova, Swift</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Bexar</td>
|
||
<td rowspan="1" colspan="1">3 February 2011</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Cactus</td>
|
||
<td rowspan="1" colspan="1">15 April 2011</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Diablo</td>
|
||
<td rowspan="1" colspan="1">22 September 2011</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Essex</td>
|
||
<td rowspan="1" colspan="1">5 April 2012</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift,
|
||
Horizon, Keystone</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Folsom</td>
|
||
<td rowspan="1" colspan="1">27 September 2012</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift,
|
||
Horizon, Keystone, Quantum, Cinder</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Grizzly</td>
|
||
<td rowspan="1" colspan="1">4 April 2013</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift,
|
||
Horizon, Keystone, Quantum, Cinder</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">Havana</td>
|
||
<td rowspan="1" colspan="1">17 October 2013</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift,
|
||
Horizon, Keystone, Neutron, Cinder</td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="1" colspan="1">IceHouse</td>
|
||
<td rowspan="1" colspan="1">April 2014</td>
|
||
<td rowspan="1" colspan="1">Nova, Glance, Swift,
|
||
Horizon, Keystone, Neutron, Cinder, (More to be
|
||
added)</td>
|
||
</tr>
|
||
</tbody>
|
||
</informaltable>
|
||
<para>Some OpenStack users include:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>PayPal / eBay</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>NASA</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>CERN</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Yahoo!</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Rackspace Cloud</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>HP Public Cloud</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>MercadoLibre.com</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>AT&T</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>KT (formerly Korea Telecom)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Deutsche Telekom</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Wikimedia Labs</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Hostalia of Telef nica Group</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>SUSE Cloud solution</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Red Hat OpenShift PaaS solution</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Zadara Storage</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Mint Services</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>GridCentric</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>and many more such users of OpenStack make it a true open
|
||
standard innovating and driving the worlds biggest Open Cloud
|
||
Standards (more on User Stories here <link xlink:href="http://goo.gl/aF4lsL">http://goo.gl/aF4lsL</link>).</para>
|
||
<para><guilabel>Release Cycle</guilabel></para>
|
||
<figure>
|
||
<title>Community Heartbeat</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image05.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>OpenStack is based on a coordinated 6-month release cycle
|
||
with frequent development milestones. You can find a link to the
|
||
current development release schedule here. The Release Cycle is
|
||
made of four major stages. Various OpenStack releases are named
|
||
as follows Various Companies Contributing to OpenStack</para>
|
||
<figure>
|
||
<title>Various Projects under OpenStack</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image16.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>In a Nutshell, OpenStack...</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>has had 64,396 commits made by 1,128 contributors</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>representing 908,491 lines of code</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>is mostly written in Python</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>with an average number of source code comments</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>has a codebase with a long source history</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>maintained by a very large development team</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>with increasing Y-O-Y commits</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>took an estimated 249 years of effort (COCOMO
|
||
model)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>starting with its first commit in May, 2010. (I have
|
||
deliberatly not</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>included last commit date since this is an active
|
||
project with</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>people working on it from all round the world).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<figure>
|
||
<title>Programming Languages used to design OpenStack</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image06.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>For more overview on OpenStack refer
|
||
http://www.openstack.org or http://goo.gl/4q7nVI, most of the
|
||
common questions and queries are covered here so as to address
|
||
the massive amount of questions that may arise out of
|
||
this.</para>
|
||
<para><guilabel>Core Projects Overview</guilabel></para>
|
||
<para>Let’s take a dive into some technical aspects of OpenStack,
|
||
its amazing scalability and flexibility are few of its awesome
|
||
features that make it a rock-solid cloud computing platform but
|
||
the OpenSource Nature of it and the fact that its Community
|
||
driven, it is explicitly meant to serve the OpenSource community
|
||
and its demands.</para>
|
||
<para>Being a cloud computing platform, OpenStack consists of many
|
||
core and incubated projects which as a whole makes it really good
|
||
as an IaaS cloud computing platform/Operating System. But the
|
||
following points are the main components of OpenStack that are
|
||
necessary to be present in the cloud to call it as OpenStack
|
||
Cloud.</para>
|
||
<para><guimenu>Components of OpenStack</guimenu></para>
|
||
<para>OpenStack has a modular architecture with various code names
|
||
for its components. OpenStack has several shared services that
|
||
span the three pillars of compute, storage and networking,
|
||
making it easier to implement and operate your cloud. These
|
||
services - including identity, image management and a web
|
||
interface - integrate the OpenStack components with each other
|
||
as well as external systems to provide a unified experience for
|
||
users as they interact with different cloud resources.</para>
|
||
<para><guisubmenu>Compute (Nova)</guisubmenu></para>
|
||
<para>The OpenStack cloud operating system enables enterprises
|
||
and service providers to offer on-demand computing resources,
|
||
by provisioning and managing large networks of virtual
|
||
machines. Compute resources are accessible via APIs for
|
||
developers building cloud applications and via web interfaces
|
||
for administrators and users. The compute architecture is
|
||
designed to scale horizontally on standard hardware, enabling
|
||
the cloud economics companies have come to expect.</para>
|
||
<figure>
|
||
<title>OpenStack Compute:Provision and manage large networks of
|
||
virtual machines</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image03.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>OpenStack Compute (Nova) is a cloud computing fabric
|
||
controller (the main part of an IaaS system). It is written in
|
||
Python and uses many external libraries such as Eventlet (for
|
||
concurrent programming), Kombu (for AMQP communication), and
|
||
SQLAlchemy (for database access). Nova's architecture is
|
||
designed to scale horizontally on standard hardware with no
|
||
proprietary hardware or software requirements and provide the
|
||
ability to integrate with legacy systems and third party
|
||
technologies. It is designed to manage and automate pools of
|
||
computer resources and can work with widely available
|
||
virtualization technologies, as well as bare metal and
|
||
high-performance computing (HPC) configurations. KVM and
|
||
XenServer are available choices for hypervisor technology,
|
||
together with Hyper-V and Linux container technology such as
|
||
LXC. In addition to different hypervisors, OpenStack runs on
|
||
ARM.</para>
|
||
<para><emphasis role="bold">Popular Use Cases:</emphasis></para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Service providers offering an IaaS compute platform
|
||
or services higher up the stack</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>IT departments acting as cloud service providers for
|
||
business units and project teams</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Processing big data with tools like Hadoop</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Scaling compute up and down to meet demand for web
|
||
resources and applications</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>High-performance computing (HPC) environments
|
||
processing diverse and intensive workloads</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para><guisubmenu>Object Storage(Swift)</guisubmenu></para>
|
||
<para>In addition to traditional enterprise-class storage
|
||
technology, many organizations now have a variety of storage
|
||
needs with varying performance and price requirements.
|
||
OpenStack has support for both Object Storage and Block
|
||
Storage, with many deployment options for each depending on
|
||
the use case.</para>
|
||
<figure>
|
||
<title>OpenStack Storage: Object and Block storage for use with
|
||
servers and applications</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image17.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>OpenStack Object Storage (Swift) is a scalable redundant
|
||
storage system. Objects and files are written to multiple disk
|
||
drives spread throughout servers in the data center, with the
|
||
OpenStack software responsible for ensuring data replication
|
||
and integrity across the cluster. Storage clusters scale
|
||
horizontally simply by adding new servers. Should a server or
|
||
hard drive fail, OpenStack replicates its content from other
|
||
active nodes to new locations in the cluster. Because
|
||
OpenStack uses software logic to ensure data replication and
|
||
distribution across different devices, inexpensive commodity
|
||
hard drives and servers can be used.</para>
|
||
<para>Object Storage is ideal for cost effective, scale-out
|
||
storage. It provides a fully distributed, API-accessible
|
||
storage platform that can be integrated directly into
|
||
applications or used for backup, archiving and data retention.
|
||
Block Storage allows block devices to be exposed and connected
|
||
to compute instances for expanded storage, better performance
|
||
and integration with enterprise storage platforms, such as
|
||
NetApp, Nexenta and SolidFire.</para>
|
||
<para>A few details on OpenStack’s Object Storage</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>OpenStack provides redundant, scalable object storage using
|
||
clusters of standardized servers capable of storing
|
||
petabytes of data</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Object Storage is not a traditional file system, but rather a
|
||
distributed storage system for static data such as
|
||
virtual machine images, photo storage, email storage,
|
||
backups and archives. Having no central "brain" or
|
||
master point of control provides greater scalability,
|
||
redundancy and durability.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Objects and files are written to multiple disk drives spread
|
||
throughout servers in the data center, with the
|
||
OpenStack software responsible for ensuring data
|
||
replication and integrity across the cluster.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Storage clusters scale horizontally simply by adding new servers.
|
||
Should a server or hard drive fail, OpenStack
|
||
replicates its content from other active nodes to new
|
||
locations in the cluster. Because OpenStack uses
|
||
software logic to ensure data replication and
|
||
distribution across different devices, inexpensive
|
||
commodity hard drives and servers can be used in lieu
|
||
of more expensive equipment.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para><guisubmenu>Block Storage(Cinder)</guisubmenu></para>
|
||
<para>OpenStack Block Storage (Cinder) provides persistent block
|
||
level storage devices for use with OpenStack compute
|
||
instances. The block storage system manages the creation,
|
||
attaching and detaching of the block devices to servers. Block
|
||
storage volumes are fully integrated into OpenStack Compute
|
||
and the Dashboard allowing for cloud users to manage their own
|
||
storage needs. In addition to local Linux server storage, it
|
||
can use storage platforms including Ceph, CloudByte, Coraid,
|
||
EMC (VMAX and VNX), GlusterFS, IBM Storage (Storwize family,
|
||
SAN Volume Controller, and XIV Storage System), Linux LIO,
|
||
NetApp, Nexenta, Scality, SolidFire and HP (Store Virtual and
|
||
StoreServ 3Par families). Block storage is appropriate for
|
||
performance sensitive scenarios such as database storage,
|
||
expandable file systems, or providing a server with access to
|
||
raw block level storage. Snapshot management provides powerful
|
||
functionality for backing up data stored on block storage
|
||
volumes. Snapshots can be restored or used to create a new
|
||
block storage volume.</para>
|
||
<para><emphasis role="bold">A few points on OpenStack Block
|
||
Storage:</emphasis></para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>OpenStack provides persistent block level storage
|
||
devices for use with OpenStack compute instances.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The block storage system manages the creation,
|
||
attaching and detaching of the block devices to servers.
|
||
Block storage volumes are fully integrated into OpenStack
|
||
Compute and the Dashboard allowing for cloud users to
|
||
manage their own storage needs.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>In addition to using simple Linux server storage, it
|
||
has unified storage support for numerous storage platforms
|
||
including Ceph, NetApp, Nexenta, SolidFire, and
|
||
Zadara.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Block storage is appropriate for performance sensitive
|
||
scenarios such as database storage, expandable file
|
||
systems, or providing a server with access to raw block
|
||
level storage.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Snapshot management provides powerful functionality
|
||
for backing up data stored on block storage volumes.
|
||
Snapshots can be restored or used to create a new block
|
||
storage volume.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para><guisubmenu>Networking(Neutron)</guisubmenu></para>
|
||
<para>Today's datacenter networks contain more devices than ever
|
||
before servers, network equipment, storage systems and
|
||
security appliances many of which are further divided into
|
||
virtual machines and virtual networks. The number of IP
|
||
addresses, routing configurations and security rules can
|
||
quickly grow into the millions. Traditional network management
|
||
techniques fall short of providing a truly scalable, automated
|
||
approach to managing these next-generation networks. At the
|
||
same time, users expect more control and flexibility with
|
||
quicker provisioning.</para>
|
||
<para>OpenStack Networking is a pluggable, scalable and
|
||
API-driven system for managing networks and IP addresses. Like
|
||
other aspects of the cloud operating system, it can be used by
|
||
administrators and users to increase the value of existing
|
||
datacenter assets. OpenStack Networking ensures the network
|
||
will not be the bottleneck or limiting factor in a cloud
|
||
deployment and gives users real self-service, even over their
|
||
network configurations.</para>
|
||
<figure>
|
||
<title>OpenStack Networking: Pluggable, scalable, API-driven
|
||
network and IP management</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image26.png"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>OpenStack Networking (Neutron, formerly Quantum]) is a
|
||
system for managing networks and IP addresses. Like other
|
||
aspects of the cloud operating system, it can be used by
|
||
administrators and users to increase the value of existing
|
||
data center assets. OpenStack Networking ensures the network
|
||
will not be the bottleneck or limiting factor in a cloud
|
||
deployment and gives users real self-service, even over their
|
||
network configurations.</para>
|
||
<para>OpenStack Neutron provides networking models for different
|
||
applications or user groups. Standard models include flat
|
||
networks or VLANs for separation of servers and traffic.
|
||
OpenStack Networking manages IP addresses, allowing for
|
||
dedicated static IPs or DHCP. Floating IPs allow traffic to be
|
||
dynamically re routed to any of your compute resources, which
|
||
allows you to redirect traffic during maintenance or in the
|
||
case of failure. Users can create their own networks, control
|
||
traffic and connect servers and devices to one or more
|
||
networks. Administrators can take advantage of
|
||
software-defined networking (SDN) technology like OpenFlow to
|
||
allow for high levels of multi-tenancy and massive scale.
|
||
OpenStack Networking has an extension framework allowing
|
||
additional network services, such as intrusion detection
|
||
systems (IDS), load balancing, firewalls and virtual private
|
||
networks (VPN) to be deployed and managed.</para>
|
||
<para>Networking Capabilities</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>OpenStack provides flexible networking models to
|
||
suit the needs of different applications or user groups.
|
||
Standard models include flat networks or VLANs for
|
||
separation of servers and traffic.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>OpenStack Networking manages IP addresses, allowing
|
||
for dedicated static IPs or DHCP. Floating IPs allow
|
||
traffic to be dynamically rerouted to any of your
|
||
compute resources, which allows you to redirect traffic
|
||
during maintenance or in the case of failure.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Users can create their own networks, control traffic
|
||
and connect servers and devices to one or more
|
||
networks.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The pluggable backend architecture lets users take
|
||
advantage of commodity gear or advanced networking
|
||
services from supported vendors.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Administrators can take advantage of
|
||
software-defined networking (SDN) technology like
|
||
OpenFlow to allow for high levels of multi-tenancy and
|
||
massive scale.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>OpenStack Networking has an extension framework
|
||
allowing additional network services, such as intrusion
|
||
detection systems (IDS), load balancing, firewalls and
|
||
virtual private networks (VPN) to be deployed and
|
||
managed.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para><guisubmenu>Dashboard(Horizon)</guisubmenu></para>
|
||
<para>OpenStack Dashboard (Horizon) provides administrators and
|
||
users a graphical interface to access, provision and automate
|
||
cloud-based resources. The design allows for third party
|
||
products and services, such as billing, monitoring and
|
||
additional management tools. The dashboard is also brandable
|
||
for service providers and other commercial vendors who want to
|
||
make use of it.</para>
|
||
<para>The dashboard is just one way to interact with OpenStack
|
||
resources. Developers can automate access or build tools to
|
||
manage their resources using the native OpenStack API or the
|
||
EC2 compatibility API.</para>
|
||
<para><guisubmenu>Identity Service(Keystone)</guisubmenu></para>
|
||
<para>OpenStack Identity (Keystone) provides a central directory
|
||
of users mapped to the OpenStack services they can access. It
|
||
acts as a common authentication system across the cloud
|
||
operating system and can integrate with existing backend
|
||
directory services like LDAP. It supports multiple forms of
|
||
authentication including standard username and password
|
||
credentials, token-based systems and AWS-style (i.e. Amazon
|
||
Web Services) logins. Additionally, the catalog provides a
|
||
queryable list of all of the services deployed in an OpenStack
|
||
cloud in a single registry. Users and third-party tools can
|
||
programmatically determine which resources they can
|
||
access.</para>
|
||
<para>Additionally, the catalog provides a queryable list of all
|
||
of the services deployed in an OpenStack cloud in a single
|
||
registry. Users and third-party tools can programmatically
|
||
determine which resources they can access.</para>
|
||
<para>As an administrator, OpenStack Identity enables you
|
||
to:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Configure centralized policies across users and
|
||
systems</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Create users and tenants and define permissions for
|
||
compute, storage and networking resources using role-based
|
||
access control (RBAC) features</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Integrate with an existing directory like LDAP,
|
||
allowing for a single source of identity authentication
|
||
across the enterprise.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>As a user, OpenStack Identity enables you to:</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Get a list of the services that you can access.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Make API requests</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Log into the web dashboard to create resources owned
|
||
by your account</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para><guisubmenu>Image Service(Glance)</guisubmenu></para>
|
||
<para>OpenStack Image Service (Glance) provides discovery,
|
||
registration and delivery services for disk and server images.
|
||
Stored images can be used as a template. It can also be used
|
||
to store and catalog an unlimited number of backups. The Image
|
||
Service can store disk and server images in a variety of
|
||
back-ends, including OpenStack Object Storage. The Image
|
||
Service API provides a standard REST interface for querying
|
||
information about disk images and lets clients stream the
|
||
images to new servers.</para>
|
||
<para>The Image Service can store disk and server images in a
|
||
variety of back-ends, including OpenStack Object Storage. The
|
||
Image Service API provides a standard REST interface for
|
||
querying information about disk images and lets clients stream
|
||
the images to new servers.</para>
|
||
<para>Capabilities of the Image Service include:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Administrators can create base templates from which
|
||
their users can start new compute instances</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Users can choose from available images, or create
|
||
their own from existing servers</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Snapshots can also be stored in the Image Service so
|
||
that virtual machines can be backed up quickly</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>A multi-format image registry, the image service allows
|
||
uploads of private and public images in a variety of formats,
|
||
including:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Raw</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Machine (kernel/ramdisk outside of image, a.k.a.
|
||
AMI)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>VHD (Hyper-V)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>VDI (VirtualBox)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>qcow2 (Qemu/KVM)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>VMDK (VMWare)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>OVF (VMWare, others)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>To checkout the complete list of Core and Incubated
|
||
projects under OpenStack check out OpenStack’s Launchpad
|
||
Project Page here : http://goo.gl/ka4SrV</para>
|
||
<para><guisubmenu>Amazon Web Services compatibility</guisubmenu></para>
|
||
<para>OpenStack APIs are compatible with Amazon EC2 and Amazon
|
||
S3 and thus client applications written for Amazon Web
|
||
Services can be used with OpenStack with minimal porting
|
||
effort.</para>
|
||
<para><guilabel>Governance</guilabel></para>
|
||
<para>OpenStack is governed by a non-profit foundation and its
|
||
board of directors, a technical committee and a user
|
||
committee.</para>
|
||
<para>The foundation's stated mission is by providing shared
|
||
resources to help achieve the OpenStack Mission by Protecting,
|
||
Empowering, and Promoting OpenStack software and the community
|
||
around it, including users, developers and the entire
|
||
ecosystem. Though, it has little to do with the development of
|
||
the software, which is managed by the technical committee - an
|
||
elected group that represents the contributors to the project,
|
||
and has oversight on all technical matters.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>OpenStack Architecture</para>
|
||
<para><guilabel>Conceptual Architecture</guilabel></para>
|
||
<para>The OpenStack project as a whole is designed to deliver a
|
||
massively scalable cloud operating system. 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.</para>
|
||
<para>Conceptually, you can picture the relationships between the
|
||
services as so:</para>
|
||
<figure>
|
||
<title>Conceptual Diagram</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image13.jpg"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Dashboard ("Horizon") provides a web front end to the
|
||
other OpenStack services</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Compute ("Nova") stores and retrieves virtual disks
|
||
("images") and associated metadata in Image
|
||
("Glance")</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Network ("Quantum") provides virtual networking for
|
||
Compute.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Block Storage ("Cinder") provides storage volumes for
|
||
Compute.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Image ("Glance") can store the actual virtual disk files
|
||
in the Object Store("Swift")</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>All the services authenticate with Identity
|
||
("Keystone")</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>This 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. It also only shows
|
||
the "operator" side of the cloud -- it does not picture how
|
||
consumers of the cloud may actually use it. For example, many
|
||
users will access object storage heavily (and directly).</para>
|
||
<para><guilabel>Logical Architecture</guilabel></para>
|
||
<para>This picture is consistent with the conceptual architecture
|
||
above:</para>
|
||
<figure>
|
||
<title>Logical Diagram</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image31.jpg"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>End users can interact through a common web interface
|
||
(Horizon) or directly to each service through their
|
||
API</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>All services authenticate through a common source
|
||
(facilitated through keystone)</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Individual services interact with each other through
|
||
their public APIs (except where privileged administrator
|
||
commands are necessary)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>In the sections below, we'll delve into the architecture for
|
||
each of the services.</para>
|
||
<para><guilabel>Dashboard</guilabel></para>
|
||
<para>Horizon is a modular Django web application that provides
|
||
an end user and administrator interface to OpenStack
|
||
services.</para>
|
||
<figure>
|
||
<title>Horizon Dashboard</title>
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="figures/image10.jpg"/>
|
||
</imageobject>
|
||
</mediaobject>
|
||
</figure>
|
||
<para>As with most web applications, the architecture is fairly
|
||
simple:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>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).</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>A database (configurable as to which one). As it
|
||
relies mostly on the other services for data, it stores
|
||
very little data of its own.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>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's 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 be non-customer accessible).</para>
|
||
<para><guilabel>Compute</guilabel></para>
|
||
<para>Nova 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. Below is a
|
||
list of these processes and their functions:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>nova-api accepts and responds to end user compute API
|
||
calls. It supports OpenStack Compute API, Amazon's 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).</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>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.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>nova-volume manages the creation, attaching and
|
||
detaching of z volumes to compute instances (similar
|
||
functionality to Amazon’s Elastic Block Storage). It can
|
||
use volumes from a variety of providers such as iSCSI or
|
||
Rados Block Device in Ceph. A new OpenStack project,
|
||
Cinder, will eventually replace nova-volume functionality.
|
||
In the Folsom release, nova-volume and the Block Storage
|
||
service will have similar functionality.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The nova-network worker daemon is very similar to
|
||
nova-compute and nova-volume. It accepts networking tasks
|
||
from the queue and then performs tasks to manipulate the
|
||
network (such as setting up bridging interfaces or
|
||
changing iptables rules). This functionality is being
|
||
migrated to Quantum, a separate OpenStack service. In the
|
||
Folsom release, much of the functionality will be
|
||
duplicated between nova-network and Quantum.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>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).</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The 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). New to the Folsom release is support for Zero
|
||
MQ.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The SQL database stores most of the build-time and
|
||
runtime 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.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Nova also provides console services to allow end users
|
||
to access their virtual instance's console through a
|
||
proxy. This involves several daemons (nova-console,
|
||
nova-novncproxy and nova-consoleauth).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>Nova 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.</para>
|
||
<para><guilabel>Object Store</guilabel></para>
|
||
<para>The swift architecture is very distributed to prevent any
|
||
single point of failure as well as to scale horizontally. It
|
||
includes the following components:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>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.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Account servers manage accounts defined with the
|
||
object storage service.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Container servers manage a mapping of containers (i.e
|
||
folders) within the object store service.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Object servers manage actual objects (i.e. files) on
|
||
the storage nodes.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>There 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.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>Authentication is handled through configurable WSGI
|
||
middleware (which will usually be Keystone).</para>
|
||
<para><guilabel>Image Store</guilabel></para>
|
||
<para>The Glance architecture has stayed relatively stable since
|
||
the Cactus release. The biggest architectural change has been
|
||
the addition of authentication, which was added in the Diablo
|
||
release. Just as a quick reminder, Glance has four main parts
|
||
to it:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>glance-api accepts Image API calls for image
|
||
discovery, image retrieval and image storage.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>glance-registry stores, processes and retrieves
|
||
metadata about images (size, type, etc.).</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>A database to store the image metadata. Like Nova, you
|
||
can choose your database depending on your preference (but
|
||
most people use MySQL or SQlite).</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>A 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.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>There 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.</para>
|
||
<para>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.</para>
|
||
<para><guilabel>Identity</guilabel></para>
|
||
<para>Keystone provides a single point of integration for
|
||
OpenStack policy, catalog, token and authentication.</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>keystone handles API requests as well as providing
|
||
configurable catalog, policy, token and identity
|
||
services.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Each 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).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>Most people will use this as a point of customization for
|
||
their current authentication services.</para>
|
||
<para><guilabel>Network</guilabel></para>
|
||
<para>Quantum provides "network connectivity as a service"
|
||
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.
|
||
Like many of the OpenStack services, Quantum is highly
|
||
configurable due to it's plug-in architecture. These plug-ins
|
||
accommodate different networking equipment and software. As
|
||
such, the architecture and deployment can vary dramatically.
|
||
In the above architecture, a simple Linux networking plug-in
|
||
is shown.</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>quantum-server accepts API requests and then routes
|
||
them to the appropriate quantum plugin for action.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Quantum plugins and agents perform the actual actions
|
||
such as plugging and unplugging ports, creating networks
|
||
or subnets and IP addressing. These plugins and agents
|
||
differ depending on the vendor and technologies used in
|
||
the particular cloud. Quantum ships with plugins and
|
||
agents for: Cisco virtual and physical switches, Nicira
|
||
NVP product, NEC OpenFlow products, Openvswitch, Linux
|
||
bridging and the Ryu Network Operating System.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>The common agents are L3 (layer 3), DHCP (dynamic host
|
||
IP addressing) and the specific plug-in agent.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Most Quantum installations will also make use of a
|
||
messaging queue to route information between the
|
||
quantum-server and various agents as well as a database to
|
||
store networking state for particular plugins.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>Quantum will interact mainly with Nova, where it will
|
||
provide networks and connectivity for its instances.</para>
|
||
<para><guilabel>Block Storage</guilabel></para>
|
||
<para>Cinder separates out the persistent block storage
|
||
functionality that was previously part of OpenStack Compute
|
||
(in the form of nova-volume) into it's own service. The
|
||
OpenStack Block Storage API allows for manipulation of
|
||
volumes, volume types (similar to compute flavors) and volume
|
||
snapshots.</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>cinder-api accepts API requests and routes them to
|
||
cinder-volume for action.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>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.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Much like nova-scheduler, the cinder-scheduler daemon
|
||
picks the optimal block storage provider node to create
|
||
the volume on.</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>Cinder deployments will also make use of a messaging
|
||
queue to route information between the cinder processes as
|
||
well as a database to store volume state.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
<para>Like Quantum, Cinder will mainly interact with Nova,
|
||
providing volumes for its instances.</para></listitem>
|
||
</orderedlist>
|
||
</para>
|
||
</chapter>
|