How Tos, OpenStack

Docker Networking – SocketPlane

In the Docker Networking post I mentioned few solutions for multi-host containers connectivity. I have covered Weave in a previous blog post and on this post I’ll describe my hands-on experience with SocketPlane, the company Docker acquired on March 2015.SocketPlaneLogo

SocketPlane solution integrates VxLAN tunnels between Open vSwitch host endpoints in order to facilitate a connection between containers running on different hosts. It relies also on multicast DNS to discover other SocketPlane members in the cluster and after the discovery phase Consul is used to the actual addition of the SocketPlane member to the cluster.

Continue reading

How Tos, OpenStack

Docker Networking – Weave


In the Docker Networking post I mentioned few solution for multi-host Docker containers connectivity. In this blog post I’ll describe my hands-on experience with Weave.

Weave solves multi-host Docker containers connectivity by creating vRouter in each host in order to facilitate a connection between containers running on different hosts. The communicating vRouters using both TCP and UDP on port 6783. TCP to communicate topology and UDP, using a proprietary tunnelling, to forward data between the containers. On top of that, Weave installation create also a weave bridge. Each container is connected to that bridge via a veth pair and this bridge is also connected to the vRouter. It looks something like this (with an additional interface I’ll refer at the end of this post):


Continue reading

How Tos, OpenStack

Docker Networking

In the previous post I went through some very basic commands using Docker. In this blog post I’ll describe some hands-on experience with Docker networking.

Docker networking has been a subject for many articles lately. There’s been few proposals of how to make things better and enable multi-host Docker containers connectivity. You can find at more about the proposals at Weave’s blog, one of the groups that has submitted a proposal. That said, Docker has acquired recently SocketPlane in order to drive its networking effort forward. Continue reading

Knowledge, OpenStack

Installing and Using Docker

In my previous post I provided some overview about Docker and it’s integration with OpenStack, containers and the related technologies – cgroups and namespaces. In this post I’ll go through some very basic commands using Docker.

Downloading and Installing Docker

As Docker rely on the kernel running on your machine make sure you are running 3.10 at minimum. uname -r can help you determine what kernel is running on your machine.
Before downloading Docker it is important to mention that a relatively new Linux distribution called CoreOS has Docker installed out-of-the-box and provides some additional benefits to Docker users. coreos-wordmark-vert-colorFind more about CoreOS at its Wiki page. You can read more about CoreOS and its Docker integration here.

I’ll describe briefly my personal experience with downloading and installing Docker on Ubuntu 14.04. The official installation guide can be found at Docker’s website. Continue reading

Knowledge, OpenStack

Containers, Docker, NameSpaces, CGroups and OpenStack

Docker has recently celebrated two years and based on the Docker OpenStack Wiki page “It is expected the driver will return to mainline Nova in the Kilo release.” small_v-transThe driver let you treat a Docker Linux container in the same way you treat a VM. If you wonder what is the difference between the two then you are asking a good question. A VM is an abstraction of physical hardware while a container is an abstraction performed in the operation system. More about that here. You can have an Ubuntu OS container running inside Fedora or Mac OS X or even Windows 8. Confused? I’ll try to help you with that in this blog post.

What is Docker?

Docker is one kind of a Linux container. You can find more information about LXC and other Linux containers here. Think of a lightweight and isolated software entity running inside your OS and sharing the kernel with it. By isolated I mean a software entity with its own network, users, PID and more. By sharing kernel I mean a software entity that piggybacking (or relying on) the kernel in its host whether it’s Linux, Mac OS X or Windows. The last two are available by installing boot2docker that provide the kernel to the host OS.

Containers rely on cgroups and namespaces Linux technologies. cgroups (abbreviated from control groups) is a Linux kernel feature that provides isolation to resources (CPU, memory, disk I/O, network). In that respect running the top command will show different results inside a container than running the same command outside of the container, on the host machine. Continue reading

OpenStack, Troubleshooting

Figuring Out OpenStack Multi-Node Error Messages – Part 1

Recently I have deployed a 3 node Neutron based OpenStack environment – Controller, Network and Compute, and I have encountered with many error messages throughout the establishment process of a working environment. As a determined ITer who gets the job done, I had to research what are those error messages mean and possible ways to solve the underlying issues evoking them (most are incorrect configurations or timing issues). In this blog post I’ll summarize common error messages and their solutions. I hope you’ll find it helpful.

First things first, in order to debug an issue with a related error/warning message it’s better to understand the flow between the different components in OpenStack.

And also to understand where each service/agent resides in a multi-node environment. Running the following commands will shed some light on how to approach debugging.  Continue reading

How Tos, OpenStack

Three-Node OpenStack Juno Deployed on Public Cloud – Part 3

In part 2 of this series we have made all the required preparations for our 3 nodes and installed the Keystone and Glance services. In this last part of the series we’ll follow the required steps for Nova (compute), Neutron (network) and Horizon (GUI/dashboard) before we our OpenStack environment will be running.

Nova (Compute Service)

Nova installation requires steps done on both Controller and Compute nodes. We’ll follow the steps required on the Controller node (excluding the database related). Make sure you modify /etc/nova/nova.conf as required. To finalize installation you can save effort by using the following command in order to restart all Nova services:

cd /etc/init/; for i in $(ls nova-* | cut -d \. -f 1 | xargs); do sudo service $i restart; done

Continue reading