In the previous post, we very simply got OpenStack running under VirtualBox. This next part takes this further by getting multiple compute nodes installed to spread the load of your instances. It also paves the way for Part 3 where we will then start to look at Swift, OpenStack’s storage implementation of S3.
Part 2 – OpenStack on a multiple VirtualBox VMs with OpenStack instances accessible from host
We will be using the same set up as for Part 1.
The proposed environment
- OpenStack “Public” Network: 172.241.0.0/25
- OpenStack “Private” Network: 10.0.0.0/8
- Host has access to its own LAN, separate to this on 192.168.0.0/16 and not used for this guide
- One VirtualBox VM running the software needed for the controller
- One VirtualBox VM running the software needed for a compute node
This guide will assume you have followed Part 1. We are simply adding in a compute node now, so that will make the virtual machine you created in Part 1 will become the Cloud Controller (CC). Also, OpenStack has been designed so that any part of the environment can run on a separate server. For this guide we will have the following
- Cloud Controller running MySQL, RabbitMQ, nova-network, nova-scheduler, nova-objectstore, nova-api, nova-compute
- Compute node running: nova-compute
The Guide
- Add a new VirtualBox Guest
- Name: cloud2
- OS Type: Linux
- Version: Ubuntu (64-Bit)
- 2048Mb Ram
- Boot Hard Disk
- Dynamically Expanding Storage
- 8.0Gb
- After this initial set up, continue to configure the guest
- Storage:
- Edit the CD-ROM so that it boots Ubuntu 10.10 Live or Server ISO
- Ensure that the SATA controller has Host I/O Cache Enabled (recommended by VirtualBox for EXT4 filesystems)
- Network:
- Adapter 1
- Host-only Adapter
- Name: vboxnet0
- Adapter 2
- NAT
- This will provide the default route to allow the VM to access the internet to get the updates, OpenStack scripts and software
- Adapter 1
- Audio:
- Disable (just not required)
- Storage:
- Boot the guest and install Ubuntu as per normal
- Name: cloud2
- Assign static IPs to the cloud controller
- Ensure that the Cloud Controller you created in Part 1 has static addresses for eth0 and eth1.
- For the sake of this guide, I’m assuming you have assigned the following
- eth0: 172.241.0.101/255.255.255.128. This address is your Cloud Controller address (CC_ADDR) and will be the API interface address you will be communicating on from your host.
- eth1: stays as dhcp as it is only used for NAT’d access to the real world
- For the sake of this guide, I’m assuming you have assigned the following
- Your compute nodes don’t need to be set statically, but for the rest of this guide it is assumed the addresses are as follows
- Cloud2
- eth0: 172.241.0.102/255.255.255.128
- eth1: stays as dhcp as it is only used for NAT’d access to the real world
- Cloud2
- Ensure that the Cloud Controller you created in Part 1 has static addresses for eth0 and eth1.
- Grab this script to install OpenStack
- This will set up a repository (ppa:nova/trunk) and install MySQL server where the information regarding your cloud will be stored
- The options specified on the command line match the environment described above
-
wget --no-check-certificate \ https://github.com/uksysadmin/OpenStackInstaller/raw/master/OSinstall.sh
- Run the script (as root/through sudo) specifying that you want a compute node and that you’ve specified the IP address of the Cloud Controller
-
sudo bash ./OSinstall.sh -A $(whoami) -T compute -C 172.241.0.101
-
- No further configuration is required.
- Once completed, ensure that the Cloud Controller knows about this new compute node
- On the Cloud Controller run the following
-
mysql -uroot -pnova nova -e 'select * from services;'
-
sudo nova-manage service list
- You should see your new compute node listed under hosts
- If you don’t have a DNS server running that resolves these hosts add your new compute node to /etc/hosts
-
172.241.0.102 cloud2
-
-
- On the Cloud Controller run the following
- On the new compute node run the following
-
sudo nova-manage db sync
-
- As you copied your credentials from the cloud controller created in Part 1, you should just be able to continue to use this from your host – but this time you can spin up more guests.
- If you changed the eth0 address of your cloud controller, ensure your cloud/creds/novarc environment file has the correct IP.
- Repeat the steps above to create further compute nodes in your environment, scaling seamlessly

