openstack-manuals/doc/training-guides/lab003-compute-node.xml

291 lines
12 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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="lab003-compute-node">
<title>Compute Node</title>
<orderedlist>
<listitem>
<para><emphasis role="bold">Network Diagram :</emphasis></para>
</listitem>
</orderedlist>
<figure>
<title>Network Diagram</title>
<mediaobject>
<imageobject>
<imagedata fileref="figures/lab000-virtual-box/image03.png"
contentwidth="7in"/>
</imageobject>
</mediaobject>
</figure>
<para>Publicly editable image source at <link
xlink:href="https://docs.google.com/drawings/d/1GX3FXmkz3c_tUDpZXUVMpyIxicWuHs5fNsHvYNjwNNk/edit?usp=sharing"
>https://docs.google.com/drawings/d/1GX3FXmkz3c_tUDpZXUVMpyIxicWuHs5fNsHvYNjwNNk/edit?usp=sharing</link></para>
<para><emphasis role="bold">Vboxnet0</emphasis>, <emphasis
role="bold">Vboxnet1</emphasis>, <emphasis role="bold"
>Vboxnet2</emphasis> - are virtual networks setup up by virtual
box with your host machine. This is the way your host can
communicate with the virtual machines. These networks are in turn
used by virtual box VMs for OpenStack networks, so that
OpenStacks services can communicate with each other.</para>
<para><guilabel>Compute Node</guilabel></para>
<para>Start your Controller Node (the one you setup in the previous
section).</para>
<para><emphasis role="bold">Preparing Ubuntu 12.04</emphasis></para>
<itemizedlist>
<listitem>
<para>After you install Ubuntu Server, go in sudo mode</para>
<para>
<screen><prompt>$</prompt> <userinput>sudo su</userinput></screen>
</para>
</listitem>
<listitem>
<para>Add Icehouse repositories:</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get install ubuntu-cloud-keyring python-software-properties software-properties-common python-keyring</userinput></screen>
<screen><prompt>#</prompt> <userinput>echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/icehouse main >> /etc/apt/sources.list.d/icehouse.list</userinput></screen>
</para>
</listitem>
<listitem>
<para>Update your system:</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get update</userinput></screen>
<screen><prompt>#</prompt> <userinput>apt-get upgrade</userinput></screen>
<screen><prompt>#</prompt> <userinput>apt-get dist-update</userinput></screen>
</para>
</listitem>
<listitem>
<para>Install NTP and other services:</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get install ntp vlan bridge-utils</userinput></screen>
</para>
</listitem>
<listitem>
<para>Configure NTP Server to Controller Node:</para>
<para>
<screen><prompt>#</prompt> <userinput>sed -i 's/server 0.ubuntu.pool.ntp.org/#server0.ubuntu.pool.ntp.org/g' /etc/ntp.conf</userinput></screen>
<screen><prompt>#</prompt> <userinput>sed -i 's/server 1.ubuntu.pool.ntp.org/#server1.ubuntu.pool.ntp.org/g' /etc/ntp.conf</userinput></screen>
<screen><prompt>#</prompt> <userinput>sed -i 's/server 2.ubuntu.pool.ntp.org/#server2.ubuntu.pool.ntp.org/g' /etc/ntp.conf</userinput></screen>
<screen><prompt>#</prompt> <userinput>sed -i 's/server 3.ubuntu.pool.ntp.org/#server3.ubuntu.pool.ntp.org/g' /etc/ntp.conf</userinput></screen>
</para>
</listitem>
<listitem>
<para>Enable IP Forwarding by adding the following to <filename>/etc/sysctl.conf</filename></para>
<para>
<programlisting>net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0</programlisting>
</para>
</listitem>
<listitem>
<para>Run the following commands:</para>
<para>
<screen><prompt>#</prompt> <userinput>sysctl net.ipv4.ip_forward=1</userinput></screen>
<screen><prompt>#</prompt> <userinput>sysctl net.ipv4.conf.all.rp_filter=0</userinput></screen>
<screen><prompt>#</prompt> <userinput>sysctl net.ipv4.conf.default.rp_filter=0</userinput></screen>
<screen><prompt>#</prompt> <userinput>sysctl -p</userinput></screen>
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">KVM</emphasis></para>
<itemizedlist>
<listitem>
<para>Install KVM:</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get install -y kvm libvirt-bin pm-utils</userinput></screen>
</para>
</listitem>
<listitem>
<para>Edit <filename>/etc/libvirt/qemu.conf</filename></para>
<para><programlisting>cgroup_device_acl = [
"/dev/null", "/dev/full", "/dev/zero",
"/dev/random", "/dev/urandom",
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
"/dev/rtc", "/dev/hpet","/dev/net/tun"
]</programlisting></para>
</listitem>
<listitem>
<para>Delete Default Virtual Bridge</para>
<para>
<screen><prompt>#</prompt> <userinput>virsh net-destroy default</userinput></screen>
<screen><prompt>#</prompt> <userinput>virsh net-undefine default</userinput></screen>
</para>
</listitem>
<listitem>
<para>To Enable Live Migration Edit <filename>/etc/libvirt/libvirtd.conf</filename></para>
<para><programlisting>listen_tls = 0
listen_tcp = 1
auth_tcp = "none"</programlisting></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/init/libvirt-bin.conf</filename></para>
<para><programlisting>env libvirtd_opts="-d -l"</programlisting></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/default/libvirt-bin</filename></para>
<para><programlisting>libvirtd_opts="-d -l"</programlisting></para>
</listitem>
<listitem>
<para>Restart libvirt</para>
<para>
<screen><prompt>#</prompt> <userinput>service dbus restart</userinput></screen>
<screen><prompt>#</prompt> <userinput>service libvirt-bin restart</userinput></screen>
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Neutron and OVS</emphasis></para>
<itemizedlist>
<listitem>
<para>Install Open vSwitch</para>
<screen><prompt>#</prompt> <userinput>apt-get install -y openvswitch-switch openvswitch-datapath-dkms</userinput></screen>
</listitem>
<listitem>
<para>Create bridges:</para>
<para>
<screen><prompt>#</prompt> <userinput>ovs-vsctl add-br br-int</userinput></screen>
</para>
</listitem>
<listitem>
<para>Neutron</para>
<para>Install the Neutron Open vSwitch agent:</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get -y install neutron-plugin-openvswitch-agent</userinput></screen>
</para>
</listitem>
<listitem>
<para>Edit <filename>/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini</filename></para>
<para><programlisting>#Under the database section
[database]
connection = mysql://neutronUser:neutronPass@192.168.100.51/neutron
#Under the OVS section
[ovs]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
integration_bridge = br-int
tunnel_bridge = br-tun
local_ip = 10.10.10.53
enable_tunneling = True
tunnel_type=gre
[agent]
tunnel_types = gre
#Firewall driver for realizing quantum security group function
[SECURITYGROUP]
firewall_driver =
neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver</programlisting></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/neutron/neutron.conf</filename></para>
<para><programlisting>rabbit_host = 192.168.100.51
#And update the keystone_authtoken section
[keystone_authtoken]
auth_host = 192.168.100.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = quantum
admin_password = service_pass
signing_dir = /var/lib/quantum/keystone-signing
[database]
connection = mysql://neutronUser:neutronPass@192.168.100.51/neutron</programlisting></para>
</listitem>
<listitem>
<para>Restart all the services:</para>
<para>
<screen><prompt>#</prompt> <userinput>service neutron-plugin-openvswitch-agent restart</userinput></screen>
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Nova</emphasis></para>
<itemizedlist>
<listitem>
<para>Install Nova</para>
<para>
<screen><prompt>#</prompt> <userinput>apt-get install nova-compute-kvm python-guestfs</userinput></screen>
<screen><prompt>#</prompt> <userinput>chmod 0644 /boot/vmlinuz*</userinput></screen>
</para>
</listitem>
<listitem>
<para>Edit <filename>/etc/nova/api-paste.ini</filename></para>
<para><programlisting>[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 192.168.100.51
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = service_pass
signing_dirname = /tmp/keystone-signing-nova
# Workaround for https://bugs.launchpad.net/nova/+bug/1154809
auth_version = v2.0</programlisting></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/nova/nova-compute.conf</filename></para>
<para><programlisting>[DEFAULT]
libvirt_type=qemu
libvirt_ovs_bridge=br-int
libvirt_vif_type=ethernet
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
libvirt_use_virtio_for_bridges=True</programlisting></para>
</listitem>
<listitem>
<para>Edit <filename>/etc/nova/nova.conf</filename></para>
<para><programlisting>[DEFAULT]
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/run/lock/nova
verbose=True
api_paste_config=/etc/nova/api-paste.ini
compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler
rabbit_host=192.168.100.51
nova_url=http://192.168.100.51:8774/v1.1/
sql_connection=mysql://novaUser:novaPass@192.168.100.51/nova
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
# Auth
use_deprecated_auth=false
auth_strategy=keystone
# Imaging service
glance_api_servers=192.168.100.51:9292
image_service=nova.image.glance.GlanceImageService
# Vnc configuration
novnc_enabled=true
novncproxy_base_url=http://192.168.100.51:6080/vnc_auto.html
novncproxy_port=6080
vncserver_proxyclient_address=10.10.10.53
vncserver_listen=0.0.0.0
# Network settings
network_api_class=nova.network.neutronv2.api.API
neutron_url=http://192.168.100.51:9696
neutron_auth_strategy=keystone
neutron_admin_tenant_name=service
neutron_admin_username=neutron
neutron_admin_password=service_pass
neutron_admin_auth_url=http://192.168.100.51:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
#If you want Neutron + Nova Security groups
firewall_driver=nova.virt.firewall.NoopFirewallDriver
security_group_api=neutron
#If you want Nova Security groups only, comment the two lines above and uncomment line -1-.
#-1-firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
#Metadata
service_neutron_metadata_proxy = True
neutron_metadata_proxy_shared_secret = helloOpenStack
# Compute #
compute_driver=libvirt.LibvirtDriver
# Cinder #
volume_api_class=nova.volume.cinder.API
osapi_volume_listen_port=5900
cinder_catalog_info=volume:cinder:internalURL</programlisting></para>
</listitem>
<listitem>
<para>Restart nova services</para>
<screen><prompt>#</prompt> <userinput>cd /etc/init.d/; for i in $( ls nova-* ); do service $i restart; done</userinput></screen>
</listitem>
<listitem>
<para>List nova services (Check for the Smiley Faces to know if the services are running):</para>
<screen><prompt>#</prompt> <userinput>nova-manage service list</userinput></screen>
</listitem>
</itemizedlist>
</chapter>