Having looked at the foundations of the storage technology that Cinder uses in the previous posts, we are now ready to explore the basic architecture of Cinder and install Cinder in our playground. Cinder architecture Essentially, Cinder consists of three main components which are running as independent processes and typically on different nodes. First, there…More
OpenStack Cinder foundations – building logical volumes and snapshots with LVM
When you want to build a volume service for a cloud platform, you need to find a way to quickly create and remove block devices on your compute nodes. We could of course use loopback devices for this, but this is slow, as every operation goes through the file system. A logical volume manager might…More
Understanding cloud-init
For a recent project using Ansible to define and run KVM virtual machines, I had to debug an issue with cloud-init. This was a trigger for me to do a bit of research on how cloud-init operates, and I decided to share my findings in this post. Note that this post is not an instruction…More
OpenStack Cinder foundations – storage networks, iSCSI, LUNs and all that
To understand Cinder, the block device component of OpenStack, you will need to be familiar with some terms that originate from the world of data center networks like SCSI, SAN, LUN and so forth. In this post, we will take a short look at these topics to be prepared for our upcoming installation and configuration…More
OpenStack Neutron – handling instance metadata
Not all cloud instances are born equal. When a cloud instance boots, it is usually necessary to customize the instance to some extent, for instance by adding specific SSH keys or by running startup scripts. Most cloud platforms offer a mechanism called instance metadata, and the implementation of this feature in OpenStack is our topic…More
OpenStack Neutron – DHCP and DNS
In a cloud environment, a virtual instance typically uses a DHCP server to receive its assigned IP address and DNS services to resolve IP addresses. In this post, we will look at how these services are realized in our OpenStack playground environment. DHCP basics To understand what follows, it is helpful to quickly recap the…More
OpenStack Neutron – building virtual routers
In a previous post, we have set up an environment with a flat network (connected to the outside world, in this case to our lab host). In a typical environment, such a network is combined with several internal virtual networks, connected by a router. Today, we will see how an OpenStack router can be used…More
OpenStack Neutron – running Neutron with a separate network node
So far, our OpenStack control plane setup was rather simple – we had a couple of compute nodes, and all other services were running on the same controller node. In practice, this does not only create a single point of failure, but also a fairly high traffic on the network interfaces. In this post, we…More
OpenStack Neutron – building VXLAN overlay networks with OVS
In this post, we will learn how to set up VXLAN overlay networks as tenant networks in Neutron and explore the resulting configuration on our compute nodes. Tenant networks The networks that we have used so far have been provider networks – they have been created by an administrator, specifying the link to the physical…More
OpenStack Neutron – deep dive into flat and VLAN networks
Having installed Neutron in my last post, we will now analyze flat networks and VLAN networks in detail and see how Neutron actually realizes virtual Ethernet networks. This will also provide the basic understanding that we need for more complex network types in future posts. Setup To follow this post, I recommend to repeat the…More