2b8aaaed53
Quantum changed to Neutron added plural receives changed authenticate to plural added the before request added and before authenticates added the before appropriate added the before nova-database return to plural added the before glance-api changed upload to plural and added the changed to "so that the" vs "such the" changed get to gets plural added the before instance added the before hypervisor driver capitalized api changed in-depth to In Depth Add <systemitem> markup Rework list so that step numbers match the graphic. Co-Authored-By: Andreas Jaeger <aj@suse.de> Change-Id: I0e966c18f8783cbd04da813175da1e60d9753b2b
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"/>
|
|
</imageobject>
|
|
</mediaobject>
|
|
</figure>
|
|
</chapter>
|