247 lines
14 KiB
XML
247 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<section xml:id="configuring-openstack-compute-basics"
|
||
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">
|
||
<title>Post-Installation Configuration for OpenStack Compute</title>
|
||
<para>Configuring your Compute installation involves nova-manage commands plus editing the
|
||
nova.conf file to ensure the correct flags are set. This section contains the basics for
|
||
a simple multi-node installation, but Compute can be configured many ways. You can find
|
||
networking options and hypervisor options described in separate chapters, and you will
|
||
read about additional configuration information in a separate chapter as well.</para>
|
||
<section xml:id="setting-flags-in-nova-conf-file">
|
||
<title>Setting Flags in the nova.conf File</title>
|
||
<para> You only
|
||
need to do these steps when installing manually, the scripted installation above
|
||
does this configuration during the installation. A default set of options are
|
||
already configured in nova.conf when you install manually. The defaults are as
|
||
follows:</para>
|
||
<programlisting>
|
||
--daemonize=1
|
||
--dhcpbridge_flagfile=/etc/nova/nova.conf
|
||
--dhcpbridge=/bin/nova-dhcpbridge
|
||
--logdir=/var/log/nova
|
||
--state_path=/var/lib/nova
|
||
</programlisting>
|
||
<para>Starting with the default file, you must define the following required items in
|
||
/etc/nova/nova.conf. The flag variables are described below. You can place
|
||
comments in the nova.conf file by entering a new line with a # sign at the beginning of the line. To see a listing of all possible flag settings, see
|
||
the output of running /bin/nova-api --help.</para>
|
||
<table rules="all">
|
||
<caption>Description of nova.conf flags (not comprehensive)</caption>
|
||
<thead>
|
||
<tr>
|
||
<td>Flag</td>
|
||
<td>Description</td>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>--sql_connection</td>
|
||
<td>SQL Alchemy connect string (reference); Location of OpenStack Compute
|
||
SQL database</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--s3_host</td>
|
||
<td>IP address; Location where OpenStack Compute is hosting the objectstore
|
||
service, which will contain the virtual machine images and buckets</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--rabbit_host</td>
|
||
<td>IP address; Location of RabbitMQ server</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>--verbose</td>
|
||
<td>Set to 1 to turn on; Optional but helpful during initial setup</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td>--network_manager</td>
|
||
<td>
|
||
<para>Configures how your controller will communicate with additional
|
||
OpenStack Compute nodes and virtual machines. Options: </para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>nova.network.manager.FlatManager</para>
|
||
<para>Simple, non-VLAN networking</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>nova.network.manager.FlatDHCPManager</para>
|
||
<para>Flat networking with DHCP</para>
|
||
</listitem>
|
||
<listitem>
|
||
<para>nova.network.manager.VlanManager</para>
|
||
<para>VLAN networking with DHCP; This is the Default if no
|
||
network manager is defined here in nova.conf. </para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--fixed_range</td>
|
||
<td>IP address/range; Network prefix for the IP network that all the
|
||
projects for future VM guests reside on. Example: 192.168.0.0/12</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--ec2_host</td>
|
||
<td>IP address; Indicates where the nova-api service is installed.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--ec2_url</td>
|
||
<td>Url; Indicates the service for EC2 requests.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--osapi_host</td>
|
||
<td>IP address; Indicates where the nova-api service is installed.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--network_size</td>
|
||
<td>Number value; Number of addresses in each private subnet.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--glance_api_servers </td>
|
||
<td>IP and port; Address for Image Service.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>--use_deprecated_auth </td>
|
||
<td>If this flag is present, the Cactus method of authentication is used with the novarc file containing credentials.</td>
|
||
</tr>
|
||
|
||
</tbody>
|
||
</table>
|
||
<para>Here is a simple example nova.conf file for a small private cloud, with all the
|
||
cloud controller services, database server, and messaging server on the same
|
||
server.</para>
|
||
<programlisting>
|
||
--dhcpbridge_flagfile=/etc/nova/nova.conf
|
||
--dhcpbridge=/bin/nova-dhcpbridge
|
||
--logdir=/var/log/nova
|
||
--state_path=/var/lib/nova
|
||
--verbose
|
||
--use_deprecated_auth
|
||
--ec2_host=184.106.239.134
|
||
--ec2_url=http://184.106.239.134:8773/services/Cloud
|
||
--osapi_host=http://184.106.239.134
|
||
--s3_host=184.106.239.134
|
||
--rabbit_host=184.106.239.134
|
||
--fixed_range=192.168.0.0/16
|
||
--network_size=8
|
||
--glance_api_servers=184.106.239.134:9292
|
||
--routing_source_ip=184.106.239.134
|
||
--sql_connection=mysql://nova:notnova@184.106.239.134/nova
|
||
</programlisting>
|
||
<para>Create a “nova” group, so you can set permissions on the configuration file: </para>
|
||
<literallayout class="monospaced">sudo addgroup nova</literallayout>
|
||
<para>The nova.config file should have its owner set to root:nova, and mode set to 0640,
|
||
since the file contains your MySQL server’s username and password. You also want to
|
||
ensure that the nova user belongs to the nova group.</para>
|
||
<literallayout class="monospaced">
|
||
sudo usermod -g nova nova
|
||
chown -R root:nova /etc/nova
|
||
chmod 640 /etc/nova/nova.conf
|
||
</literallayout>
|
||
</section>
|
||
|
||
|
||
<section xml:id="configuring-multiple-compute-nodes">
|
||
<title>Configuring Multiple Compute Nodes</title><para>If your goal is to split your VM load across more than one server, you can connect an
|
||
additional nova-compute node to a cloud controller node. This configuring can be
|
||
reproduced on multiple compute servers to start building a true multi-node OpenStack
|
||
Compute cluster. </para><para>To build out and scale the Compute platform, you spread out services amongst many servers.
|
||
While there are additional ways to accomplish the build-out, this section describes
|
||
adding compute nodes, and the service we are scaling out is called
|
||
'nova-compute.'</para>
|
||
<para>For a multi-node install you only make changes to nova.conf and copy it to
|
||
additional compute nodes. Ensure each nova.conf file points to the correct IP
|
||
addresses for the respective services. Customize the nova.conf example below to
|
||
match your environment. The CC_ADDR is the Cloud Controller IP Address. </para>
|
||
<programlisting>
|
||
--dhcpbridge_flagfile=/etc/nova/nova.conf
|
||
--dhcpbridge=/usr/bin/nova-dhcpbridge
|
||
--flat_network_bridge=br100
|
||
--logdir=/var/log/nova
|
||
--state_path=/var/lib/nova
|
||
--verbose
|
||
--sql_connection=mysql://root:nova@CC_ADDR/nova
|
||
--s3_host=CC_ADDR
|
||
--rabbit_host=CC_ADDR
|
||
--ec2_api=CC_ADDR
|
||
--ec2_url=http://CC_ADDR:8773/services/Cloud
|
||
--network_manager=nova.network.manager.FlatManager
|
||
--fixed_range= network/CIDR
|
||
--network_size=number of addresses
|
||
</programlisting>
|
||
<para>
|
||
By default, Nova sets the bridge device based on the setting in --flat_network_bridge. Now you
|
||
can edit /etc/network/interfaces with the following template, updated with your IP
|
||
information.
|
||
</para>
|
||
|
||
<programlisting>
|
||
# The loopback network interface
|
||
auto lo
|
||
iface lo inet loopback
|
||
|
||
# The primary network interface
|
||
auto br100
|
||
iface br100 inet static
|
||
bridge_ports eth0
|
||
bridge_stp off
|
||
bridge_maxwait 0
|
||
bridge_fd 0
|
||
address xxx.xxx.xxx.xxx
|
||
netmask xxx.xxx.xxx.xxx
|
||
network xxx.xxx.xxx.xxx
|
||
broadcast xxx.xxx.xxx.xxx
|
||
gateway xxx.xxx.xxx.xxx
|
||
# dns-* options are implemented by the resolvconf package, if installed
|
||
dns-nameservers xxx.xxx.xxx.xxx
|
||
</programlisting>
|
||
<para>Restart networking:</para>
|
||
|
||
<literallayout class="monospaced">/etc/init.d/networking restart</literallayout>
|
||
<para>With nova.conf updated and networking set, configuration is nearly complete.
|
||
First, bounce the relevant services to take the latest updates:</para>
|
||
|
||
<literallayout class="monospaced">restart libvirt-bin; service nova-compute restart</literallayout>
|
||
<para>To avoid issues with KVM and permissions with Nova, run the following commands to ensure we have VM's that are running optimally:</para>
|
||
|
||
<literallayout class="monospaced">
|
||
chgrp kvm /dev/kvm
|
||
chmod g+rwx /dev/kvm
|
||
</literallayout>
|
||
<para>If you want to use the 10.04 Ubuntu Enterprise Cloud images that are readily available at http://uec-images.ubuntu.com/releases/10.04/release/, you may run into delays with booting. Any server that does not have nova-api running on it needs this iptables entry so that UEC images can get metadata info. On compute nodes, configure the iptables with this next step:</para>
|
||
|
||
<literallayout class="monospaced">iptables -t nat -A PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination $NOVA_API_IP:8773</literallayout>
|
||
|
||
<para>Lastly, confirm that your compute node is talking to your cloud controller. From the cloud controller, run this database query:</para>
|
||
<literallayout class="monospaced">mysql -u$MYSQL_USER -p$MYSQL_PASS nova -e 'select * from services;'</literallayout>
|
||
<para>In return, you should see something similar to this:</para>
|
||
|
||
<programlisting>
|
||
+---------------------+---------------------+------------+---------+----+----------+----------------+-----------+--------------+----------+-------------------+
|
||
| created_at | updated_at | deleted_at | deleted | id | host | binary | topic | report_count | disabled | availability_zone |
|
||
+---------------------+---------------------+------------+---------+----+----------+----------------+-----------+--------------+----------+-------------------+
|
||
| 2011-01-28 22:52:46 | 2011-02-03 06:55:48 | NULL | 0 | 1 | osdemo02 | nova-network | network | 46064 | 0 | nova |
|
||
| 2011-01-28 22:52:48 | 2011-02-03 06:55:57 | NULL | 0 | 2 | osdemo02 | nova-compute | compute | 46056 | 0 | nova |
|
||
| 2011-01-28 22:52:52 | 2011-02-03 06:55:50 | NULL | 0 | 3 | osdemo02 | nova-scheduler | scheduler | 46065 | 0 | nova |
|
||
| 2011-01-29 23:49:29 | 2011-02-03 06:54:26 | NULL | 0 | 4 | osdemo01 | nova-compute | compute | 37050 | 0 | nova |
|
||
| 2011-01-30 23:42:24 | 2011-02-03 06:55:44 | NULL | 0 | 9 | osdemo04 | nova-compute | compute | 28484 | 0 | nova |
|
||
| 2011-01-30 21:27:28 | 2011-02-03 06:54:23 | NULL | 0 | 8 | osdemo05 | nova-compute | compute | 29284 | 0 | nova |
|
||
+---------------------+---------------------+------------+---------+----+----------+----------------+-----------+--------------+----------+-------------------+
|
||
</programlisting>
|
||
|
||
<para>You can see that 'osdemo0{1,2,4,5} are all running 'nova-compute.' When you start spinning up instances, they will allocate on any node that is running nova-compute from this list.</para>
|
||
|
||
</section>
|
||
<section xml:id="determining-version-of-compute">
|
||
|
||
<title>Determining the Version of Compute</title>
|
||
<para>You can find the version of the installation by using the nova-manage
|
||
command:</para>
|
||
<literallayout class="monospaced">nova-manage version list</literallayout>
|
||
</section>
|
||
|
||
</section>
|