Configure a compute node After 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 192.168.0.11 for the internal network. Do not configure eth1 with a static IP address. The networking component of OpenStack assigns and configures an IP address. 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-guestfs When prompted to create a supermin appliance, respond yes. To use the meta-packages and install other components on your compute node, such as OVS Networking and Ceilometer agents, run this command: # apt-get install openstack-compute-node The 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-utils Respond 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/statoverride Edit 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_PASS Edit 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_PASS Configure 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 controller Configure 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: rpc_backend = nova.rpc.impl_kombu rabbit_host = controller rabbit_password = RABBIT_PASS Configure 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_PASS Configure Compute to provide remote console access to instances. # openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.0.11 # 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 192.168.0.11 # openstack-config --set /etc/nova/nova.conf \ DEFAULT novncproxy_base_url http://controller:6080/vnc_auto.html Edit /etc/nova/nova.conf and add the following keys under the [DEFAULT] section: [DEFAULT] ... my_ip=192.168.0.11 vnc_enabled=True vncserver_listen=0.0.0.0 vncserver_proxyclient_address=192.168.0.11 novncproxy_base_url=http://controller:6080/vnc_auto.html Specify 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=controller If 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/cpuinfo If 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 = qemu 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. Configure libvirt to use QEMU: # openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu Start 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 Remove the SQLite database created by the packages: # rm /var/lib/nova/nova.sqlite