Deploying A HA OpenStack Cloud On Your Laptop



A couple of weeks ago, I had the opportunity to talk about OpenStack and High Availability (HA) on the vBrownBag podcast.  The slide deck below (since updated) is based on the presentation I gave, during which we discussed OpenStack HA at the various layers of a Cloud platform, from the application down to the Cloud infrastructure layers.  Unfortunately, I did not have time to demonstrate how to set up a test or proof of concept OpenStack environment during the podcast; so this post will walk through the steps necessary to build such an environment on a laptop or PC, using Vagrant with VMware Workstation, VMware Fusion, or VirtualBox.

Before moving on, I need to give credit to three of my colleagues on the Rackspace Private Cloud team, Cloud Architects extraordinaire – Jacob Walcik, James Thorne, and Rags Srinivas.  Both the slide deck below and the contents of this post are derived from work they’ve already performed and published.  James posted on his personal blog, details on how to create a single controller node and single compute node Rackspace Private Cloud environment, using Opscode Chef with Vagrant; the Rackspace Private Cloud is a product that is based on the downstream OpenStack trunk.  While Jacob and Rags will be leading a session, at the OpenStack Summit, on OpenStack HA, which I encourage everyone to attend; more details on OpenStack HA can also be found on a Rackspace blog post, written by Rags.  I’ve simply modified the great work that James, Jacob, and Rags had done in order to create a mulit-node HA OpenStack environment.

What Does HA Mean In OpenStack?

Setting Up Your Lab

So what are we building on your laptop or PC to test OpenStack HA?  The sample Rackspace Private Cloud reference architecture below shows the 4 node environment we will be creating, with 2 controller nodes and 2 compute nodes.  The difference here is that we will be deploying Chef on a separate server and we will not initially break out the 2 compute nodes into different availability zones.  To  provide HA for the Cloud Controllers, we will be using a combination of HAProxy and Keepalived, both of which are discussed in the slide deck above.

Screen Shot 2013-10-06 at 7.06.15 PM

Since James did such a great job of detailing all the commands for setting up OpenStack with Chef using Vagrant, I won’t repeat them; instead I encourage you to look at his post and I’ll detail where the steps may differ to create a HA OpenStack environment.

Configuring Your VMs With Vagrant

  • The first step is to install Vagrant and here I encourage you to install the latest version, which is currently 1.3.4.
  • Then install whichever virtualization software you intend to use as your Vagrant provider, including any Vagrant plugin that is required.
  • Download and add the Vagrant box appropriate for the virtualization software you have chosen.  In all cases, we will be using a version of the precise64 Vagrant box to install Ubuntu 12.04 LTS on all our nodes.
  • Create a directory for this lab project and create the initial Vagrantfile.
  • Edit the created Vagrantfile and replace the contents with the following entries (Note that you can scroll down the text box to see the entire Vagrantfile):

You can also access the Vagrantfile here.

Configuring Chef to Install OpenStack

  • Start up all your nodes using Vagrant.
  • Install Chef Server on your Chef node.
  • Install Chef Client on all your OpenStack nodes.
  • Create a Chef Environment file for Rackspace Private Cloud.
  • Edit the created Environment file and replace the contents with the following entries (Note that you can scroll down the text box to see the entire Environment file):

You can also access the Environment file here.

Note that VIPs will be created for API services, MySQL, and RabbitMQ.

Installing OpenStack

  • Set the Chef default Environment to the Environment you just created.
  • Assign the appropriate OpenStack roles to each Chef node.
  • Install OpenStack by converging all chef nodes with their assigned roles.
  • If you wish, follow James’ instructions to further configure OpenStack.
  • Start up a browser and connect through the Horizon VIP to begin managing OpenStack and to spin up instances.

Testing OpenStack Controller HA

  • View all IP Addresses assigned to controller1 by typing “ip addr” and note the assigned VIPs.

Screen Shot 2013-10-06 at 10.57.19 PM

  • View all IP Addresses assigned to controller2 by typing “ip addr” and note the absence of assigned VIPs.
  • Now stop controller1 by using “vagrant suspend controller1” or “vagrant halt controller1”
  • View all IP Addresses assigned to controller2 by typing “ip addr” and note that VIPs are now running on controller2.
  • Start up a browser and connect through the Horizon VIP again.


You now have an environment to play with OpenStack and to conduct further testing, including evacuating instances from one compute node to another.  As I have opportunity to run through a suite of tests myself, I will try to publish the test scripts and results in a future blog post.



  1. […] 一篇介绍如何在RackSpace私有云上实现HA,另一篇介绍如何在自己的笔记本上用Vagrant和VMware Workstation、VMware Fusion或VirtualBox测试部署一个HA OpenStack云环境。HA的关键在于1)将数据丢失最小化;2)将系统宕机时间最小化。实现主要还是通过Keepalived,HAProxy和VRRP。 […]

  2. […] 一篇介绍如何在RackSpace私有云上实现HA,另一篇介绍如何在自己的笔记本上用Vagrant和VMware Workstation、VMware Fusion或VirtualBox测试部署一个HA OpenStack云环境。HA的关键在于1)将数据丢失最小化;2)将系统宕机时间最小化。实现主要还是通过Keepalived,HAProxy和VRRP。 […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s