Configure a compute nodeAfter you configure the Compute service on the controller
node, you must configure another system as a compute node. The
compute node receives requests from the controller node and hosts
virtual machine instances. You can run all services on a single
node, but the examples in this guide use separate systems. This
makes it easy to scale horizontally by adding additional Compute
nodes following the instructions in this section.The Compute service relies on a hypervisor to run virtual
machine instances. OpenStack can use various hypervisors, but this
guide uses KVM.
Configure the system. Use the instructions in , but note the following differences from
the controller node:Use different IP addresses when you configure
eth0. This guide uses
10.0.0.31 for the management
network of the first compute node.
If you run OpenStack Networking (neutron), configure
eth1 as instance tunnels interface
with IP address 10.0.1.31 for the
first compute node. For details, see the instructions in
If you run legacy networking (nova-network), do not
configure eth1 with a static IP
address. The networking component of OpenStack assigns
and configures an IP address. For details, see the
instructions in .
Set the host name to compute1. To
verify, use the uname -n parameter. Ensure
that the IP addresses and host names for both nodes are
listed in the /etc/hosts file on each
system.Synchronize from the controller node. Follow the
instructions in .Install the MySQL client libraries. You do not need to
install the MySQL database server or start the MySQL
service.Enable the OpenStack packages for the distribution
that you are using. See .After you configure the operating system, install the
appropriate packages for the Compute service.Run this command:#apt-get install nova-compute-kvm python-guestfsWhen prompted to create a
supermin appliance, respond
yes.To use the meta-packages and install other components on
your compute node, such as OpenStack Networking and Ceilometer
agents, run this command:#apt-get install openstack-compute-nodeThe controller node has the
openstack-proxy-node and
openstack-toaster meta-packages that
install openstack-proxy-node and
openstack-toaster at the same
time.#yum install openstack-nova-compute#zypper install openstack-nova-compute kvm openstack-utilsRespond to the prompts for database
management, [keystone_authtoken] settings,
RabbitMQ
credentials, and API endpoint registration.For security reasons, the Linux kernel is not readable by
normal users which restricts hypervisor services such as qemu
and libguestfs. For details, see this bug. To make the current kernel readable, run:
#dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
To also enable this override for all future kernel updates, create the
file /etc/kernel/postinst.d/statoverride
containing:#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
Remember to make the file executable:
#chmod +x /etc/kernel/postinst.d/statoverrideEdit the
/etc/nova/nova.conf configuration file:
#openstack-config --set /etc/nova/nova.conf database connection mysql://nova:NOVA_DBPASS@controller/nova#openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone#openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller:5000#openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller#openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http#openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357#openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova#openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service#openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password NOVA_PASSEdit the
/etc/nova/nova.conf configuration file and add these
lines to the appropriate sections:[DEFAULT]
...
auth_strategy = keystone
...
[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://nova:NOVA_DBPASS@controller/nova
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASSConfigure the Compute service to use the
Qpid message broker by setting these configuration keys:#openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend nova.openstack.common.rpc.impl_qpid#openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controllerConfigure the Compute service to use
the RabbitMQ message broker by setting these configuration
keys in the [DEFAULT] configuration group of
the /etc/nova/nova.conf file:[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASSConfigure the Compute service to use the RabbitMQ message broker
by setting these configuration keys:#openstack-config --set /etc/nova/nova.conf \
DEFAULT rpc_backend nova.rpc.impl_kombu#openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_host controller#openstack-config --set /etc/nova/nova.conf DEFAULT rabbit_password RABBIT_PASSConfigure Compute to provide remote console access to instances.#openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.0.0.31#openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True#openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0#openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.0.0.31#openstack-config --set /etc/nova/nova.conf \
DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.htmlEdit
/etc/nova/nova.conf and add the following
keys under the
[DEFAULT]
section:[DEFAULT]
...
my_ip = 10.0.0.31
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.31
novncproxy_base_url = http://controller:6080/vnc_auto.htmlSpecify the host that runs the Image Service. Edit
/etc/nova/nova.conf file and add
these lines to the [DEFAULT]
section:#openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller[DEFAULT]
...
glance_host = controllerIf you install Compute on a virtual machine for testing
purposes, you must determine whether your hypervisor and/or CPU
support nested hardware acceleration using the following
command:$egrep -c '(vmx|svm)' /proc/cpuinfoIf this command returns a value of
one or greater, your hypervisor and/or CPU
support nested hardware acceleration which requires no
additional configuration.If this command returns a value of
zero, your hypervisor and/or CPU do not
support nested hardware acceleration and
libvirt must use QEMU instead of KVM. Edit
the [libvirt] section in the
/etc/nova/nova-compute.conf file to modify
this key:[libvirt]
...
virt_type = qemuIf this command returns
a value of zero, your hypervisor and/or CPU
do not support nested hardware acceleration and
libvirt must use QEMU instead of KVM.
Configure libvirt to use QEMU:#openstack-config --set /etc/nova/nova.conf libvirt virt_type qemuRemove the SQLite database created by the packages:#rm /var/lib/nova/nova.sqliteStart the Compute
service and configure it to start when the system
boots:Restart the Compute service:#service nova-compute restart#service libvirtd start#service messagebus start#chkconfig libvirtd on#chkconfig messagebus on#service openstack-nova-compute start#chkconfig openstack-nova-compute on#service libvirtd start#chkconfig libvirtd on#service openstack-nova-compute start#chkconfig openstack-nova-compute on