ProxMox - An Open Source Data Center Platform
My journey in finding the best platform for web scale applications has brought me to ProxMox, an open source virtual environment that combines OpenVZ containers and KVM virtualization in a single pane of glass. ProxMox has the best balance between management and performance optimization using containers. We spent today bringing up a four node cluster, and it was dead easy.
I love the architectural concept of containers. They allow you to slice up a single hardware server into multiple, independent environments, while still allowing full access to the hardware. It is not really virtualization, because none of the hardware resources are virtualized like they are with KVM or VMware. The ProxMox management layer is actually a base install of Debian running a modified OpenVZ Red Hat kernel. The base install weighs in at right around 1GB, and is so thin that there is only a 1-3% processing overhead incurred.
Installing ProxMox is quick and easy, but be warned that this is not “nanny-ware”. ProxMox expects that if you say you want to install, you understand that everything on the disk that you are installing to is going to be wiped out. Do not boot the installer with the idea that you will be able to save any data, not going to happen. That being said, there are only four or five steps in the installer: choose your time zone, set the password, select the install location, set the IP address and you are off to the races. After install, we logged in as root to run apt-get update; apt-get upgrade; apt-get dist-upgrade (as you do), rebooted, and ran one command to join each host to the cluster: pvecm add <ip address of first node>
One of the most interesting points about ProxMox’s management model is that it is distributed evenly among all the hosts in the cluster. ProxMox is managed through a very light and responsive web interface. After install, point your browser to the hostname and you should be able to log in with your root password. The interesting point is that you can log into any host in the cluster to manage the entire cluster. This is because all of the information about the cluster is shared with each host, so there is no separate management server that needs to be installed.
The feature list for ProxMox is fairly impressive:
- High performance and scalability
- Full Virtualization - KVM
- Live Snapshots
- OS Virtualization - OpenVZ
- Live Migration
- Open Source
- High Availability Cluster
- RESTful web API
- Proxmox Cluster file system
- Rich web app for Management
- Backup and Restore
- Role-based Administration
- Multiple Authentication sources
- Network Model
- Storage Model
However, the most impressive feature from my perspective is ProxMox’s ability to manage the limits of each container on the fly. For example, if one container is struggling to keep up with the load, you could add more CPU power to that container. Similarly, if a container needs more (or less!) disk space or memory, each can be modified on the fly without rebooting the environment. The limits work the other way too. If one container is using too much CPU, you can limit it to an arbitrary amount that will give it enough to keep going without impacting the other containers on the machine. Coming from a VMware environment, this is a welcome change.
I’ve just scratched the surface of what we have planned for ProxMox. I tend to be conservative with the technology that I recommend to advance to production status in the data center, so we will be taking the evaluation period with ProxMox slow and steady. But based on my experiences so far, and it’s performance in preproduction for the past two years, I’m expecting it to be a success.