Skip to content

Importing Virtual Servers

If you are running a SolusVM 1 cluster, you can import your existing SolusVM infrastructure into SolusVM 2.

In this topic, you will learn about the following:

  • What does the import involve.
  • Why it is a good idea to import.
  • Associated risks and limitations.
  • Necessary prerequisites.
  • How to import.

Import Overview

This document presumes that you are running a SolusVM 1 cluster and wish to update to SolusVM 2. An in-place upgrade is not available. Instead, you can import your existing SolusVM infrastructure into SolusVM 2.

Import is a one-time process that enables SolusVM 2 to recognize and manage slave nodes and hosted VPSes in a SolusVM 1 cluster. It involves creating a new master node (called "management node" in SolusVM 2) and connecting all existing slave nodes (called "compute resources" in SolusVM 2) to it. Here is what the outcome of a successful import should look like:

  • You have a fully operational SolusVM 2 management node connected to and able to manage all existing compute resources and virtual servers.
  • All existing virtual servers and clients (called "customers" in SolusVM 2) are carried over and can be managed in SolusVM 2 (with certain limitations listed below).
  • Existing customers can log in to SolusVM 2 and manage their servers.
  • Integration with WHMCS (if any) is preserved. You can sell your services, sign up new customers, and keep billing existing ones.

Once the import is over, we strongly recommend that you stop the SolusVM 1 agent on all imported nodes by running the following command

/usr/local/solus/bin/agent services-solusvm1 off

and only manage them via the SolusVM 2 management node. If you have imported every slave node in SolusVM 1 and there are no virtual servers hosted on the master node itself, the SolusVM 1 master node can be decommissioned.

Reasons for Importing

It is always preferable to run the latest version of software, one that is being actively developed and supported. After importing your existing SolusVM 1 infrastructure to SolusVM 2, you will be able to enjoy the following benefits:

  • Enjoy new features and improvements, as well as support for new OSes.
  • Have peace of mind with frequent bugfixes and security patches.
  • Offer apps as services with built-in application customization templates. Offer cPanel and Plesk-based products out of the box with Plesk and cPanel licensing systems.
  • Keep your data safe with an integrated backup solution for the management node and virtual servers. Manage backups for administrator and customers from the UI with just a few clicks.
  • Attract new customers with a modern and clear UI.
  • Serve customers' requests for assistance more efficiently with the built-in self-care portal.
  • Manage every available feature via the API for easy and powerful integration.
  • Use thin storage, such as QCOW2 and ThinLVM, out of the box, which allows achieving more virtual server density per one node.
  • Virtual servers that use LVM can be converted to thin storage (ThinLVM or QCOW2) using migration. In-place live conversion of storage type and image format is not available for now but can be added in the future releases.
  • Be on the cutting edge with a modern technology stack:
    • Management node packed in containers improves security.
    • The compute resource agent binary written in Go ensures good isolation from the operating system, which makes updating much more stable.
    • Open vSwitch provides a single interface for the network layer.
    • Cloudinit makes generic virtual server provisioning possible.

Risks and Limitations

Warning

Before importing, make sure you have carefully read through this section!

There are a number of factors you need to take into account before beginning the import:

  • Unforeseen complications may occur during the import process.
  • Certain functionality may work differently in SolusVM 1 and SolusVM 2, or be missing from SolusVM 2.
  • Not all settings and data can be imported.

Make sure that you fully understand the implications of importing from SolusVM 1 to SolusVM 2 to avoid unpleasant surprises and the disruption of your business processes.

Risks

Import from SolusVM 1 is pretty straightforward. However, there are always certain risks. Make sure you understand them before moving forward.

  • Make sure you have carefully read the information about the limitations of import and the changes between SolusVM 1 and SolusVM 2 business logic found in this topic, and considered it in view of your business. If a certain feature absent from SolusVM 2 is vital for your customers, this may become a blocker for import, or at least require careful consideration on your part.

  • There is a possibility that SolusVM may misconfigure network limits during import.

  • There is a possibility that creating new virtual servers on imported compute resources via WHMCS may not be 100% smooth. We recommend testing this scenario before making it available to customers.

  • Although import was designed from the ground up to cause zero VPS downtime, in theory, some downtime is possible.

  • There is always a risk, however small, that we failed to consider some edge case that may cause complications under highly specific conditions.

Limitations

Importing from SolusVM 1 comes with a number of caveats and limitations. Consider them and plan accordingly.

  • KVM based virtual servers imported from SolusVM 1 require installation of Guest Tools. Guest Tools are possible to install from SolusVM 2 admin interface. The following SolusVM 2 features will not be available if Guest Tools are not installed:

    • Additional IP addresses support.
    • The ability to change a virtual server's hostname.
    • The ability to change a virtual server's root password.

    These limitations do not apply to new virtual servers created in SolusVM 2 and hosted on compute resources imported from SolusVM 1.

    Guest Tools installation is now supported for the following guest operating systems:

    • AlmaLinux 8, AlmaLinux 9
    • CentOS 7, CentOS 8 Stream, CentOS 9 Stream
    • CloudLinux 7, CloudLinux 8
    • Debian 9, Debian 10, Debian 11, Debian 12
    • RockyLinux 8
    • Ubuntu 18, Ubuntu 20, Ubuntu 22
    • VzLinux 7, Vzlinux 8

    Guest Tools installation support for CentOS 6 will be added soon. If you need support for other operating systems please contact technical support.

  • Certain SolusVM 1 features are missing from SolusVM 2 and are not imported:

    • Media groups.
    • Custom DNS records for virtual servers.
    • Automatic node select type ("Random" or "First available").
    • KVM memory tuning ("hard-limit" and "soft-limit").

    Additionally, existing KVM OS templates are not imported. SolusVM 2 comes with OS images that serve the same function.

  • You can only import entire slave nodes with all hosted VPSes. You cannot import individual VPSes.

  • You can only import a slave node if all VPSes hosted on it can be imported. Even a single VPS that cannot be imported disqualifies the entire node.

  • Only OpenVZ/Virtuozzo and KVM compute resources and virtual servers can be imported. XEN is not supported in SolusVM 2.

  • Slave nodes based on CentOS 5 and 6 cannot be imported.

  • Virtual server backups created in SolusVM 1 are not imported.

  • Resellers are not supported in SolusVM 2, and are therefore not imported.

  • Statistics data is not imported.

  • SolusVM 2 does not support multiple PowerDNS servers.

  • SolusVM 2 creates reverse DNS records for IPv4 addresses in the standard form like 1.0.168.192.in-addr.arpa where the 1.0.168.192 part is generated automatically from all four octets of the IPv4 address. If a zone contains the IP address' octets like 168.192.in-addr.arpa, then the record 1.0 will be created using the last two octets. SolusVM 1 creates records using only the last fourth octet. If you need to hold by the way SolusVM 1 works, you can customize Reverse DNS Record name template in the IP block settings using the {{ fourth-octet }} variable.

  • The "Max Disk" values for slave nodes are converted from MB to GiB, rounded down.

  • Webhooks created in SolusVM 1 are not imported, and must be recreated manually. Learn how to create webhooks in SolusVM 2.

Terminology changes

Some entities familiar to you from SolusVM 1 have different names is SolusVM 2 while conceptually remaining the same.

SolusVM 1 Name SolusVM 2 Name
Master node Management node
Slave node Compute resource
VPS Virtual server
Client Customer
OS template OS image

Business logic changes

There are some important differences between SolusVM 1 and SolusVM 2 business logic. Make sure you understand them before importing.

  • Once the import is complete, any operations performed in SolusVM 2 will follow SolusVM 2 business logic, even if you are still using SolusVM 1 to manage your SolusVM infrastructure.

    Warning

    Removing an imported customer account in SolusVM 2 will result in all of that customer's virtual servers being removed together with their backups, with no possibility of recovery.

  • In SolusVM 2, virtual server backups can be created both by the administrator and customers.

    Warning

    If a virtual server is deleted, all its backups are deleted as well with no possibility of recovery.

  • SolusVM 2 does not send email notifications when a compute resource goes offline.

  • SolusVM 2 API and CLI are not compatible with those of SolusVM 1. If you use either in your integrations, those integrations will need to be updated.

Prerequisites for Import

Before you can begin, there is a number of steps you need to take.

  • Set up a SolusVM 2 management node on a new server. This will be your new management node. To license the management node, contact the SolusVM support team or request a temporary license.

    Note

    You cannot use the server hosting the SolusVM 1 master node for the SolusVM 2 management node, or decommission it early. The SolusVM 1 master node must remain available until the import is finished.

  • Upgrade the SolusVM 1 master node to version 1.27.27 or later.

  • Make sure that there is network connectivity between the target SolusVM 2 management node, the source SolusVM 1 master node, and every slave node you plan to import.

  • Make sure that it is possible to log in to the SolusVM 1 master node from the SolusVM 2 management node via SSH using public key authentication as either the root user or a different user that has root privileges.

  • Make sure that the network settings of every slave node you plan to import are correct. You can check it in SolusVM 1 > Nodes > Edit node > Network Interface.

  • If you have PowerDNS integration set up in the SolusVM 1 cluster, set up PowerDNS integration in the SolusVM 2 cluster as well.

  • By default, the "CLIENT" role will be set for imported users. If you need to set a custom role with a custom set of permissions for users' accounts that will be imported from the SolusVM 1 cluster, use the "The default role for new users" setting (in Settings > User Area).

  • We strongly recommend that you create new backups of all virtual servers hosted on slave nodes you are planning to import and make sure that you can restore them. This way, you will be able to return your SolusVM 1 cluster to working condition should anything go awry.

  • We strongly recommend that you lock slave nodes during import to make sure no new VPSes are provisioned to them during import.

Importing your SolusVM Cluster

To import your SolusVM 1 cluster into SolusVM 2, first, you need to create an import process. You can use a single import process to import any number of slave nodes and hosted VPSes as long as all of them are a part of a single SolusVM 1 cluster. To import from multiple SolusVM 1 clusters, create a separate import process for each one.

To create an import:

  1. Go to Cluster Imports, and then click Add.
  2. Name your import. Use any name you want. This is so that you can tell different import processes from each other.
  3. Provide the IP address or hostname of the SolusVM 1 master node.
  4. If the port 8080 is in use on the SolusVM 1 master node, provide a different, available port number. This port will be used in the future by the SolusVM 2 agent.
  5. By default, the import process runs under the root user. You can provide a different user name, but unless that user has root privileges, the import will fail. This user will be used to log in to master and slave nodes during import.
  6. If you are using a custom SSH port, provide it.
  7. Provide the private part of an SSH key (only RSA keys are supported) for the user specified during step four that can be used to log in to the master node and to nodes servers you are going to import.
  8. Click Add.

Here is what a correctly filled out form may look like:

SolusVM 2 will try to connect to the SolusVM 1 master node using the information you provided. This will generally take a few seconds. If, after that, the result is "Prepared", you are ready to begin. Otherwise, you will need to resolve any issues before proceeding.

  1. Click "Error on import" to see the error(s) SolusVM 2 encountered trying to connect. Most likely, the issue is either with network connectivity, authentication, or authorization.
  2. Click the icon, double-check the provided information, then try again.

Once the result is "Prepared", you are ready to proceed. You can now import one or more slave nodes from the SolusVM 1 cluster with all hosted VPSes.

Note

You can safely delete an import process at any time with no loss of data.

To import virtual servers:

  1. Go to Cluster Imports, find the import process you want to resume, and make sure that its status is "Prepared".
  2. If the import process was created some time ago, click the icon to refresh the information about the source SolusVM 1 cluster.
  3. Click the icon to proceed.
  4. Select one or more node(s) to import all virtual servers hosted on them, and then click Run.

The status of the import process will change to "Importing" to indicate that the selected slave nodes are being imported. Once the status changes back to "Prepared", it means that the selected slave nodes have been imported into SolusVM 2. You can find the imported slave nodes in Compute Resources, and all VPSes hosted on them in Virtual Servers.

Warning

Do not remove any entities (VPSes, clients, and so on) you have imported, either from SolusVM 2 or SolusVM 1, unless you are prepared to lose them. Imported entities are governed by both SolusVM 2 or SolusVM 1 with full authority. So, deleting an imported VPS in SolusVM 2 does not merely remove it from the SolusVM 2 interface, but results in the deletion of the VPS and the loss of all associated data.

If, after an import process is finished, the imported node and virtual servers have the "unavailable" status in SolusVM 2, there were issues during import. Such virtual servers are running as normal, but cannot be managed from SolusVM 2.

To fix "unavailable" virtual servers:

  1. Go to Tasks.
  2. Find the corresponding failed "install agent" task, and then click the icon to see why the task failed.
  3. Resolve the issue, and then click the icon to retry the task.

Once the "install agent" task finishes successfully, the imported compute resource(s) and virtual server(s) will no longer be marked as "unavailable" in SolusVM 2.

Note

You can run import again for a node that has already been imported. As a result, entities (IP addresses and blocks, plans, customers, and so on) created since the last import will also be imported. Entities that already have been imported will not be re-synced to or updated in SolusVM 2, even if they have changed since the last import.

Post-import actions

  • Enable backups for the management node.

  • Enable backups on the imported compute resources.

  • If you are satisfied with the results of the import and no longer plan to manage the imported slave node(s) via SolusVM 1, we recommend that you stop SolusVM 1 services on those nodes by running the following command:

    /usr/local/solus/bin/agent services-solusvm1 off

  • To roll back the changes made on a slave node during import, run the following command on that slave node:

    /usr/local/solus/bin/agent services-solusvm1 on

If any slave nodes belonging to the same SolusVM 1 cluster have not yet been imported, you can repeat the steps above to import them using the same import process. If all slave nodes in the SolusVM 1 cluster have been imported, the import process no longer serves any purpose and can be safely deleted.

Importing WHMCS Data

If you are using WHMCS, to be able to continue to charge the customers you import from SolusVM 1, you need to update their products. You can do it automatically using the SolusVM 2 converter, or manually via the WHMCS interface. You can also convert your SolusVM 1 products to SolusVM 2 ones. Either way, you need to integrate SolusVM 2 with WHMCS first.

To integrate SolusVM 2 with WHMCS:

  1. Install the SolusVM 2 WHMCS module in your WHMCS instance.
  2. Configure the SolusVM 2 WHMCS module.

You can now start updating your customers' products.

Note

To be able to update imported products automatically, php-cli must be installed on the server hosting your WHMCS instance.

To update a single imported product for all customers automatically:

  1. Log in to your WHMCS instance.
  2. Create a corresponding SolusVM 2 product if it has not already been created.
  3. Log in to the server hosting your WHMCS instance via SSH, and then change the working directory to the one the SolusVM 2 provisioning module is installed in (modules/servers/solusvm2vps).
  4. Run the php converter.php products command to see the list of all SolusVM 1 and 2 products. For example, here's what the output may look like:

    Existing SolusVM v1 Products:
    ID   Name
    10   SolusVM foo product
    20   SolusVM bar product
    Available for converting SolusVM v2 Products:
    ID   Name
    30   SolusVM 2 foobar product
    
  5. Run the php converter.php run <SolusVM 1 ID> <SolusVM 2 ID> command to convert all customers using the specified SolusVM 1 product to the specified SolusVM 2 product. In the example above, run php converter.php run 10 30 to convert all customers using the "SolusVM foo product" to the "SolusVM 2 foobar product".

The imported customers will now be billed for the SolusVM 2 product.

To update a single imported product for a single customer manually:

  1. Log in to your WHMCS instance.
  2. Create a corresponding SolusVM 2 product if it has not already been created.
  3. Go to Clients, locate the client, and then click the corresponding Product/Service entity.

  4. Change the Product/Service type to the product from step 2.

  5. Click Sync account on the product page.

The imported customer will now be billed for the SolusVM 2 product. For every imported customer you want to keep billing via WHMCS, repeat this procedure for each imported product they have.

To convert your SolusVM 1 products:

  1. Log in to the server hosting your WHMCS instance via SSH, and then change the working directory to the one the SolusVM 2 provisioning module is installed in (modules/servers/solusvm2vps).
  2. Run the php converter.php reconfigure command with the "--mn-server" option to to convert your SolusVM 1 products to SolusVM 2 products. For example:

    php converter.php reconfigure --mn-server=2

    Here, --mn-server=2 is the ID of the SolusVM 2 management node. You can look it up in your WHMCS instance System Settings > Servers.

Note

In some cases, you may need to provide the IDs of plans, OS images, and/or locations in case those cannot be retrieved automatically. In this case, run php converter.php help to learn about the necessary options.

Customers will now be billed for the converted SolusVM 2 products.

Back to top