Skip to main content

OpenStack Kilo MultiNode VM Installation using Centos 7 on VirtualBox

In this blog, I will walk you through the steps that need to performed to create a MultiNode OpenStack Kilo setup running on Centos 7 VMs. The resultant network topology will be as follows:


Pre-requisites
  • VirtualBox
  • A Laptop or Server with 16 GB RAM and around 20 GB free hard disk space
  • CentOS 7 Minimal ISO
  • Internet Connectivity
 Setup VirtualBox Networking
In VirtualBox go to File -> Preferences -> Network -> Host-Only Networks and create a new Host-Only networks. You can refer to my earlier blog on the various networking options provided by VirtualBox here 

In our topology, this network will act as the Control Plane network and should be configured as follows:


Similarly, create the Data Plane (60.60.60.0/24). The Host-Only Network adapter creates a soft switch using which VMs can talk with each other.

Note: We do not need to configure the DHCP server as we will be using static ips.


Create 4 VMs with the following settings and install CentOS Minimal Server on them:
  • RAM : 2 GB
  • Hard Disk Space : 4 GB
  • Network Adapter 1 (For Internet) : NAT
  • Network Adapter 2 (Control Plane) : Host-Only Network Adapter (50.50.50.0/24)
  • Network Adapter 3 (Data Plane) : Host-Only Network Adapter (60.60.60.0/24)
On the VM, the network adapters map to the following ethernet interfaces (or something similar):
NW Adapter 1 : enp0s3
NW Adapter 2 : enp0s8
NW Adapter 3 : enp0s9

Now, we need to visit each VM and configure it appropriately.

On each VM
  1. Install SSH server and configure it.

    
    yum -y install openssh-server openssh-clients
    
    If SSH is taking a lot of time to show the login prompt 
    on your VM, open /etc/ssh/sshd_config and update the 
    following fields to 'no':
    
    GSSAPIAuthentication no
    UseDNS no
    
    This will speed up the ssh login
    
  2. Update the hostname and hosts file as follows:
    
    /etc/hostname 
    controller.kilo.mylab.net (or) networknode.controller.mylab.net e.t.c
    
    /etc/hosts:
    192.168.10.101  controller.kilo.mylab.net     controller
    192.168.10.102  networknode.kilo.mylab.net    netnode
    192.168.10.103  compute1.kilo.mylab.net       compute1
    192.168.10.104  compute2.kilo.mylab.net       compute2
    
  3. To assign static ips to the interfaces, open /etc/sysconfig/networking-scripts/ifcg-enp0s8 (and enp0s9) and update as follows:
    DEFROUTE=no
    IPV6_DEFROUTE=no
    BOOTPROTO=static
    ONBOOT=yes
    
    # The IP to be configured on enp0s8 for each node 
    # Compute - 50.50.50.101
    # Network Node - 50.50.50.102
    # Compute1 - 50.50.50.103
    # Compute2 - 50.50.50.104
    
    # The IP to be configured on enp0s9 for each node 
    # Compute - 60.60.60.101
    # Network Node - 60.60.60.102
    # Compute1 - 60.60.60.103
    # Compute2 - 60.60.60.104
    IPADDR= 
    NETMASK=255.255.255.0
    GATEWAY=50.50.50.1 (or) 60.60.60.1
    
  4. Disable NetworkManager as Neutron wont work if its enabled.
    systemctl disable NetworkManager.service
On the Controller VM
Follow the instructions given in my earlier blog and setup packStack for Kilo on the Controller. You will need to use this rpm : https://repos.fedorapeople.org/repos/openstack/openstack-kilo/rdo-release-kilo-1.noarch.rpm

I have pre-created 2 answer files for VLAN and VXLAN based setups. Download the one you want from the below location:
The default password for all the services has been set to 'password'. Update it to a different value if you want.
 Start the packstack installation on the server by executing the below command:
packstack --answer-file answer.txt
Once the installation completes you are all set to use the OpenStack Kilo. Open the browser on your laptop and go to the home page by entering http://50.50.50.101 (admin/password)

Enjoy playing with Kilo.

Note : The same installation will also work on physical servers instead of VMs. You will need to take care of the corresponding network configurations. 

Comments

Punith said…
Hi Sarath,

Thanks for the post. I was able to setup OpenStack Kilo.

It'll be great if you also include these steps.

1. No need to configure enp0s9 interface with static IP
2. Creating br-enp0s9 bridge with interface enp0s9 on all nodes except controller node
3. Also I had trouble with starting rabbitmq-server. Troubleshooted it using the steps given here.

https://ask.openstack.org/en/question/65042/fail-to-start-rabbitmq-serverservice-on-opensuse132/
openstack kilo said…
It is nice guide on how to install Openstack Kilo MultiNode VM Installation using Centos 7 on VirtualBox. This is very useful blog. Thanks for sharing
priya said…
Thank you so much for sharing all this wonderful info!
Openstack Training

Popular posts from this blog

Openstack : Fixing Failed to create network. No tenant network is available for allocation issue.

Assumptions : You are using ML2 plugin configured to use Vlans If you try to create a network for a tenant and it fails with the following error: Error: Failed to create network "Test": 503-{u'NeutronError': {u'message': u'Unable to create the network. No tenant network is available for allocation.', u'type': u'NoNetworkAvailable', u'detail': u''}} The problem can be due to missing configuration in the below files: In /etc/neutron/plugins/ml2/ml2_conf.ini network_vlan_ranges =physnet1:1000:2999 (1000:2999 is the Vlan range allocation) In /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini bridge_mappings = physnet1:br-eth1 (in OVS we map the physical network to the OVS bridge) Note You should have created a bridge br-eth1 manually and mapped it to a port ovs-vsctl add-br br-eth1 ovs-vsctl add-port br-eth1 eth1 Once configuration is done, restart the neutron ovs agent on the compute node(s):

Solved: Fix for Git clone failure due to GnuTLS recv error (-9)

My devstack installation was failing with an error reported by the GnuTLS module as shown below: $ git clone https://github.com/openstack/horizon.git /opt/stack/horizon --branch master Cloning into '/opt/stack/horizon'... remote: Counting objects: 154213, done. remote: Compressing objects: 100% (11/11), done. error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received. fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed The following Git config changes fixed the issue for me. Am hoping it will be useful for someone out there: $ git config http.sslVerify false $ git config --global http.postBuffer 1048576000

QuickBite: Tap Vs Veth

Linux supports virtual networking via various artifacts such as: Soft Switches (Linux Bridge, OpenVSwitch) Virtual Network Adapters (tun, tap, veth and a few more) In this blog, we will look at the virtual network adapters tap and veth. From a practical view point, both seem to be having the same functionality and its a bit confusing as to where to use what. A quick definition of tap/veth is as follows: TAP A TAP is a simulated interface which exists only in the kernel and has no physical component associated with it. It can be viewed as a simple Point-to-Point or Ethernet device, which instead of receiving packets from a physical media, receives them from user space program and instead of sending packets via physical media writes them to the user space program. When a user space program (in our case the VM) gets attached to the tap interface it gets hold of a file descriptor, reading from which gives it the data being sent on the tap interface. Writing to the file descri