nova/api-guide/source/general_info.rst
2016-01-05 21:52:14 +00:00

293 lines
11 KiB
ReStructuredText

=========================
Key Compute API Concepts
=========================
The OpenStack Compute API is defined as a RESTful HTTP service. The API
takes advantage of all aspects of the HTTP protocol (methods, URIs,
media types, response codes, etc.) and providers are free to use
existing features of the protocol such as caching, persistent
connections, and content compression among others.
Providers can return information identifying requests in HTTP response
headers, for example, to facilitate communication between the provider
and client users.
OpenStack Compute is a compute service that provides server capacity in
the cloud. Compute Servers come in different flavors of memory, cores,
disk space, and CPU, and can be provisioned in minutes. Interactions
with Compute Servers can happen programmatically with the OpenStack
Compute API.
User Concepts
==============
To use the OpenStack Compute API effectively, you should understand
several key concepts:
- **Server**
A virtual machine (VM) instance in the compute system. Flavor and
image are requisite elements when creating a server. A name for the server
is also required.
For more details, such as server actions and server metadata,
please see: :doc:`server_concepts`
- **Flavor**
An available hardware configuration for a server. Each flavor has a
unique combination of disk space, memory capacity and priority for
CPU time.
- **Flavor Extra Specs**
TODO: Short description at here. The detail reference to
:doc:`extra_specs_and_properties`
- **Image**
A collection of files used to create or rebuild a server. Operators
provide a number of pre-built OS images by default. You may also
create custom images from cloud servers you have launched. These
custom images are useful for backup purposes or for producing “gold”
server images if you plan to deploy a particular server configuration
frequently.
- **Image Properties**
TODO: Short description at here. The detail reference to
:doc:`extra_specs_and_properties`
- **Key Pair**
An ssh or x509 keypair that can be injected into a server. This allows you
to connect to your server once it has been created without having to use a
password. If you don't specify a key pair, Nova will create a root password
for you, and return it in plain text in the server create response.
- **Volume**
A block storage device that Nova can use as permanent storage. When a server
is created it has some disk storage available, but that is considered
ephemeral, as it is destroyed when the server is destroyed. A volume can be
attached to a server, then later detached and used by another server.
Volumes are created and managed by the Cinder service, though the Nova API
can proxy some of these calls.
- **Quotas**
An upper bound on the amount of resources any individual tenant may consume.
Quotas can be used to limit the number of servers a tenant creates, or the
amount of disk space consumed, so that no one tenant can overwhelm the
system and prevent normal operation for others. Changing quotas is an
administrator-level action.
- **Rate Limiting**
Please see :doc:`limits`
- **Availability zone**
A grouping of host machines that can be used to control where a new server
is created. There is some confusion about this, as the name "availability
zone" is used in other clouds, such as Amazon Web Services, to denote a
physical separation of server locations that can be used to distribute cloud
resources for fault tolerance in case one zone is unavailable for any
reason. Such a separation is possible in Nova if an administrator carefully
sets up availability zones for that, but it is not the default.
Networking Concepts
-------------------
In this section we focus on this related to networking.
- **Port**
TODO
- **Floating IPs, Pools and DNS**
TODO
- **Security Groups**
TODO
- **Cloudpipe**
TODO
- **Extended Networks**
TODO
Administrator Concepts
=======================
Some APIs are largely focused on administration of Nova, and generally focus
on compute hosts rather than servers.
- **Services**
Services are provide by Nova components. Normally, the Nova component runs
as a process on the controller/compute node to provide the service. These
services may be end-user facing, such as the the OpenStack Compute REST API
service, but most just work with other Nova services. The status of each
service is monitored by Nova, and if it is not responding normally, Nova
will update its status so that requests are not sent to that service
anymore. The service can also be controlled by an Administrator in order to
run maintenance or upgrades, or in response to changing workloads.
- **nova-osapi_compute**
This service provides the OpenStack Compute REST API to end users.
- **nova-metadata**
This service provides the OpenStack Metadata API to servers. The metadata
is used to configure the running servers.
- **nova-scheduler**
This service provides compute request scheduling by tracking available
resources, and finding the host that can best fulfill the request.
- **nova-conductor**
This service provides database access for the other services, and handles
internal version compatibility when different services are running
different versions of code. The conductor service also handles
long-running requests.
- **nova-compute**
This service runs on every compute node, and communicates with a
hypervisor for managing compute resources on that node.
- **nova-network**
This service handles networking of virtual servers. It is no longer under
active development, and is being replaced by Neutron.
- **nova-ec2(deprecated)**
This service provides AWS EC2 API compatibility.
- **nova-consoleauth**
This service provides authorization for consoles.
- **nova-cert**
This service handles the management of X509 certificates.
- **Services Actions**
- **enable, disable, disable-log-reason**
The service can be disabled to indicate the service didn't provided
service anymore. This is used by administrator to stop service for
maintenance.
For example, when Administrator wants to maintain a specific compute node,
Administrator can disable nova-compute service on that compute node. Then
nova won't dispatch any new compute request to that compute node anymore.
Administrator also can add note for disable reason.
- **forced-down**
This action allows you set the state of service down immediately. Actually
Nova only provides the health monitor of service status, there isn't any
guarantee about health status of other parts of infrastructure, like the
health status of data network, storage network and other hardwares. The
more complete health monitor of infrastructure is provided by external
system normally. An external health monitor system can marks the service
down for notifying the fault.
`(This action is enabled in Microversion 2.11)`
- **Hosts**
Hosts are the *physical machines* that provide the resources for the virtual
servers created in Nova. They run a ``hypervisor`` (see definition below)
that handles the actual creation and management of the virtual servers.
Hosts also run the ``Nova compute service``, which receives requests from
Nova to interact with the virtual servers on that machine. When compute
service receives a request, it calls the appropriate methods of the driver
for that hypervisor in order to carry out the request. The driver acts as
the translator from generic Nova requests to hypervisor-specific calls.
Hosts report their current state back to Nova, where it is tracked by the
scheduler service, so that the scheduler can place requests for new virtual
servers on the hosts that can best fit them.
- **Host Actions**
A *host action* is one that affects the physical host machine, as opposed to
actions that only affect the virtual servers running on that machine. There
are three 'power' actions that are supported: *startup*, *shutdown*, and
*reboot*. There are also two 'state' actions: enabling/disabling the host,
and setting the host into or out of maintenance mode. Of course, carrying
out these actions can affect running virtual servers on that host, so their
state will need to be considered before carrying out the host action. For
example, if you want to call the 'shutdown' action to turn off a host
machine, you might want to migrate any virtual servers on that host before
shutting down the host machine so that the virtual servers continue to be
available without interruption.
- **Hypervisors**
A hypervisor, or virtual machine monitor (VMM), is a piece of computer
software, firmware or hardware that creates and runs virtual machines.
In nova, each Host (see `Hosts`) runs a hypervisor. Administrators are able
to query the hypervisor for information, such as all the virtual servers
currently running, as well as detailed info about the hypervisor, such as
CPU, memory, or disk related configuration.
Currently nova-compute also support Ironic and LXC, but they don't have
a hypervisor running.
- **Aggregates**
Please see :doc:`aggregates.rst`
- **Migrations**
Migrations are the process where a virtual server is moved from one host to
another. Please see :doc:`server_concepts` for details about
moving servers.
Administrators are able to query the records in database for information
about migrations. For example, they can determine the source and
destination hosts, type of migration, or changes in the server's flavor.
- **Certificates**
Nova service "nova-cert" handles the management of X509 certificates which
are used to generate certificates for euca-bundle-image.
Relationship with Volume API
=============================
Here we discuss about Cinder's API and how Nova users volume uuids.
TODO - add more details.
Relationship with Image API
=============================
Here we discuss about Glance's API and how Nova users image uuids.
We also discuss how Nova proxies setting image metadata.
TODO - add more details.
Interactions with Neutron and Nova-Network
==========================================
We talk about how networking can be provided be either by Nova or Neutron.
Here we discuss about Neutron's API an how Nova users port uuids.
We also discuss Nova automatically creating ports, proxying security groups,
and proxying floating IPs. Also talk about the APIs we do not proxy.
TODO - add more details.