openstack-manuals/doc/training-guides/module001-ch010-vm-provisioning-indepth.xml
Andreas Jaeger a3d8ad2e5f Training guide: Fix diagrams for PDF output
A lot of images are very large in PDF output, follow our documented
conventions to add contentwidth="7in" everywhere.
The Training Guides use landscape mode - thus we use "7in" instead
of the usual "6in".

Change-Id: I74052b864f65ed2a1199e5008a62b9a95cac9968
Closes-Bug: #1294054
2014-05-06 20:38:28 +02:00

218 lines
6.9 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="module001-ch010-vm-provisioning-indepth">
<title>VM provisioning in-depth</title>
<!--
<para>More content to be added...</para>
-->
<para>
The request flow for provisioning an instance goes like
this:
</para>
<!-- The steps here correspond to numbers in figure
figures/image02.png at the end of this file. Do not renumber
the steps -->
<orderedlist>
<listitem>
<!-- 1 -->
<para>The dashboard or CLI gets the user credentials and authenticates
with the Identity Service via REST API.
</para>
<para>
The Identity Service authenticates the user with the user
credentials, and then generates and sends back an auth-token
which will be used for sending the request to other components
through REST-call.
</para>
</listitem>
<listitem>
<!-- 2 -->
<para>
The dashboard or CLI converts the new instance request
specified in <guilabel>launch instance</guilabel> or
<command>nova-boot</command> form to a REST API request and
sends it to <systemitem class="service">nova-api</systemitem>.
</para>
</listitem>
<listitem>
<!-- 3 -->
<para>
<systemitem class="service">nova-api</systemitem> receives the
request and sends a request to the Identity Service for
validation of the auth-token and access permission.
</para>
<para>
The Identity Service validates the token and sends updated
authentication headers with roles and permissions.
</para>
</listitem>
<listitem>
<!-- 4 -->
<para>
<systemitem class="service">nova-api</systemitem> checks for
conflicts with <systemitem
class="service">nova-database</systemitem>.
</para>
<para>
<systemitem class="service">nova-api</systemitem> creates
initial database entry for a new instance.
</para>
</listitem>
<listitem>
<!-- 5 -->
<para>
<systemitem class="service">nova-api</systemitem> sends the
rpc.call request to <systemitem
class="service">nova-scheduler</systemitem> expecting to get
updated instance entry with host ID specified.
</para>
</listitem>
<listitem>
<!-- 6 -->
<para>
<systemitem class="service">nova-scheduler</systemitem> picks
up the request from the queue.
</para>
</listitem>
<listitem>
<!-- 7 -->
<para>
<systemitem class="service">nova-scheduler</systemitem>
interacts with <systemitem
class="service">nova-database</systemitem> to find an
appropriate host via filtering and weighing.
</para>
<para>
<systemitem class="service">nova-scheduler</systemitem>
returns the updated instance entry with the appropriate host
ID after filtering and weighing.
</para>
<para>
<systemitem class="service">nova-scheduler</systemitem> sends
the rpc.cast request to <systemitem
class="service">nova-compute</systemitem> for launching an
instance on the appropriate host.
</para>
</listitem>
<listitem>
<!-- 8 -->
<para>
<systemitem class="service">nova-compute</systemitem> picks up
the request from the queue.
</para>
</listitem>
<listitem>
<para>
<!-- 9 -->
<systemitem class="service">nova-compute</systemitem> sends the
rpc.call request to <systemitem
class="service">nova-conductor</systemitem> to fetch the
instance information such as host ID and flavor (RAM, CPU,
Disk).
</para>
</listitem>
<listitem>
<!-- 10 -->
<para>
<systemitem class="service">nova-conductor</systemitem> picks
up the request from the queue.
</para>
</listitem>
<listitem>
<!-- 11 -->
<para>
<systemitem class="service">nova-conductor</systemitem>
interacts with <systemitem
class="service">nova-database</systemitem>.
</para>
<para>
<systemitem class="service">nova-conductor</systemitem>
returns the instance information.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> picks up the
instance information from the queue.
</para>
</listitem>
<listitem>
<!-- 12 -->
<para>
<systemitem class="service">nova-compute</systemitem> performs
the REST call by passing the auth-token to <systemitem
class="service">glance-api</systemitem>. Then, <systemitem
class="service">nova-compute</systemitem> uses the Image ID to
retrieve the Image URI from the Image Service, and loads the
image from the image storage.
</para>
</listitem>
<listitem>
<para>
<!-- 13 -->
<systemitem class="service">glance-api</systemitem> validates
the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> gets the
image metadata.
</para>
</listitem>
<listitem>
<para>
<!-- 14 -->
<systemitem class="service">nova-compute</systemitem> performs
the REST-call by passing the auth-token to Network API to
allocate and configure the network so that the instance gets
the IP address.
</para>
</listitem>
<listitem>
<!-- 15 -->
<para>
<systemitem class="service">neutron-server</systemitem>
validates the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem>
retrieves the network info.
</para>
</listitem>
<listitem>
<para>
<!-- 16 -->
<systemitem class="service">nova-compute</systemitem> performs
the REST call by passing the auth-token to Volume API to attach
volumes to the instance.
</para>
</listitem>
<listitem>
<para>
<!-- 17 -->
<systemitem class="service">cinder-api</systemitem> validates
the auth-token with keystone.
</para>
<para>
<systemitem class="service">nova-compute</systemitem> retrieves the
block storage info.
</para>
</listitem>
<listitem>
<para>
<systemitem class="service">nova-compute</systemitem>
generates data for the hypervisor driver and executes the
request on the hypervisor (via libvirt or API).
</para>
</listitem>
</orderedlist>
<figure>
<title>Nova VM provisioning</title>
<mediaobject>
<imageobject>
<imagedata fileref="figures/image02.png" contentwidth="7in"/>
</imageobject>
</mediaobject>
</figure>
</chapter>