Private Cloud from vshosting~
The comfort of a cloud with maximum security of a dedicated solution
Whether we like it or not, we live in the cloud era. We have gotten used to easily and almost immediately adding more output and subsequently subtracting it when the demand goes down.
At first glance, everything looks great – we only pay for the capacity we really need and only when we really need it. We don’t need to worry about a spare parts storage space or get up at 3 am to deal with a broken server. However, this “ideal world” also has its drawbacks that might not be obvious at first.
By transferring applications to the cloud, we have given up the option to set up the entire environment according to our wishes, we now have to increase or decrease output via predefined “packages”, we give our data over to a third party thinking that “they won’t give a damn about a Czech mini project’s data”, and we introduce unnecessary vendor lock-in into the application via various SDK and API cloud services. We have sacrificed architectonical freedom and gotten comfort in exchange.
But what if there’s another way? What if we could take the advantages of the cloud and deploy them onto a solution that would be fully under our control? What if we could build our own, private cloud?
Proxmox – the Virtualization Platform
The first step is always the hardest: as it was when we at vshosting~ were choosing the best platform on which we were going to build the private cloud solution. Several software options made it to our shortlist and in the end, we were choosing between two candidates: OpenNebula and Proxmox. Both of these tools allow for a wide spectrum of use cases. In the end, we have chosen Proxmox, among other things because of the ease of its administration.
Proxmox in and of itself is a distribution built on recent Debian with a few improvements. It includes out-of-the-box KVM virtualization (full-fledged virtual machines) as well as LXC containerization (Linux-only containers), high availability, clusterization, virtual migration between nodes, scaling while the virtual machines are in operation and much more. All that is package in a user-friendly web interface, CLI or REST API. You can find the detailed function description on the Proxmox website.
Proxmox itself is very easily scalable from one node to up to 100 nodes in one cluster. Based on our practical experience, however, we have decided to limit the cluster size to 12 nodes. In any case, any unit bigger than that typically works best when divided into more smaller clusters which can have very high performance on their own.
Putting 12 machines together into one virtualization cluster where each one of the machines contains 4 powerful Xeon processors with 12 physical cores (24 strings) together with 512 GB RAM provides sufficient output even for the most extensive projects that are running at vshosting~. Although, if you like, we are more than able to create even larger and crazier setups 🙂
Light Containers as well as “Full fat” Virtual Machines
As we’ve already mentioned, Proxmox offers two types of virtualization – full virtualization via KVM and containerization with LXC. The advantage of KVM is full hardware emulation: as a result, it’s no problem to install on it not only Linux but also MS Windows, Mikrotik RouterOS or Android (if you have the necessary license). A disadvantage of KVM is the fact that it shares no parts of the system with the hypervisor. Virtual machines in KVM are then more demanding in terms of storage.
If you’d like to operate Linux applications, using LXC contanerization is the suitable option. In this case, the kernel is shared with the hypervisor, therefore, the need to account for kernel storage space in the container becomes obsolete. A significant disadvantage of containers, however, is only partial insulation of the environment that not all applications are capable of dealing with. For example, we’ve been unable to properly run GlusterFS servers or NFS exports on LXC.
Both virtualization technologies can be combined at will in a cluster.
You Provide the App, We Do the Rest
We offer our private cloud in the managed mode. Tha means we take care of everything below the level of virtual machines. Hardware, discs, network, connectivity, electricity, cooling, and even the hypervisor software itself – all of that is on us. Up to this point, there’s no difference between public clouds. Where the first point of significant difference manifests is high performance. Private Proxmox runs on physical machines dedicated only to a specific cluster.
As a result, the client has 100% of the capacity at his disposal. No sharing of resources, no aggregation. The client then divides the performance among single containers and virtual machines, he himself chooses the operation system, applications (and their configuration) that run on them.
Storage, Firewall, and Other Services
In the basic setup, the discs of virtual machines are stored directly on the discs inside the servers. This solution is very powerful but doesn’t allow for live migration of virtual machines between nodes or VM restart on a different node should the original one fail.
This can be solved by network storage, which we offer under the name Cloud Storage. In Proxmox, you’ll see it as basic storage accessible throughout the cluster. Virtual machines and containers that have their discs placed in this storage can be easily migrated between nodes or automatically start them on different machines in the event of failure.
Besides the disc storage, you can also use Cloud Storage as object storage compatible with S3 – but that is a topic for another article. As is the case with each of our managed services, you can add managed firewall Cisco ASA, DDoS Protect protection or up to 10Gbps global connectivity to your Private Cloud.