Have you ever wanted to test something on your computer but didn’t want to break something in the process? Are you trying to manage lots of applications running on many different computers? Proxmox is your solution. It’s a distribution of Linux designed to manage multiple installations of itself on different computers and easily manage them using a web interface. It’s base is Debian and it uses the KVM hypervisor and LXC for containers.
What is Proxmox?
KVM stands for Kernel-based Virtual Machine (VM), it allows for the Linux kernel to work like a hypervisor. LXC stands for Linux Containers. These allow you to run multiple isolated systems on a single Linux kernel. It’s more low level enabling them to be fast and fairly secure. VMs are more secure but have more overhead making them slower. A good rule of thumb for Proxmox is use an LXC if you are wanting to run a distribution of Linux and are able to use the kernel Proxmox uses. If you need to use a different kernel, use a virtual machine. Use a virtual machine to run any other operating system such as Windows, MacOS, and BSD.
Proxmox allows you to run multiple operating systems on a single physical computer. You might be wondering why. This makes management much easier. If you are running multiple services on a single computer, the services could interfere with each other. Also, if the computer goes down, the other services go down as well. Using Proxmox allows you to separate each service in its own space. If one goes down, for whatever reason, the others are not affected.
High Availability
If you need high availability (HA), Proxmox has you covered as well. If you setup 3 or more physical computers running Proxmox and make them communicate with each other, you can do HA. This allows hosts to move between physical computers. Lets say a part in one of the Proxmox machines fails and you need to take it offline to perform maintenance. All the hosts on that machine would normally just be shutdown and that’s that. With HA, you can tell the hosts to move over to one of the other Proxmox machines so you have no down time. If this is setup correctly, the user sees no interruption when the hosts are being moved over. Also, once the machine comes back online, the hosts can then be moved back over.
Another favorite feature of mine is virtual appliances. These allow you to quickly startup a program. For example, you may be testing changes to your website. Rather than doing so on your live webserver, you can spin up a testing server in no time. You can think of these appliances as ready to go systems. Very little setup is required to get started using the service. There are lots of premade appliances like webservers, WordPress, and GitLab.
Proxmox makes it easy to test already running workflows. For example, if you have an SQL database which you need to make major changes to, you can duplicate the currently working setup. From there, you can make changes to the copy without affecting the production database. Once you know the changes wont break anything, you can implement the changes on the production database and delete the copy. It’s quite simple and extremely cost effective.
Management
Proxmox has an easy to use web interface. On the left you get a list of all your Proxmox nodes, containers, and virtual machines. You can select each item and see a summary of how the system is performing. It even includes easy to read graphs so you can see system usage over time. Along with the summary, there are other options to manage and configure each item. With a container, you are able to resize the available memory while the system is running. Along with the storage. You can ever configure hosts to run automatically at boot. This is an imperative feature if you’re using this in a production environment. Some hosts may require another host to be online for it to function properly.
Why?
If you have several applications that your business relies on and cannot afford any down time, Proxmox is a great solution. It offers similar features as VMware’s ESXi and vSphere., however, VMware’s solution is much more complete. Also, if you’re interested in virtualization, this is a great platform to learn. It’s free so you don’t need to worry about licensing issues when you’re trying learn. If you are a developer, it’s perfect for testing your software on different operating systems and configurations.