This KB article contains the detailed instructions of how to convert Shared VPSes into Hardware Nodes on OA, in addition to the ones available in OA guide .

Please note that Virtuozzo version must be at least 4.7

Important(!) - Do not perform a conversion on earlier VZ versions

Preparations part

  1. Passwordless (key-based) access must be configured from OA Management Node to all VZ nodes where shared containers are located. The following resource may be useful - SSH login without password

  2. Configure Front Net and the Back Net virtual networks on VZ node:

    a) check networks - # vznetcfg net list

    b) create new networks if needed - # vznetcfg net new BackNet , # vznetcfg net new FrontNet

    c) check IP addresses and how they are bound to networks - # ip a l or # ifconfig -a

    d) associate new network with one of them according to the following example: # vznetcfg net addif BackNet eth1

    Finally virtual networks configuration on VZ node will be similar to the following example:

    [root@VZnode ~]# vznetcfg net list
    
    Network ID        Status      Master Interface  Slave Interfaces
    BackNet           active      eth1
    FrontNet          active      eth0
    
  3. Check the values of the following parametres:

    a) --host-id - VPSes ID in OA , may be found in OA CP at: Services > Cloud Infrastructure > VPSs

    b) --hw-host-id - ID of the VPS Hardware Node (VZ node), may be found at: Services > Cloud Infrastructure > VPS Hardware Nodes

    c) --gateway - Gateway IP address, may be checked on VZ node by running the following command: # netstat -nr

    Example:

    # netstat -nr
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    ...
    ...
    169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
    0.0.0.0         10.39.1.1       0.0.0.0         UG        0 0          0 eth0
    

    See the last line in the output - in this example, Gateway IP is 10.39.1.1

    *Note that for VPSes that have Internal IP only assigned, Gateway value may be checked by running # netstat -nr inside of the container. Often in such cases Gateway IP is 169.254.0.0

    d) --backnet - name of the virtual Back Net configured for the container.

    e) --frontnet - name of the virtual Back Net configured for the container.

  4. Create a backup copy of the containers' configs:

    # cp -p /etc/sysconfig/vz-scripts/<CTID>.conf /etc/sysconfig/vz-scripts/<CTID>.conf.bak 
    

    If the conversion fails for some reason, it is possible to restore container's network settings by replacing it's config with backup and CT restart.

    Alternatively, you may create a full container's backup (clone) using the following command and set --onboot no parameter for the clone (so the cloned CT will not be started automatically after VZ node reboot):

        # vzmlocal -C <source_CTID>:<copy_CTID>
        # vzctl set <copy_CTID> --save --onboot no
    

    The copy_CTID must be free, i.e. not assigned to any other container.

    Note that cloning of large containers may take a significant amount of time.

Conversion

Once password-less access from MN to VZ node and and virtual networks are configued and host-id, hw-host-id and gateway values are clarified for a specific VPS, conversion script may be launched on MN according to the following example:

For VPS with both External and Internal IPs assigned:

/usr/local/pem/bin/convert_vps_to_host.py --host-id 32 --hw-host-id 2 --gateway 10.39.1.1 --backnet BackNet --frontnet FrontNet --verbose  

For VPS with Internal IP only:

/usr/local/pem/bin/convert_vps_to_host.py --host-id 32 --hw-host-id 2 --gateway 169.254.0.0 --backnet BackNet --verbose

Note that the 'host id' values and IP addresses in the above commands are examples only and must be replaced with the real values



Known issues:

  • 128008 Communication failure with remote server
  • 128612 missing networks on venet0
  • 128010 network interfaces are missing on Shared VPS
  • 126740 ValueError: invalid literal for int(): auto
  • 124085 There is no networks on host`
  • 128151 convert_vps_to_host.py uses ServiceCT IP while SSHing to VPS HW node
  • 128153 RTNETLINK answers: No such process
  • 127179 Shared VPS located on hardware host %d but passed %s'
  • 128609 Host pemhost123 is not a Shared VPS
  • 128096 There is no password, pubkey ssh access to host
  • 127178 Network is missing on host
  • 128608 Failed to find %s backnet IP
  • 128613 ERROR poaupdater.uUtil.ExecFailed
  • 128611 There is no YUM tool installed on host

Other questions about the convert_vps_to_host.py script:

  • 128464 A Hub article that describes conversion mechanism
  • 128009 Is it necessary to configure yum repositories on shared VPS registered in OA before converting it to hardware node with convert_vps_to_host.py?
  • 127177 Is it possible to convert VPS that already has bridged networks configured?
  • 128610 How to add manually created VPS as a Hardware Node?

Internal content

How to restore OA DB records and container's configuration in case of failed VPS conversion to HW node