This installation procedure is a simple way (using packstack) to deploy a multi-node environment in a few minutes.
Using this procedure, all services will be installed on your controller node except for compute nodes which you can be outsourced to other servers. Here is a simple diagram showing my setup:
Obviously, this is not following best-practices. But it’s an easy way to get Openstack up in a few minutes and test functionalities including live-migration between hosts.
We will configure Neutron to use VXLAN to encapsulate traffic between your hosts and provide full SDN capabilities.
Install RHEL7 basic on all your nodes.
All nodes should have two interfaces (public, private). That said, your public interface will only be used on your controller node. You can disable the public interface on your compute node later if you’d like.
Register / Update / Disable Network Manager (all your nodes)
subscription-manager subscribe --auto
subscription-manager repos --disable=*
subscription-manager repos --enable=rhel-7-server-rpms
subscription-manager repos --enable=rhel-7-server-openstack-5.0-rpms
yum -y update
systemctl disable NetworkManager
Verify that your network interfaces in /etc/sysconfig/network-scripts have an entry called : DEVICE=<interface_name>. When disabling Network Manager, your interface will not come back up if this entry is missing.
Disable SELINUX on all your hosts
Install NFS server on your controller node for Cinder and Nova instances
yum groupinstall -y file-server
firewall-cmd --permanent --add-service=nfs
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
mkdir -p /exports/cinder
chmod 777 /exports/cinder
mkdir -p /exports/nova
chmod 777 /exports/nova
systemctl restart nfs-server
* Obviously, 777 permissions are not ideal. But once packstack installation is completed, you can come back and change ownership of these folders to the appropriate cinder & nova users.
yum install -y openstack-packstack
Generate SSH keys
Generate a packstack answer file
Edit the answer file to provide all configuration details
Use my answer file as an example to validate all your settings.
packstack answer file
You could also just use my file but by generating a new file, you are making sure you are compatible with the latest packstack version.
vi /root/answers.txt <= Update all IP addressed with the appropriate IP for you + all other details unique to your environment (NFS share, etc…). Most of the file should be good as-is.
Configure your External Bridge
An external bridge named BR-EX must be configured on your controller node to let your host reach your external (public) network. You can get this done automatically by creating a new file named /etc/sysconfig/ifcfg-br-ex
You also need to modify your existing public interface in /etc/sysconfig.
The idea is to move the IP address to your bridge and connect your physical interface as an Openvswitch port on your bridge instead.
Here are some configuration file examples. Just copy this but obviously, replace configuration values with your own network settings:
PUBLIC INTERFACE: ifcfg-em1
At this point, openstack should be up and running but all your Instances (VMs) will be running locally on each compute node under /var/lib/nova/instances.
All you have to do is to mount this folder on a shared NFS server to enable live migration.
On your controller node:
chown nova:nova /exports/nova
rsync -av root@:/var/lib/nova /exports/nova/
On your compute node:
mv /var/lib/nova/instances /var/lib/nova/instances.backup
mount -t nfs :/exports/nova/instances /var/lib/nova/instances
* Obviously, you should add the appropriate line of configuration in your fstab to get this done automatically at boot time
** Commun issues: Make sure iptable is allowing NFS; Make your your hosts can resolved each other (or add them in all /etc/hosts files).