291 lines
12 KiB
XML
291 lines
12 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="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 VM’s for OpenStack networks, so that
|
||
OpenStack’s 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>
|