b39e51197d
Documentation files and images should not have the executable bit set. Change-Id: Iade8c588dca278dff9b4bdb46f40ca11f2b95285
619 lines
28 KiB
XML
619 lines
28 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="ch_getting-started-with-openstack">
|
|
<title>Get started with OpenStack</title>
|
|
<?dbhtml stop-chunking?>
|
|
<para>The OpenStack project is an
|
|
open source cloud computing platform for all types of clouds, which aims
|
|
to be simple to implement, massively scalable, and feature
|
|
rich. Developers and cloud computing technologists from around the
|
|
world create the OpenStack project.</para>
|
|
<para>OpenStack provides an Infrastructure as a Service (IaaS)
|
|
solution through a set of interrelated services. Each service offers
|
|
an application programming interface (API) that facilitates this
|
|
integration.</para>
|
|
<section xml:id="openstack-architecture">
|
|
<title>OpenStack architecture</title>
|
|
<para>The following table describes the OpenStack services that make
|
|
up the OpenStack architecture:</para>
|
|
<table rules="all">
|
|
<caption>OpenStack services</caption>
|
|
<col width="20%"/>
|
|
<col width="10%"/>
|
|
<col width="70%"/>
|
|
<thead>
|
|
<tr>
|
|
<th>Service</th>
|
|
<th>Project name</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-dashboard/"
|
|
>Dashboard</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/horizon/">Horizon</link></td>
|
|
<td>Enables users to interact with all OpenStack services to launch
|
|
an instance, assign IP addresses, set access controls, and so
|
|
on.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-shared-services/">Identity
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/keystone/">Keystone</link></td>
|
|
<td>Provides authentication and authorization for all the OpenStack services. Also
|
|
provides a service catalog within a particular OpenStack cloud.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-compute/">Compute
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/nova/">Nova</link></td>
|
|
<td>Provisions and manages large networks of virtual machines on
|
|
demand.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-storage/">Object Storage
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/swift/">Swift</link></td>
|
|
<td>Stores and retrieve files. Does not mount directories like a file
|
|
server.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-storage/">Block Storage
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/cinder/">Cinder</link></td>
|
|
<td>Provides persistent block storage to guest virtual machines.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-shared-services/">Image
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/glance/">Glance</link>.</td>
|
|
<td>Provides a registry of virtual machine images. Compute Service
|
|
uses it to provision instances.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-networking/">Networking
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/neutron/">Neutron</link></td>
|
|
<td>Enables network connectivity as a service among interface devices
|
|
managed by other OpenStack services, usually Compute Service.
|
|
Enables users to create and attach interfaces to networks. Has a
|
|
pluggable architecture that supports many popular networking
|
|
vendors and technologies.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-shared-services/"
|
|
>Metering/Monitoring Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/ceilometer/">Ceilometer</link></td>
|
|
<td>Monitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistics
|
|
purposes.</td>
|
|
</tr>
|
|
<tr>
|
|
<td><link xlink:href="http://www.openstack.org/software/openstack-shared-services/">Orchestration
|
|
Service</link></td>
|
|
<td><link xlink:href="http://docs.openstack.org/developer/heat/">Heat</link></td>
|
|
<td>Orchestrates multiple composite cloud applications by using the
|
|
AWS CloudFormation template format, through both an
|
|
OpenStack-native REST API and a CloudFormation-compatible Query
|
|
API.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<section xml:id="conceptual-architecture">
|
|
<title>Conceptual architecture</title>
|
|
<para>The following diagram shows the relationships among the
|
|
OpenStack services:</para>
|
|
<informalfigure xml:id="concept_arch">
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata
|
|
fileref="figures/openstack_havana_conceptual_arch.png"
|
|
contentwidth="6in"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</informalfigure>
|
|
</section>
|
|
<section xml:id="logical-architecture">
|
|
<title>Logical architecture</title>
|
|
<para>To design, install, and configure a cloud, cloud administrators
|
|
must understand the logical architecture.</para>
|
|
<para>OpenStack modules are one of the following types:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Daemon. Runs as a daemon. On Linux platforms, it's usually installed as a service.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Script. Runs installation and tests of a virtual environment. For example, a script called <code>run_tests.sh</code> installs a virtual environment for a service and then may also run tests to verify that virtual environment functions well.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Command-line interface (CLI). Enables users to submit API calls to OpenStack services through
|
|
easy-to-use commands.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>The following diagram shows the most common, but not the only,
|
|
architecture for an OpenStack cloud:</para>
|
|
<!-- Source files in this repository in doc/src/docbkx/common/figures/openstack-arch-grizzly-v1.zip https://github.com/openstack/openstack-manuals/raw/master/doc/src/docbkx/common/figures/openstack-arch-grizzly-v1.zip -->
|
|
<figure xml:id="os-logical-arch"><title>OpenStack logical architecture</title>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="figures/openstack-arch-grizzly-v1-logical.jpg"
|
|
contentwidth="6.5in"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</figure>
|
|
<para>As in the conceptual architecture, end users can interact
|
|
through the dashboard, CLIs, and APIs. All services authenticate
|
|
through a common Identity Service and individual services interact
|
|
with each other through public APIs, except where privileged
|
|
administrator commands are necessary.</para>
|
|
</section>
|
|
</section>
|
|
<section xml:id="openstack-services">
|
|
<title>OpenStack services</title>
|
|
<para>This section describes OpenStack services in detail.</para>
|
|
<section xml:id="dashboard-service">
|
|
<title>Dashboard</title>
|
|
<para>The dashboard is a modular <link
|
|
xlink:href="https://www.djangoproject.com/">Django web
|
|
application</link> that provides a graphical interface to
|
|
OpenStack services.</para>
|
|
<informalfigure>
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata contentwidth="4in"
|
|
fileref="figures/horizon-screenshot.jpg"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</informalfigure>
|
|
<para>The dashboard is usually deployed through <link
|
|
xlink:href="http://code.google.com/p/modwsgi/">mod_wsgi</link> in
|
|
Apache. You can modify the dashboard code to make it suitable for
|
|
different sites.</para>
|
|
<para>From a network architecture point of view, this service must be
|
|
accessible to customers and the public API for each OpenStack
|
|
service. To use the administrator functionality for other
|
|
services, it must also connect to Admin API endpoints, which
|
|
should not be accessible by customers.</para>
|
|
</section>
|
|
<section xml:id="identity-service">
|
|
<title>Identity Service</title>
|
|
<para>The Identity Service is an OpenStack project that provides
|
|
identity, token, catalog, and policy services to OpenStack
|
|
projects. It consists of:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><systemitem class="service">keystone-all</systemitem>. Starts both the service and
|
|
administrative APIs in a single process to provide Catalog, Authorization, and Authentication
|
|
services for OpenStack.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Identity Service functions. Each has a pluggable backend that 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>The Identity Service is mostly used to customize authentication
|
|
services.</para>
|
|
</section>
|
|
<section xml:id="compute-service">
|
|
<title>Compute Service</title>
|
|
<para>The Compute Service is a cloud computing fabric controller, the
|
|
main part of an IaaS system. It can be used for hosting and
|
|
managing cloud computing systems. The main modules are implemented
|
|
in Python.</para>
|
|
<para>The Compute Service is made up of the following functional
|
|
areas and their underlying components:</para>
|
|
<itemizedlist>
|
|
<title>API</title>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-api</systemitem> service.
|
|
Accepts and responds to end user compute API calls. Supports the
|
|
OpenStack Compute API, the Amazon EC2 API, and a special Admin
|
|
API for privileged users to perform administrative actions.
|
|
Also, initiates most orchestration activities, such as running
|
|
an instance, and enforces some policies.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-api-metadata</systemitem>
|
|
service. Accepts metadata requests from instances. The
|
|
<systemitem class="service">nova-api-metadata</systemitem>
|
|
service is generally only used when you run in multi-host mode
|
|
with <systemitem class="service">nova-network</systemitem>
|
|
installations. For details, see <link
|
|
xlink:href="http://docs.openstack.org/trunk/openstack-compute/admin/content/metadata-service.html"
|
|
>Metadata service</link>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Compute core</title>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-compute</systemitem> process. A
|
|
worker daemon that creates and terminates virtual machine
|
|
instances through hypervisor APIs. For example, XenAPI for
|
|
XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware,
|
|
and so on. The process by which it does so is fairly complex but
|
|
the basics are simple: Accept actions from the queue and 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><systemitem class="service">nova-scheduler</systemitem>
|
|
process. Conceptually the simplest piece of code in Compute.
|
|
Takes a virtual machine instance request from the queue and
|
|
determines on which compute server host it should run.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-conductor</systemitem> module.
|
|
Mediates interactions between <systemitem class="service"
|
|
>nova-compute</systemitem> and the database. Aims to eliminate
|
|
direct accesses to the cloud database made by <systemitem
|
|
class="service">nova-compute</systemitem>. The <systemitem
|
|
class="service">nova-conductor</systemitem> module scales
|
|
horizontally. However, do not deploy it on any nodes where
|
|
<systemitem class="service">nova-compute</systemitem> runs. For
|
|
more information, see <link
|
|
xlink:href="http://russellbryantnet.wordpress.com/2012/11/19/a-new-nova-service-nova-conductor/"
|
|
>A new Nova service: nova-conductor</link>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Networking for VMs</title>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-network</systemitem>
|
|
worker daemon. Similar to <systemitem class="service"
|
|
>nova-compute</systemitem>, it accepts networking tasks
|
|
from the queue and performs tasks to manipulate the
|
|
network, such as setting up bridging interfaces or
|
|
changing iptables rules. This functionality is being
|
|
migrated to OpenStack Networking, which is a separate
|
|
OpenStack service.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-dhcpbridge</systemitem>
|
|
script. Tracks IP address leases and records them in the
|
|
database by using the dnsmasq <literal>dhcp-script</literal>
|
|
facility. This functionality is being migrated to OpenStack
|
|
Networking. OpenStack Networking provides a different
|
|
script.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Console interface</title>
|
|
<listitem>
|
|
<para><systemitem class="service"
|
|
>nova-consoleauth</systemitem> daemon. Authorizes tokens
|
|
for users that console proxies provide. See <systemitem
|
|
class="service">nova-novncproxy</systemitem> and
|
|
<systemitem class="service"
|
|
>nova-xvpnvcproxy</systemitem>. This service must be
|
|
running for console proxies to work. Many proxies of
|
|
either type can be run against a single <systemitem
|
|
class="service">nova-consoleauth</systemitem> service in
|
|
a cluster configuration. For information, see <link
|
|
xlink:href="http://docs.openstack.org/trunk/openstack-compute/admin/content/about-nova-consoleauth.html"
|
|
>About nova-consoleauth</link>.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-novncproxy</systemitem>
|
|
daemon. Provides a proxy for accessing running instances through
|
|
a VNC connection. Supports browser-based novnc clients.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-console</systemitem>
|
|
daemon. Deprecated for use with Grizzly. Instead, the
|
|
<systemitem class="service"
|
|
>nova-xvpnvncproxy</systemitem> is used.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-xvpnvncproxy</systemitem>
|
|
daemon. A proxy for accessing running instances through a VNC
|
|
connection. Supports a Java client specifically designed for
|
|
OpenStack.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-cert</systemitem>
|
|
daemon. Manages x509 certificates.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Image Management (EC2 scenario)</title>
|
|
<listitem>
|
|
<para><systemitem class="service">nova-objectstore</systemitem>
|
|
daemon. Provides an S3 interface for registering images with the
|
|
Image Service. Mainly used for installations that must support
|
|
euca2ools. The euca2ools tools talk to <systemitem
|
|
class="service">nova-objectstore</systemitem> in <emphasis
|
|
role="italic">S3 language</emphasis>, and <systemitem
|
|
class="service">nova-objectstore</systemitem> translates S3
|
|
requests into Image Service requests.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>euca2ools client. A set of command-line interpreter commands
|
|
for managing cloud resources. Though not an OpenStack module,
|
|
you can configure <systemitem class="service"
|
|
>nova-api</systemitem> to support this EC2 interface. For more
|
|
information, see the <link
|
|
xlink:href="http://www.eucalyptus.com/eucalyptus-cloud/documentation/2.0"
|
|
>Eucalyptus 2.0 Documentation</link>.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Command Line Interpreter/Interfaces</title>
|
|
<listitem>
|
|
<para>nova client. Enables users to submit commands as a tenant
|
|
administrator or end user.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>nova-manage client. Enables cloud administrators to submit
|
|
commands.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<itemizedlist>
|
|
<title>Other components</title>
|
|
<listitem>
|
|
<para>The queue. A central hub for passing messages between daemons.
|
|
Usually implemented with <link
|
|
xlink:href="http://www.rabbitmq.com/">RabbitMQ</link>, but
|
|
could be any AMPQ message queue, such as <link
|
|
xlink:href="http://qpid.apache.org/">Apache Qpid</link>) or
|
|
<link xlink:href="http://www.zeromq.org/">Zero
|
|
MQ</link>.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>SQL database. Stores most build-time and runtime states for
|
|
a cloud infrastructure. Includes instance types that are
|
|
available for use, instances in use, available networks, and
|
|
projects. Theoretically, OpenStack Compute can support any
|
|
database that SQL-Alchemy supports, but the only databases
|
|
widely used are sqlite3 databases, MySQL (only appropriate for
|
|
test and development work), and PostgreSQL.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>The Compute Service interacts with other OpenStack services:
|
|
Identity Service for authentication, Image Service for images, and
|
|
the OpenStack Dashboard for a web interface.</para>
|
|
</section>
|
|
<section xml:id="object-storage-service">
|
|
<title>Object Storage Service</title>
|
|
<para>The Object Storage Service is a highly scalable and durable
|
|
multi-tenant object storage system for large amounts of
|
|
unstructured data at low cost through a RESTful http API.</para>
|
|
<para>It includes the following components:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><systemitem class="service">swift-proxy-server</systemitem>.
|
|
Accepts Object Storage API and raw HTTP requests to upload
|
|
files, modify metadata, and create containers. It also serves
|
|
file or container listings to web browsers. To improve
|
|
performance, the proxy server can use an optional cache usually
|
|
deployed with memcache.</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, or folders,
|
|
within the Object Storage Service.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Object servers. Manage actual objects, such as files, on the
|
|
storage nodes.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>A number of periodic processes. Performs housekeeping tasks on
|
|
the large data store. The replication services ensure
|
|
consistency and availability through the cluster. Other periodic
|
|
processes include auditors, updaters, and reapers.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>Configurable WSGI middleware, which is usually the
|
|
Identity Service, handles authentication.</para>
|
|
<xi:include href="section_storage-concepts.xml"/>
|
|
</section>
|
|
<section xml:id="block-storage-service">
|
|
<title>Block Storage Service</title>
|
|
<para>The Block Storage Service enables management of volumes, volume
|
|
snapshots, and volume types. It includes the following
|
|
components:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><systemitem class="service">cinder-api</systemitem>.
|
|
Accepts API requests and routes them to <systemitem
|
|
class="service">cinder-volume</systemitem> for
|
|
action.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">cinder-volume</systemitem>. Responds to requests to read from and
|
|
write to the Object Storage database to maintain state, interacting with other processes (like
|
|
<systemitem class="service">cinder-scheduler</systemitem>) 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.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service"
|
|
>cinder-scheduler</systemitem> daemon. Like the
|
|
<systemitem class="service">nova-scheduler</systemitem>,
|
|
picks the optimal block storage provider node on which to
|
|
create the volume.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Messaging queue. Routes information between the Block Storage
|
|
Service processes and a database, which stores volume
|
|
state.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>The Block Storage Service interacts with Compute to provide
|
|
volumes for instances.</para>
|
|
</section>
|
|
<section xml:id="image-service">
|
|
<title>Image Service</title>
|
|
<para>The Image Service includes the following components:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><systemitem class="service">glance-api</systemitem>. Accepts
|
|
Image API calls for image discovery, retrieval, and
|
|
storage.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><systemitem class="service">glance-registry</systemitem>.
|
|
Stores, processes, and retrieves metadata about images. Metadata
|
|
includes size, type, and so on.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Database. Stores image metadata. You can choose your database
|
|
depending on your preference. Most deployments use MySQL or
|
|
SQlite.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Storage repository for image files. In <xref
|
|
linkend="os-logical-arch"/>, the Object Storage Service is the
|
|
image repository. However, you can configure a different
|
|
repository. The Image Service supports normal filesystems, RADOS
|
|
block devices, Amazon S3, and HTTP. Some of these choices are
|
|
limited to read-only usage.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>A number of periodic processes run on the Image Service to
|
|
support caching. Replication services ensures consistency and
|
|
availability through the cluster. Other periodic processes
|
|
include auditors, updaters, and reapers.</para>
|
|
<para>As shown in <xref linkend="concept_arch"/>, the Image Service
|
|
is central to the overall IaaS picture. It accepts API requests
|
|
for images or image metadata from end users or Compute components
|
|
and can store its disk files in the Object Storage Service.</para>
|
|
</section>
|
|
<section xml:id="networking-service">
|
|
<title>Networking Service</title>
|
|
<para>Provides network-connectivity-as-a-service between interface
|
|
devices that are managed by other OpenStack services, usually
|
|
Compute. Enables users to create and attach interfaces to
|
|
networks. Like many OpenStack services, OpenStack Networking is
|
|
highly configurable due to its plug-in architecture. These
|
|
plug-ins accommodate different networking equipment and software.
|
|
Consequently, the architecture and deployment vary dramatically.</para>
|
|
<para>Includes the following components:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><systemitem class="service">neutron-server</systemitem>.
|
|
Accepts and routes API requests to the appropriate OpenStack
|
|
Networking plug-in for action.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>OpenStack Networking plug-ins and agents. Plugs and unplugs
|
|
ports, creates networks or subnets, and provides IP addressing.
|
|
These plug-ins and agents differ depending on the vendor and
|
|
technologies used in the particular cloud. OpenStack Networking
|
|
ships with plug-ins and agents for Cisco virtual and physical
|
|
switches, Nicira NVP product, NEC OpenFlow products, Open
|
|
vSwitch, Linux bridging, and the Ryu Network Operating
|
|
System.</para>
|
|
<para>The common agents are L3 (layer 3), DHCP (dynamic host IP addressing), and a plug-in
|
|
agent.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Messaging queue. Most OpenStack Networking installations make
|
|
use of a messaging queue to route information between the
|
|
neutron-server and various agents as well as a database to store
|
|
networking state for particular plug-ins.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>OpenStack Networking interacts mainly with OpenStack
|
|
Compute, where it provides networks and connectivity for its
|
|
instances.</para>
|
|
</section>
|
|
<section xml:id="metering-service">
|
|
<title>Metering/Monitoring Service</title>
|
|
<para>The Metering Service is designed to:</para>
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Efficiently collect the metering data about the CPU and network costs.</para>
|
|
</listitem>
|
|
<listitem><para>Collect data by monitoring notifications sent from services or by polling the
|
|
infrastructure.</para>
|
|
</listitem>
|
|
<listitem><para>Configure the type of collected data to meet various operating requirements.
|
|
Accessing and inserting the metering data through the REST API.</para>
|
|
</listitem>
|
|
<listitem><para>Expand the framework to collect custom usage data by additional
|
|
plug-ins.</para></listitem>
|
|
<listitem><para>Produce signed metering messages that cannot be
|
|
repudiated.</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>The system consists of the following basic components:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>A compute agent. Runs on each compute node and polls for resource utilization
|
|
statistics. There may be other types of agents in the future, but for now we will
|
|
focus on creating the compute agent.</para>
|
|
</listitem>
|
|
<listitem><para>A central agent. Runs on a central management server to poll for resource
|
|
utilization statistics for resources not tied to instances or compute nodes.</para>
|
|
</listitem>
|
|
<listitem><para>A collector. Runs on one or more central management servers to monitor the
|
|
message queues (for notifications and for metering data coming from the agent).
|
|
Notification messages are processed and turned into metering messages and sent back
|
|
out onto the message bus using the appropriate topic. Metering messages are written
|
|
to the data store without modification.</para>
|
|
</listitem>
|
|
<listitem><para>A data store. A database capable of handling concurrent writes (from one or more
|
|
collector instances) and reads (from the API server).</para>
|
|
</listitem>
|
|
<listitem><para>An API server. Runs on one or more central management servers to provide access to the data
|
|
from the data store. These services communicate using the standard OpenStack messaging
|
|
bus. Only the collector and API server have access to the data store.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>These services communicate by using the standard OpenStack messaging bus. Only the collector and API server have access to the data store.</para>
|
|
</section>
|
|
<section xml:id="orchestration-service">
|
|
<title>Orchestration Service</title>
|
|
<para>The Orchestration Service provides a template-based
|
|
orchestration for describing a cloud application by running
|
|
OpenStack API calls to generate running cloud applications. The
|
|
software integrates other core components of OpenStack into a
|
|
one-file template system. The templates enable you to create most
|
|
OpenStack resource types, such as instances, floating IPs,
|
|
volumes, security groups, users, and so on. Also, provides some
|
|
more advanced functionality, such as instance high availability,
|
|
instance auto-scaling, and nested stacks. By providing very tight
|
|
integration with other OpenStack core projects, all OpenStack core
|
|
projects could receive a larger user base.</para>
|
|
<para>Enables deployers to integrate with the Orchestration Service
|
|
directly or through custom plug-ins.</para>
|
|
<para>The Orchestration Service consists of the following
|
|
components:</para>
|
|
<itemizedlist>
|
|
<listitem><para><code>heat</code> tool. A CLI that communicates with the
|
|
heat-api to run AWS CloudFormation APIs. End developers could
|
|
also use the heat REST API directly.</para>
|
|
</listitem>
|
|
<listitem><para><code>heat-api</code> component. Provides an OpenStack-native
|
|
REST API that processes API requests by sending them to the
|
|
heat-engine over RPC.</para>
|
|
</listitem>
|
|
<listitem><para><code>heat-api-cfn</code> component. Provides an AWS Query API that is compatible with AWS CloudFormation
|
|
and processes API requests by sending them to the heat-engine over RPC.</para></listitem>
|
|
<listitem><para><code>heat-engine</code>. Orchestrates the launching of templates and provides events back to the API
|
|
consumer.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
</section>
|
|
<section xml:id="feedback">
|
|
<title>Feedback</title>
|
|
<para>To provide feedback on documentation, join and use the
|
|
<email>openstack-docs@lists.openstack.org</email> mailing list
|
|
at <link
|
|
xlink:href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs"
|
|
>OpenStack Documentation Mailing List</link>, or <link
|
|
xlink:href="https://bugs.launchpad.net/openstack-manuals/+filebug"
|
|
>report a bug</link>.</para>
|
|
</section>
|
|
</chapter>
|