Description

The article describes the procedure of converting Shared VPSs into Hardware Nodes and known issues faced while using it. Common method of usage can be found in the guide Converting Shared VPSs into Hardware Nodes

General questions

  1. Is this mandatory that we need to apply it on our OA 5.5? If we did it then what will be the impact on our OA system?

    All the shared containers in OSA environment should be converted to VPS Hardware Nodes before upgrading to OA 6.0. It is not possible to upgrade if this requirement is not fulfilled. Starting with the OA 6.0, OA stopped supporting any deployment scenarios using shared containers (VPSs). This procedure should be done for all VPSs before the upgrade, otherwise the upgrade script will stop the process with corresponding message.

  2. Does the script convert_vps_to_host.py have any requirements to Virtuozzo version?

    Version of Virtuozzo should be at least 4.7. On earlier versions of Virtuozzo IP addresses inside containers will be lost after restart.

  3. If we perform the steps mentioned in given URL then will there any service interruption to our customers? i.e. to Hosted Exchange and Hyper-V services. How much time will it take to convert one VPS?

    The procedure does not affect such Windows services as Hosted Exchange and Hyper-V. Generally the process of conversion includes DB updates and changing network in container from host-routed to bridged, nothing else. It must be done because OA can not manage IPs configured in Host-Routed mode, i.e. adding new IPs or removing old ones. Once the VPS is converted, OA will use the general system internal tools in VPS to manage IPs, but not from the side of VPS hardware node. This procedure taken 5-10 minutes maximum. However, the long part of the process is the backup of VPS. It is required to make a backup of VPS before the conversion, and it can take a lot of time depending on the amount of data in the container.

  4. What exact changes are applied to VPS by the script convert_vps_to_host.py ?

    The following changes are applied on container while executing the script:

    • Changing network interface from "venet0" to "eth0"

    • Adding new interface:

      def ve_add_ifname(hw_host, host, ifname, save):
      cmd = ["vzctl", "set", str(ctid), "--netif_add", ifname, "--save"]
      
    • Removing old interface:

      def ve_remove_ifname(hw_host, host, ifname, save):
      cmd = ["vzctl", "set", str(ctid), "--netif_del", ifname, "--save"]
      
    • Assigning IP address:

      def ve_assign_ip(hw_host, host, ifname, ip_address, netmask, save, use_vzctl = False):
      cmd = ["vzctl", "set", str(ctid),
              "--ipadd", "%s/%s" % (ip_address, netmask)]
          if save:
              cmd.append("--save")
      
    • Removing old IP Address:

      def ve_remove_ip(hw_host, host, ifname, ip_address, netmask, save):
      if un_alias(ifname) == "venet0":
              cmd = ["vzctl", "set", str(ctid),
                  "--ipdel", ip_address]
          else:
              cmd = ["vzctl", "set", str(ctid),
                  "--ifname", un_alias(ifname),
                  "--ipdel", ip_address]
      
    • Attaching VE to a network:

      def ve_attach_to_network(hw_host, host, ifname, network_name):
      cmd = ["vzctl", "set", str(ctid), "--ifname", ifname, "--network", network_name, "--save"]
      
    • Setting default route:

      def ve_set_default_route(hw_host, host, ip_address):
      cmd = ["vzctl", "exec", str(ctid), "ip route del default"]
      cmd = ["vzctl", "exec", str(ctid), "ip route add default via %s" % ip_address]
      
    • Updating the information in file "/etc/sysconfig/network" inside the container:-

      cmd = ["vzctl", "exec", str(ctid), "/bin/sed -i.backup '/GATEWAY/d' /etc/sysconfig/network"]
      cmd = ["vzctl", "exec", str(ctid), "/bin/sed -i '\\$aGATEWAY=%s' /etc/sysconfig/network" % ip_address]
      
    • Restarting pem service in the container:

      cmd = ["vzctl", "exec", str(ctid), "service pem stop"]
      cmd = ["vzctl", "exec", str(ctid), "service pem start"]
      

Known issues with convert_vps_to_host.py script:

  • 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:

  • 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

Link on internal Article