In this post I’ll share with you one of the new 4.12 features we are working on: Virtual Data Centers. Well, it’s not entirely new, because OpenNebula already had VDCs, but we have redesigned them to be more powerful.
Let’s start refreshing what Clusters and VDCs are:
- Cluster: Group of physical resources (Hosts, Virtual Networks and Datastores) that share common characteristics or configurations. For example, you can have the “kvm” and “vmware” Clusters, or “kvm-ceph” and “kvm-gluster”.
- Virtual Data Center (VDC): Defines a assignment of one or several Groups to a pool of Physical Resources. This pool of Physical Resources consists of resources from one or several Clusters that could belong to different Zones, or public external clouds for hybrid cloud computing.
The following image shows three VDCs (in blue, red and green) and the resources assigned to three Groups. As you can see, the red VDC assigns the Human Resources Group to resources from two different Zones (individual data centers), and a public cloud provider.
In OpenNebula 4.6 the terms Virtual Data Center (VDC) and Resource Providers were introduced. A Resource Provider was not a separate entity, it was the way we called a Cluster assigned to a Group. The term VDC was used to name a Group with Resource Providers (Clusters) assigned, but was not a separate entity either.
Starting with OpenNebula 4.12, VDCs are a new kind of OpenNebula resource with its own ID, name, etc. and the term Resource Provider disappears. Making VDCs a separate resource has several advantages over the previous Group/VDC concept.
Now that VDCs are a separate entity, they can have one or more Groups added to them. This gives the Cloud Admin greater resource assignment flexibility. For example, you may have the Group Web Development added to the ‘low-performance’ VDC, and Big Data to the ‘high-performance’ VDC. If the Web Development requirements change for a few days, the Group can be additionally added to the ‘high-performance’ VDC. In previous versions, this single operation would require you to write down which resources were added to the Group, to undo it later.
From the resource assignment perspective, the new VDC approach allows to create more advanced scenarios. In previous versions, the Group’s Resource Providers were whole Clusters. This had some limitations, since Clusters define the topology of your physical infrastructure in a fixed way. The Admin could not assign arbitrary resources to a Group, he had to choose from those fixed Clusters.
The new VDCs contain a list of Clusters, just like before, but they can also have individual Hosts, Virtual Networks, and Datastores. This means that a VDC can create logical groups of physical resources, that don’t have to resemble the real configuration of the physical infrastructure.
For example, you may have one ceph Datastore and 10 Hosts inside a Cluster, and now you can assign one individual Host to a VDC whereas before you had to assign the whole Cluster, or create smaller Clusters. The latter option was not very practical, because Datastores can only be in one Cluster at a time, so you would need to split your storage between the Clusters.
We are quite pleased with how everything fits together, and this is because the requirements for this improvement of the VDC model came from our users. Hopefully you’ll find it useful too, we are looking forward to your feedback.