a3d8ad2e5f
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
218 lines
6.9 KiB
XML
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>
|