Deploying multi-node Openstack with Opencontrail

In this post, I have chosen Opencontrail as SDN solution for Openstack neutron networking.
Opencontrail on its own have large amount of components/services which is difficult to cover in single post.
For non-familiar folks, refer to: Opencontrail architecture documentation

Opencontail site contains, lots of interesting blog posts on various topics,…It’s the endless world out there 🙂

This post intended to get you started with environment to play around and get feel for.
I will primarily focus on creating multi-node setup using Openstack and Opencontaril.
We will see the configuration points for Openstack and Opencontrail.
Then do, some basic operations, like VM launche, and ssh and ping operations to check the connectivity.

So, I guess, enough taking, Let’s get technical.

What do you need for environment?

  • A machine which support virtualization (Intel-VT/AMD-V)
  • Memory 8GB minimum, will use 5.5 GB for all three VMs
  • Disk 60 GB free space
  • VirtualBox/VMware Player/KVM host – I have VirtualBox
  • A cup of Coffee!

Create three virtual machines with ubuntu 14.04 server.

VM1 specification (contrail-openstack-controller):

eth0: 192.168.1.11 (bridged adapter)
eth1: 10.10.10.3 (Host-only adapter)

vm1

Contrail-Openstack-Controller

VM2: specification (compute1):

eth0: 192.168.1.12 (bridged adapter)
eth1: 10.10.10.4 (Host-only adapter)

vm2

Compute Node 1

Vm3: specification (compute2):

eth0: 192.168.1.13 (bridged adapter)
eth1: 10.10.10.5 (Host-only adapter)

Compute Node 2

Compute Node 2

After login to the machines clone following repositories.

https://github.com/Juniper/contrail-installer.git

https://github.com/openstack-dev/devstack.git

For installation of contrail, you can follow up contrail-installer README.

VM1:

Act as controller hence, we will be running all the openstack services, without openstack-nova-compute and opencontrail-vrouter-agent. Following, locarc for opencontrail.

vm1-contrail-localrc

Follow steps as per the contrail-installer and install contrail services.

cd contrail-installer
cp samples/localrc-all localrc (edit localrc as needed)
./contrail.sh build
./contrail.sh install
./contrail.sh configure
#Before starting contrail services, remove agent service from ENABLED_SERVICES
https://github.com/Juniper/contrail-installer/blob/master/contrail.sh#L12
./contrail.sh start

Devstack localrc: disabled most of the services like cinder, heat, tempest and compute

vm1-devstack-localrc

Copy opencontrail plugin for devstack to use:

cd devstack
cp ~/contrail-installer/devstack/lib/neutron_plugins/opencontrail lib/neutron_plugins/
./stack.sh

VM2 & VM3

This will be compute nodes, hence this will be running nova-compute and contrail-vrouter-agent serivces.

Localrc for contrail and devstack as follows:

Check out contrail localrc, INSTALL_PROFILE=COMPUTE

vm2-contrail-localrc           vm2-devstack-localrc

Verify setup with screen outputs: on all the VMs

screen -x contrail
screen -x stack

Screens for contrail and devstack on controller node

controller-contrail-screen

controller contrail screen

controller devstack screen

controller devstack screen

Screens for contrail and devstack on compute node

nova compute screen

nova compute screen

Contrail agent on compute node

Contrail agent on compute node

Check regiester compute nodes with ‘nova hypervisor-list’, and launch 2 VMs.

Booted 2 VMs on two compute nodes

Test ping and ssh commands between vms

vm ssh and ping test

vm ssh and ping test

Let  me know, wherever you stumble across problem during this setup. I will try my best to help you out.

Just got below patch merge now, which was necessary for multi-node contrail setup.

https://github.com/Juniper/contrail-installer/pull/105

3 Responses to Deploying multi-node Openstack with Opencontrail

  1. Samuel says:

    Hello Can you suggest me how to install openstack swift on multi node ?

  2. alessandro says:

    Hi! I read your guide and I’m also reading the official OpenContrail documentation.

    In section 2.2.2 Layer 3 Unicast I see the communication between two Compute Node
    The question is:
    If I have 3 or more routers between the two Compute Node, how can OpenContrail find the routes to ensure communication between the two Compute Node?
    I don’t have clear ideas!
    Thank you!

Leave a comment