You create an automated instant-clone farm as part of the process to give users access to published applications or published desktops. An automated farm consists of multi-session Linux hosts that are instant-clone virtual machines (VMs) in vCenter Server.

Overview of Instant-clone Farms

An automated instant-clone farm is created from a golden image using the vmFork technology (called instant clone API) in vCenter Server. In addition to using the instant clone API from vCenter Server, Horizon 8 creates several types of internal VMs (Internal Template, Replica VM, and ParentVM) in order to manage these clones in a more scalable way.

Although helpful in speeding up the provisioning speed, the use of parentVM does increase the memory requirement across the cluster. Sometimes when the benefit of having more memory outweighs the increase in provisioning speed, Horizon 8 automatically chooses to provision instant clones directly from replicaVM, without creating any parentVM. This feature is called Smart Provisioning. A single instant clone farm can have both instant clones that are created with parentVMs or without parentVMs.

When parentVM is used, instant clones share the virtual disk of the parentVM and therefore consume less storage than full VMs. In addition, instant clones share the memory of the parentVM when they are first created, which contributes to fast provisioning. Once the instant clone VM is provisioned and the machine starts to be used, additional memory is utilized.

An instant-clone desktop farm has the following benefits:
  • The provisioning of instant clones is fast, with or without using parentVM.
  • Instant clones are always created in a powered-on state, ready for use.
  • You can patch a farm of instant clones in a rolling process with zero downtime.

Connection Server creates the instant-clone virtual machines based on the parameters that you specify when you create the farm. Instant clones share a virtual disk of a parentVM and therefore consume less storage than full virtual machines. In addition, instant clones share the memory of a parentVM and are created using the vmFork technology.

Process of Creating Instant Clones

Publishing an image is a process by which internal VMs needed for instant cloning are created from a golden image and its snapshot. This process only happens once per image and might take some time.

Horizon 8 performs the following steps to create a pool of instant clones:

  1. Horizon 8 publishes the image that you select. In vCenter Server, four folders (ClonePrepInternalTemplateFolder, ClonePrepParentVmFolder, ClonePrepReplicaVmFolder, and ClonePrepResyncVmFolder) are created if they do not exist, and some internal VMs that are required for cloning are created. In Horizon Console, you can see the progress of this operation on the Summary tab of the desktop pool. During publishing, the Pending Image pane shows the name and state of the image.
    Note: Do not tamper with the four folders or the internal VMs that they contain. Otherwise, errors might occur. The internal VMs are removed when they are no longer needed. Normally the VMs are removed within 5 minutes of pool deletion or a push-image operation. However, sometimes the removal can take up to 30 minutes. If there are no internal VMs in all four folders, these folders are unprotected and you can delete these folders.
  2. After the image is published, Horizon 8 creates the instant clones. This process is fast. During this process, the Current Image pane in Horizon Console shows the name and state of the image.

After the farm is created, you can change the image through the push-image operation. As with the creation of a farm, the new image is first published. Then the clones are recreated.

When an instant-clone pool farm is created, Horizon 8 spreads the pool across datastores automatically in a balanced way. If you edit a farm to add or remove datastores, rebalancing of the cloned VMs happens automatically when a new clone is created.

Prerequisites

  • Verify that Connection Server is installed. See the Horizon Installation document.
  • Verify that Connection Server settings for vCenter Server are configured in Horizon Console. See the Horizon Administration document.
  • Verify that you have a sufficient number of ports on the ESXi virtual switch that is used for the virtual machines that are used as remote desktops. The default value might not be sufficient if you create large desktop pools.
  • Verify that you have prepared a golden-image host machine. See Preparing a Linux Virtual Machine for Desktop Deployment. Horizon Agent must be installed on the host machine.
  • Verify that each host machine is running one of the following Linux operating systems:
    • RHEL Workstation 7.8, 7.9, 8.1, 8.2, or 8.3
    • Ubuntu 18.04/20.04
  • Verify that you have installed Horizon Agent on the golden-image machine with the --multiple-session parameter included. For example:
    sudo ./install_viewagent.sh --multiple-session
  • Take a snapshot of the golden-image host machine in vCenter Server. You must shut down the host machine before you take the snapshot. Connection Server uses the snapshot as the baseline configuration for creating the clones.

    For more information, see "Take a Snapshot in the VMware Host Client" in vSphere Single Host Management - VMware Host Client, available from VMware vSphere Documentation.

Procedure

  1. In Horizon Console, select Inventory > Farms. Then click Add.
    The farm configuration wizard appears. As you advance through the wizard, you can go directly back to any prior page by clicking the page name in the navigation pane.
  2. In the Type page of the wizard, select Automated Farm and then click Next.
  3. In the vCenter Server page of the wizard, select Instant Clone and click Next.
  4. In the Storage Optimization page of the wizard, configure the required settings.
    Setting Description
    Use VMware Virtual SAN/Do not use VMware Virtual SAN Specify whether to use VMware vSAN, if available. vSAN is a software-defined storage tier that virtualizes the local physical storage disks available on a cluster of ESXi hosts.
    Use Separate Datastores for Replica and OS Disks

    (Available only if you do not use vSAN) You can place replica and OS disks on different datastores for performance or other reasons.

    If you select this option, you can select the options to select one or more instant-clone datastores or replica disk datastores.

    Click Next to proceed to the next page of the configuration wizard.
  5. In the Identification and Settings page of the wizard, configure the required settings.
    Setting Description
    ID Unique name that identifies the farm.
    Description Description of this farm.
    Access Group Select an access group for the farm, or leave the farm in the default root access group.
    Default Display Protocol Select VMware Blast. VMware Blast is the only display protocol supported for user sessions on Linux desktops.
    Allow Users to Choose Protocol Select Yes or No. This setting applies to published desktop pools only, not application pools. If you select Yes, users can choose the display protocol when they connect to a published desktop from Horizon Client. The default is Yes.
    3D Renderer

    Select 3D graphics rendering for desktops.

    NVIDIA GRID vGPU is the only 3D rendering option offered for an automated farm of instant-clone hosts.

    Pre-launch Session Timeout (Applications Only)

    Determines the amount of time that an application configured for pre-launch is kept open. The default is After 10 minutes.

    If the end user does not start any application in Horizon Client, the application session is disconnected if the idle session times out or if pre-launch session times out.

    If you want to end the pre-launch session after timeout, you must set the Logoff Disconnected Sessions option to Immediate.

    Empty Session Timeout (Applications Only)

    Determines the amount of time that an empty application session is kept open. An application session is empty when all the applications that run in the session are closed. While the session is open, users can open applications faster. You can save system resources if you disconnect or log off empty application sessions. Select Never, Immediate, or set the number of minutes as the timeout value. The default is After 1 minute. If you select Immediate, the session logs off or disconnects within 30 seconds.

    When Timeout Occurs Determines whether an empty application session is disconnected or logged off after the Empty Session Timeout limit is reached. Select Disconnect or Log Off. A session that is logged off frees up resources, but opening an application takes longer. The default is Disconnect.
    Logoff Disconnected Sessions Determines when a disconnected session is logged off. This setting applies to both desktop and application sessions. Select Never, Immediate, or After ... minutes. Use caution when you select Immediate or After ... minutes. When a disconnected session is logged off, the session is lost. The default is Never.
    Allow Session Collaboration Select Enabled to allow users of desktop pools based on this farm to invite other users to join their remote desktop sessions. Session owners and collaborators must use the VMware Blast protocol.
    Max Sessions Per RDS Host Determines the maximum number of sessions that a host machine can support. Select Unlimited or No More Than .... The default is Unlimited.
    Click Next to proceed to the next page of the configuration wizard.
  6. In the Load Balancing Settings page of the wizard, configure the required settings.
    Setting Description
    Use Custom Script Select this setting to use a custom script for load balancing.
    Include Session Count Select this setting to include the session count on the Linux host for load balancing. If none of the settings are selected for load balancing and if the custom script setting is not selected, Horizon 8 uses the session count by default. Disable this setting if you do not need to consider the session count for load balancing.
    CPU Usage Threshold Threshold value for the CPU usage in percentage. Horizon 8 uses the configured CPU threshold to calculate the CPU load index factor. You can set a value from 0 to 100. The recommended value is 90. By default, this setting is not considered for load balancing. The default value is 0.
    Memory Usage Threshold Threshold value for the memory in percentage. Horizon 8 uses the configured memory threshold to calculate the Memory Load Index factor. You can set a value from 0 to 100. The recommended value is 90. By default, this setting is not considered for load balancing. The default value is 0.
    Disk Queue Length Threshold Threshold of the average number of both read and write requests that were queued for the selected disk during the sample interval. Horizon 8 uses the configured threshold to calculate the Disk Load Index factor. You can set the value to any positive integer. By default, this setting is not considered for load balancing. The default value is 0.
    Disk Read Latency Threshold Threshold of the average time of write of data to the disk in milliseconds. Horizon 8 uses the configured threshold to calculate the Disk Load Index factor. You can set the value to any positive integer. By default, this setting is not considered for load balancing. The default value is 0.
    Click Next to proceed to the next page of the configuration wizard.
  7. In the Provisioning Settings page of the wizard, configure the required settings.
    Setting Description
    Enable Provisioning Select this check box to enable provisioning after you finish this wizard. This box is checked by default.
    Stop Provisioning on Error Select this check box to stop provisioning when a provisioning error occurs. This box is checked by default.
    Naming Pattern Specify a prefix or a name format. Horizon 8 will append or insert an automatically generated number starting with 1 to form the machine name. If you want the number at the end, simply specify a prefix. Otherwise, specify {n} anywhere in a character string and {n} will be replaced by the number. You can also specify {n:fixed=<number of digits>}, where fixed=<number of digits> indicates the number of digits to be used for the number. For example, specify vm-{n:fixed=3}-sales and the machine names will be vm-001-sales, vm-002-sales, and so on.
    Note: Each machine name, including the automatically generated number, has a 15-character limit.
    Maximum Machines The number of machines to be provisioned.
    Minimum Number of Ready (Provisioned) Machines during Instant Clone Maintenance Operations This setting lets you keep the specified number of machines available to accept connection requests while Connection Server performs maintenance operations on the machines in the farm. This setting is not honored if you schedule immediate maintenance.
    Click Next to proceed to the next page of the configuration wizard.
  8. In the vCenter Settings page of the wizard, configure the required settings.
    Setting Description
    Parent VM in vCenter Click Browse, select Linux for Operating System, and select a golden-image virtual machine from the list.
    Snapshot

    Click Browse and select the snapshot of the golden-image virtual machine to use as the base image for the farm.

    Do not delete the snapshot and golden-image virtual machine from vCenter Server, unless no instant clones in the farm use the default image, and no more instant clones will be created from this default image. The system requires the golden-image virtual machine and snapshot to provision new instant clones in the farm, according to farm policies. The golden-image virtual machine and snapshot are also required for Connection Server maintenance operations.

    VM Folder Location Click Browse and select the folder in vCenter Server in which the farm resides.
    Cluster

    Click Browse and select the ESXi host or cluster on which the desktop virtual machines run.

    For the maximum limit on the cluster, see the VMware Knowledge Base (KB) article on Sizing Limits and Recommendations.

    Resource Pool Click Browse and select the vCenter Server resource pool in which the farm resides.
    Datastores

    Click Browse and select one or more datastores on which to store the farm.

    A table on the Select Instant Clone Datastores screen provides high-level guidelines for estimating the farm's storage requirements. These guidelines can help you determine which datastores are large enough to store the instant clones. The Storage Overcommit value is always set to Unbounded and is not configurable.

    Note: If you use vSAN, there is only one datastore.
    Replica Disk Datastores

    Select one or more replica disk datastores on which to store the instant-clones. This setting appears if you selected Use Separate Datastores for Replica and OS Disks in the Storage Optimization page of the farm configuration wizard.

    A table on the Select Replica Disk Datastores screen provides high-level guidelines for estimate the farm's storage requirements. These guidelines can help you determine which replica disk datastores are large enough to store the instant clones.

    Network

    Click Browse and select the networks to use for the instant-clone farm. You can select multiple vLAN networks to create a larger instant-clone farm. This setting uses the network type from the current golden image configured in vSphere Client and displays networks based on the network type of the parent VM: DVS, NSX-t, and Standard. You can use the same network as the parent VM or select a network from the list of available options. Networks are filtered based on the parent VM network type available in the selected cluster.

    The Select Networks screen provides a list of networks based on the parent VM network type available in the selected cluster. To use multiple networks, you must unselect Use network from current parent VM image and then select the networks to use with the instant-clone farm. Use the Filter box to show or hide specific network types.

    The screen displays error messages for the following incompatible networks:

    • vmcNetworks. This network belongs to VMC internal network
    • dvsUplinkPort. Cannot use network because it does not meet the naming standards for a virtual switch uplink port.
    • notConfiguredOnAllHosts. Cannot use network because it is not configured on all hosts in the cluster.

    The screen does not list the Standard network type for selection. Therefore, if the parent VM network type is Standard, then you must select Use network from current parent VM image.

    The screen also provides the list of ports and port bindings that are available to use: static (early binding) and ephemeral. Instant clones only support static port group types and ephemeral port group types are dimmed and listed as incompatible.

    All selected NSX-t network segments must be the same size, such as all /24 networks. Unequally sized segments can result in provisioning errors.

    Click Next to proceed to the next page of the configuration wizard.
  9. In the Guest Customization page of the wizard, configure the required settings.
    Setting Description
    Domain

    Select the Active Directory domain and user name.

    Connection Server requires certain user privileges to configure the farm. The domain and user account are used by ClonePrep to customize the instant-clone machines.

    You specify this user when you configure Connection Server settings for vCenter Server. You can specify multiple domains and users when you configure Connection Server settings. In this farm configuration wizard, you must select one domain and user from the list.

    AD container

    Provide the relative distinguished name for the Active Directory container.

    For example: CN=Computers

    You can click Browse to search your Active Directory tree for the container. You can also cut, copy, or paste in the container name.

    Allow Reuse of Existing Computer Accounts

    Select this option to use existing computer accounts in Active Directory when the virtual machine names of new instant clones match the existing computer account names.

    When an instant clone is created, if an existing AD computer account name matches the instant-clone virtual machine name, Horizon 8 uses the existing computer account. Otherwise, a new computer account is created.

    The existing computer accounts must be located in the Active Directory container that you specify with the AD container setting.

    When this option is disabled, a new AD computer account is created when Horizon 8 creates an instant clone. This option is disabled by default.

    Image Publish Computer Account Publishing instant clones requires an additional computer account in the same AD domain as the clones. If you want to use pre-created computer accounts instead of auto-created computer accounts, you must also create the additional computer account and specify its name here. Then you do not need to delegate Create and Delete of computer objects to the provisioning account.
    Use ClonePrep

    Provide a ClonePrep customization specification to customize the virtual machines.

    • Power-Off Script Name. Name of the customization script that ClonePrep runs on instant-clone machines before they are powered off. Provide the path to the script on the golden-image virtual machine.
    • Power-Off Script Parameters. Provide parameters that ClonePrep can use to run a customization script on instant-clone machines before they are powered off. For example, use p1.
    • Post-Synchronization Script Name. Name of the customization script that ClonePrep runs on instant-clone machines after they are created or an image has been pushed to them. Provide the path to the script on the golden-image virtual machine.
    • Post-Synchronization Script Parameters. Provide parameters for the script that ClonePrep runs on instant-clone machines after they are created or an image has been pushed to them. For example, use p2.
    Click Next to proceed to the next page of the configuration wizard.
  10. In the Ready to Complete page of the wizard, review the settings and click Submit to create the automated instant-clone farm.

What to do next

Create a published application pool or a published desktop pool. See one of the following topics: