training-guides/doc/training-guides/module001-ch003-core-projec...

621 lines
28 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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="module001-ch003-core-projects">
<title>OpenStack Projects, History, and Releases Overview</title>
<para><guilabel>Project history and releases overview.</guilabel></para>
<para>OpenStack is a cloud computing project that provides 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 data center, 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 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 the NASA Nebula platform and from
the Rackspace Cloud Files platform. In July 2011, Ubuntu Linux
developers adopted 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&amp;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>OpenStack is a true and innovative open standard. For more
user stories, see <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 <link xlink:href=
"https://wiki.openstack.org/wiki/Releases">here</link>.
The Release Cycle is made of four major stages:</para>
<figure>
<title>Various Projects under OpenStack</title>
<mediaobject>
<imageobject>
<imagedata fileref="figures/image16.png"/>
</imageobject>
</mediaobject>
</figure>
<para>The creation of OpenStack took an estimated 249 years of
effort (COCOMO model).</para>
<para>In a nutshell, OpenStack has:</para>
<itemizedlist>
<listitem>
<para>64,396 commits made by 1,128 contributors, with its
first commit made in May, 2010.</para>
</listitem>
<listitem>
<para>908,491 lines of code. OpenStack is written mostly in
Python with an average number of source code comments.</para>
</listitem>
<listitem>
<para>A code base with a long source history.</para>
</listitem>
<listitem>
<para>Increasing Y-O-Y commits.</para>
</listitem>
<listitem>
<para>A very large development team comprised of people from
around 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 an overview of OpenStack refer to
http://www.openstack.org or http://goo.gl/4q7nVI. Common
questions and answers are also covered here.</para>
<para><guilabel>Core Projects Overview</guilabel></para>
<para>Let's take a dive into some of the technical aspects of
OpenStack. Its scalability and flexibility are just some of the
awesome features that make it a rock-solid cloud computing
platform. The OpenStack core projects serve the community and its
demands.</para>
<para>Being a cloud computing platform, OpenStack consists of many
core and incubated projects which makes it really good
as an IaaS cloud computing platform/Operating System. The
following points are the main components
necessary to call it an 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.</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 OpenStacks 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 data center networks contain more devices than
ever before. From 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 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>
<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 re-routed 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. Service providers and other commercial vendors
can customize the dashboard with their own brand.</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 Amazon Web Services log in credentials such as those used
for EC2.</para>
<para>Additionally, the catalog provides a query-able 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>The OpenStack Identity Service enables administrators
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 by using role-based
access control (RBAC) features</para>
</listitem>
<listitem>
<para>Integrate with an existing directory, like LDAP, to
provide a single source of authentication across the
enterprise</para>
</listitem>
</itemizedlist>
<para>The OpenStack Identity Service enables users to:</para>
<itemizedlist>
<listitem>
<para>List the services to which they have access</para>
</listitem>
<listitem>
<para>Make API requests</para>
</listitem>
<listitem>
<para>Log into the web dashboard to create resources owned
by their 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. They 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>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, also known
as 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 OpenStacks 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>
</chapter>