We have released the box version of our new virtualization management panel, VMmanager 6 on October 8. It can be installed on your server and for selling virtual machines or managing your own infrastructure. This article compares the new panel with its previous generation.
Both panels support KVM virtualization and manage the physical server with libvirt tools.
VMmanager 5 was released in 2013, VMmanager 6 — in 2019. The new generation is more convenient and resistant to heavy loads. VMmanager 6 supports creating images, task management, and monitoring.
This article compares two generations of panels. At first, we will talk about conceptual differences: architecture, interface and load resistance. In the second part we will see how the same tasks are solved in the two panels.
Part 1. Conceptual differences
VMmanager 5 has a monolith architecture written in C ++ what complicates the product development. Even simple features take a lot of time to release.
This is why in VMmanager 6 we chose Python for simple tasks like configuring nodes and VMs, working with libvirt. Such code is easier to write, debug, and compile. We have described it in more detail in another article.
For the tasks not sensitive to decentralization and where horizontal scaling is necessary, we shifted to Golang, wrapping business logic in microservices. It was surprising, but it also gave us an advantage in speed and ease of development. The rest part of the product continues taking advantage of the monolith in C ++ - reliability, performance and data consistency.
In addition, VMmanager 6 comes in docker containers. VMmanager 5 was installed using packages. A definite plus of containerization is the high predictability of application behavior (since the environment is always the same). It became easier to reproduce errors because there was a necessity to make many assemblies for different OSs, which made deployment faster.
In VMmanager 5, the package installation had a lot of dependencies that could conflict with already installed packages. We had cases when deleting a harmless package with the -y option deleted the entire panel because of the dependency.
Another important change: VMmanager 6 supports images. The image is a complete copy of a VM disk. It can be used for creating virtual machines and backups. Please note that images in VMmanager 6 are a completely different technology rather than ISO images in VMmanager 5.
Heavy load resistance
An important result of changing the architecture is increased load resistance.
VMmanager 5 cannot handle heavy workloads — creating more than 500 virtual machines at one time may make it working slowly. In order to solve this issue, some providers deploy another VMmanager and create new virtual machines there. Large providers have several panels according to the number of locations or tariffs.
In VMmanager 5, a lot of operations have been done in the main process and usually in a single thread. There is a longtask module (the forerunner of taskmanager, a service for dispatching tasks in the sixth version) to manage long operations, but it was created not so long ago. This module has no mechanism of locking, there are only queues in which tasks could be performed only in the order of appearance. One task couldn’t stand in several queues. Longtask operations themselves are special files on disk. And numerous files in one directory create a serious load on all UNIX systems. It made it impossible to distribute tasks across multiple managers/servers.
A special task management service, Taskmanager, is responsible for the load in VMmanager 6. Most operations are now performed as delayed in separate processes. It increases the responsiveness of the system — a separate query cannot hang its operation; And also increases stability — if something goes wrong, it will not affect the whole system, only a single operation. Flexible locking system and high isolation of individual processes allow optimal queuing of tasks and their execution in parallel where it is possible.
In the new panel we decided to separate reader and writer processes. Unlike VMmanager 5, users of the new panel can always get information they need because reader threads always run in parallel, regardless of how many writes are in progress at the moment.
The most notable difference between the two generations is the interface. And it’s not only about design. The main differences are in performance and responsiveness.
The VMmanager 5 interface is outdated both in terms of appearance and performance. The difference in appearance can be noted from the first glance. The difference in performance can be noted when running long operations: like stopping a VM or starting a mass migration, a blocking progress bar will appear on the screen. If the user has many operations, it will be necessary to wait untill they finish to see the list of virtual machines.
Along with the design changes of VMmanager 6 we made large changes in the architecture of the client area. In the old version, page templates were generated from xml files on the server side, now we use SPA (Single Page Application) based on the popular Angular framework. The application consists of separate independent modules (loaded on demand) and components. Components are allocated to the library and developed according to the design system.
To improve responsiveness in the new version, the REST API and WebSocket communicate with the server. In most cases, we try to use non-blocking or delayed operations. Notification about any changes in the application, like a VM creation or a change in a node status is carried out through a special service. This service collects the information about such changes from the storage key-value that aggregates the events from all microservices.
Thus, the VMmanager 6 interface has not only become more modern but also more convenient, responsive and friendly.
Part 2. Differences in solving tasks
Let’s move to the tasks. The first one is VM creation.
It takes 8-10 minutes to create a VM in VMmanager 5. This is quite a long. The reason is the standard way of creation: the packages are downloaded, deployed and installed. Some providers create different plugins to cut this time: create a VM in advance and assign it to a customer when he comes. If a user has advanced rights he can create a VM himself, but he’ll need to fill out a complicated form.
In VMmanager 6 we use a new mechanism of creating VMs. The panel doesn’t download the packages but deploys a copy of an image instead. There is no need to create plugins, VM creation takes 80 — 120 seconds. Problems with the network or new releases of an OS won’t affect the installation: if it has started — it will be finished successfully for sure. VM creation form became much easier.
OS templates creation
Hosting providers sell virtual machines with WordPress, 1C-Bitrix or other software. Companies using VMmanager for their own needs create many VMs of the same type for testing, deploying internal services and their own software. Configuring VMs is the routine of the administrator or tester. The control panel helps to automate it: once you’ve configured the template, you can create many copies of this pre-configured VM from it.
In VMmanager 5, OS templates are stored in repositories. If you want to add your template, you need to create a repository and create the OS configuration files. The repository should be deployed on a separate server. The template consists of an XML description and a configuration file, as well as all the files needed to create the OS. An administrator must prepare the template himself. This is not an easy task and takes some time to study the documentation.
OS template in VMmanager 6 is the image of VM’s disk with an operating system installed. If you need to create a template with additional software, just configure it on one virtual machine and create an image of its disk. All VMs created from this image in the future will then be configured in the same way. Only network and access settings will change — because they are not written to the image. The task is simple and it’s easy to do even without instruction. Of course, script lovers can continue using them — VMmanager 6 also has this functionality.
Statistics and monitoring
Statistics and monitoring are very handy services for a system administrator. They help to quickly respond to emergency situations that occur on nodes or VMs. A sudden influx of visitors, a DDoS attack or a non-working script can load the virtual machine heavily. It may end up failing this VM with all the projects and websites running there if nobody takes any measures. This is why It is very convenient when the control panel has a built-in monitoring system is included in the panel.
There is a mechanism of monitoring VMs status in VMmanager 5. Every 10 minutes it analyzes the number of packages sent by the network and the number of write-requests. The panel’s main page shows top-10 nodes by outcoming traffic, load on CPU and RAM. However, the old version had no notification mechanism.
VMmanager 6 also monitors the status of VMs and nodes, as before and collects statistics on resources usage. Our users asked us to create a new online monitoring system for nodes and VMs. It monitors the network activity and consumption of RAM, CPU,в and disks. It is barely possible to miss the moment when the load becomes critical, — the data is displayed in the list of nodes and virtual machines, as well as on their individual cards. After visiting the list of nodes, the administrator can immediately find the overloaded server and check its parameters. The dashboard is still under development, but we plan to release it by the end of the year.
It is convenient when the panel reports on current events or problems. In order to do so, it must support sending messages.
There is no way to manage mail in VMmanager 5. Only an administrator can reset a forgotten password; it cannot be reset automatically. Notifications on creating a virtual machine are sent by BILLmanager and adding a new event for alerts is a big thing.
VMmanager 6 can send mail. The panel can send the notifications about creating a VM or it’s reinstallations. When the panel is integrated, an admin can disable sending messages from the pane. In the near future, we plan to add notifications of problems that occurred on the VM nodes. We also plan to add notifications to different messengers.
It’s not enough to learn about the problem, it’s also necessary to find it and fix it quickly. The task list of VMmanager 6 will help admins to find out the reasons why a virtual machine fails to launch or why a script fails to execute, what operations usually finish with errors.
VMmanager 5 has no mechanism of task monitoring since it doesn’t have the task mechanism at all (see the first part of this article). Some background tasks can be traced in the «System status» folder. It is possible to see the time of start and finish and the end results whether it has ended up successfully or not. If a longtask-operation is hung, an admin can terminate it. But if a VM hasn’t been created, it is impossible to find the reason from the panel. It will be necessary to find its ID and grep log files.
VMmanager 6 users use Tasks Manager to manage tasks. The Tasks List contains information about current and completed tasks for VMs, nodes, and templates. The time of executing different tasks may help to track the trends: the average time of execution for every particular task or the name of the user who launched it. If the task was completed with an error — the logs will be displayed in the interface. If the script failed to finish successfully — the error code will be displayed in the interface, making it clear to plan further steps.
The different versions of the panel have a different approach to backups.
VMmanager 5. The panel may create copies of all VMs or backup a chosen machine. Backups are stored on local drives or remote FTP storage. The panel copies an XML description of the virtual machine, its virtual disks, makes a dump of its memory and wraps everything in an archive.
VMmanager 6 has no backups in the way everyone usually understands it. All the data is stored in the database. If the panel fails, but the database is safe, it will be easy to restore the system. Images work as backups for virtual machines, that allow recovering a VM from an image if necessary. At this moment it will be necessary to stop the VM for making an image, but in the future, they can be made on a running machine.
Native support of Hetzner network
Hetzner — is a popular data center for many providers. They use Port Security for protection and this is why working with Hetzner requires a specific network configuration.
In VMmanager 5 working with the nodes from Hetzner it is necessary to configure the network manually: edit files and configurations, configure a network interface and network bridge, enable forwarding. Since VMmanager 5 can manage only one cluster, you’ll need to have at least two panels if you have other nodes except for the ones hosted in Hetzner.
VMmanager 6 has native support for Hetzner. An admin just needs to create a cluster of Hetzner type and add servers. After that, the panel will apply a special routing and VM configuration automatically. Unlike VMmanager 5, the new generation is capable to manage multiple clusters even if they have different network configurations. It is one of the main differences between the two versions.
VMmanager 5 can work with file storage and LVM. One cluster can have nodes with different storage types, but it wasn’t a popular feature while it was not easy to support it. The panel also supported many types of network storage. In the first releases of the new panel, we will add Ceph-storage support since it is the most popular storage.
VMmanager 6 also supports file storage and LVM. All the nodes within one cluster should have the same type of storage. It helps us to avoid problems with migration. These problems are inevitable if some disks are stored in file storage, while another part — in LVM.
VMmanager 5: a clean dedicated server with CentOS 5 and 6, 100-150 Gb for the root directory.
VMmanager 6: a clean server with CentOS 7, 2 cores 3 Ghg, 4 Gb RAM, 40 Gb disk space. The panel may be installed on VPS.
Our current clients with active licenses for VMmanager 5 have a special offer for buying the new version. Please find the details in our official release.
Both versions of VMmanager can be used for managing virtualization. The main differences are:
- VMmanager 5 may be used for specific tasks when it’s necessary to work with ISO-images, snapshots and network storages (iSCSI, NFS, Ceph, GlusterFS).
- VMmanager 6 is a universal tool that is faster and more convenient and reliable under heavy loads. By the end ot the year we plan to add IPv6 support, Ceph-storage, a dashboard for admins and notification system working through emails and messengers.
VMmanager 6 is tested by more than 30 providers, feel free to check their feedback.
More details on VMmanager 5 and VMmanager 6 is available in the documentation.
There is a chance that we missed something, so feel free to comment on this article and ask questions!