VMware Horizon 7 – RDS Farms/Pools

Last Modified: Nov 11, 2020 @ 1:18 pm

Navigation

This post applies to all VMware Horizon 7 versions including 7.13 (ESB) and 7.10.3 (ESB).

Change Log

Overview

This post details VMware Horizon configuration for Remote Desktop Session Host (RDS) Horizon Agents. Virtual Desktops are detailed at Master Virtual Desktop and Virtual Desktop Pools.

Before following this procedure, build a master RDS Session Host.

Before you can publish applications or RDS desktops, you must create an RDS Farm. An RDS Farm is a collection of identical (cloned) Remote Desktop Session Hosts. Applications must be installed identically on every machine in the farm. If you have different applications on different Remote Desktop Session Hosts, then these are different RDS Farms.

Horizon 7.7 and newer support up to 200 RDS farms, and each farm with up to 500 RDS hosts.

  • Horizon 7.6 and older support up to 200 RDS farms, and each farm with up to 200 RDS hosts.

Once the RDS Farms are created, you publish icons from them by either creating a Desktop Pool or an Application Pool or both. When creating a Desktop Pool or Application Pool, all members of the RDS Farm are selected. It is not possible to select a subset of Farm members.

VMware Tech Paper Best Practices For Published Applications And Desktops in VMware Horizon 7:

  • vSphere Best Practices – Hardware, Network Adapters, ESXi BIOS Settings, ESXi Power Management
  • Core Services Best Practices – Active Directory, DNS, DHCP, NTP, KMS, RDS Licensing
  • ESXi Host Sizing Best Practices
  • RDSH Configuration Best Practices – Optimization
  • Horizon 7 Best Practices – Instant Clones, Load Balancing
  • User Environment Management Best Practices – Horizon Smart Policies, Folder Redirection, User Profiles, Printers, Hardware Graphics Acceleration
  • App Volumes Best Practices – dedicated AppStacks
  • Antivirus Best Practices
  • Maintenance Operations Best Practices – scheduled reboots

RDS Farms – Instant Clones and Composer Linked Clones

Horizon 7.1 and newer offers two methods of creating RDS Farm linked clones:

  • Instant Clones
  • Composer Linked Clones

Instant Clones are the preferred method. Here is the process: Instant Clones for RDSH in VMware Horizon 7.1 YouTube video

  1. You select a snapshot from a master image.
  2. Horizon creates a template VM that boots from the master snapshot. After some prep, the template VM shuts down and creates a new snapshot.
  3. The template snapshot is copied to a Replica VM on every LUN (datastore) that will host RDS Farm VMs.
  4. For each datastore, Horizon creates a Parent VM on every host in the cluster. This parent VM is powered on and running at all times.
  5. The linked clones can finally be created by forking the parent VM to new linked clone VMs. Notes:
    1. Once the Parent VMs are created, creating/recreating linked clones is fast. But it takes time to create all of the Parent VMs.
    2. And the Parent VMs consume RAM on every host. If you have multiple datastores and/or multiple pools, then there are multiple Parent VMs per host, all of them consuming RAM.
  6. You can schedule a periodic reboot of the Instant Clones, which causes the Instant Clone machines to refresh (revert) from the parent VM.
  7. Instant Clones require Distributed vSwitch and Distributed Port Group with Static Binding and Fixed Allocation. Standard vSwitch is not supported. Multi VLAN and vGPU for Instant Clones in VMware Horizon 7.1 YouTube video.

The other RDS Linked Clone option is Horizon Composer. Here are some notes:

  • When Composer creates Linked Clones, Composer uses SysPrep with Customization Specifications. SysPrep is slow.
  • SysPrep is also used whenever the RDS farm is updated with a new master image snapshot.
  • No View Storage Accelerator.
  • No Rebalance.
  • No Refresh. The machines are persistent until you Recompose the farm.
    • The delta disks continue to grow until you Recompose the farm.
    • You can enable Space Reclamation to shrink the delta disks as files are deleted.

Customization Specification – Composer Linked Clones only

If you are using Instant Clones (7.1 and newer), then skip to creating the RDS farm. Customization Specifications are only needed for Composer Linked Clones.

  1. In vCenter, from the Home page, click Customization Specification Manager.
  2. Click the icon to create a new Customization Specification.
  3. In the Specify Properties page, give the spec a name and click Next.
  4. In the Set Registration Information page, enter your normal settings and click Next.
  5. In the Set Computer Name page, select Use the virtual machine name and click Next.
  6. In the Enter Windows License page, select Per seat and click Next.
  7. In the Set Administrator Password page, enter the local administrator password and click Next.
  8. In the Time Zone page, select the time zone and click Next.
  9. In the Run Once page, click Next.
  10. In the Configure Network page, leave it set to Use standard network settings. Horizon requires the VMs to be configured for DHCP. Click Next.
  11. In the Set Workgroup or Domain page, enter credentials that can join the machines to the domain, and click Next.
  12. In the Set Operating System Options page, leave the box checked, and click Next.
  13. In the Ready to complete page, click Finish.

Create an Automatic RDS Farm

If you upgrade vCenter to 6.7, then you must upgrade your ESXi hosts to 6.7 at the same time. Afterwards, take a new snapshot of the master image and perform a push operation. See Upgrade Instant-Clone Desktop Pools at VMware Docs.

Master Image Preparation

  1. Make sure your RDS master Agent has the VMware Horizon Instant Clone Agent feature, or the VMware Horizon View Composer Agent feature installed. You can install one or the other, but not both. Instant Clone Agent is the preferred option.
  2. Make sure your RDS master Agent is configured for DHCP.
  3. Computer Group Policy – Make sure the Master VM is in the same OU as the Linked Clones so the Master VM will get the computer-level GPO settings. Run gpupdate on the master after moving the VM to the correct OU. New Instant Clones do not immediately refresh group policy so the group policy settings must already be applied to the master VM. See VMware 2150495 Computer-based Global Policy Objects (GPOs) that require a reboot to take effect are not applied on instant clones.
  4. Shut down the master image.
  5. Edit the specs of the master VM to match the specs you want the linked clones to have.
  6. Take a snapshot of the master image.

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to create a new RDS Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. In Horizon Console, on the left, expand Inventory, and click Farms.
  2. On the right, click Add.
  3. In the Type page, select Automated Farm, and click Next.
  4. In the vCenter Server page, select Instant Clone, select the vCenter Server, and then click Next.
  5. In the Storage Optimization page, click Next.
  6. In the Identification and Settings page:
    1. Enter a name for the Farm. A VM folder with the same name will be created in vCenter.
    2. Note: There’s no place to set the Display Name here. You do that later when creating a Desktop Pool.
    3. Scroll down to the Farm Settings section.
    4. In the Identification and Settings page, in Horizon 7.3.1 and newer, if you set the Default display protocol to PCoIP, then HTML5 Blast won’t work unless Allow users to choose protocol is set to Yes. See VMware Communities Upgraded from 7.0.1 to 7.3.1, getting “You cannot access your applications or desktops”… error.
    5. Horizon 7.2 and newer support Pre-launch. If pre-launch is enabled on a published app, when the user logs into Horizon Client, an empty RDS Session is immediately established. When the user double clicks an icon, the program launches quickly since there’s already a pre-launched session. When the user closes Horizon Client, the pre-launch session is disconnected for the duration specified here. The minimum duration is 10 minutes.
    6. For Empty session timeout, set it to 1 minute. For When timeout occurs, set it to Log off. You usually want the session to end when users close all of their applications.
    7. For Log off disconnected sessions, specify a disconnect timer. This is in addition to the idle timer configured in Global Settings.
    8. To access the Pools/Farm from a web browser using HTML Blast, check the Enabled box next to Allow HTML Access.
    9. There’s a Allow Session Collaboration checkbox, which adds a VMware Horizon Collaboration icon in the system tray of the remote desktop, which lets you invite users to collaborate. See Session Collaboration for details.
    10. Max sessions per RDS Host will block connections if this number is exceeded.
  7. Click Next.
  8. In the Provisioning Settings page:
    1. Enter a Naming Pattern. Make sure the name includes {n:fixed=3} or something like that.
    2. In Farm Sizing, enter the number of machines to create.
  9. Click Next.
  10. In the vCenter Settings page, click Browse next to each option and make a selection. These are self-explanatory. Then click Next.
  11. Horizon Administrator 7.8 and newer let you configure Load Balancing Settings for the RDS Farm. You cannot yet configure these settings in Horizon Console. After the RDS Farm is created, you can use Horizon Administrator to edit these settings.
  12. In the Guest Customization page:
    1. Select an OU to place the new virtual machines. This should be an OU that is configured with group polices for the RDSH machines.
    2. Consider the Allow reuse of pre-existing computer accounts check box.
  13. Click Next.
  14. In the Ready to Complete page, click Submit.

To view the status of RDS Farm creation:

  1. Click the farm name.
  2. The bottom of the Summary tab shows you the State of the Publishing progress.

  3. You can watch the progress in vSphere Client. It goes through a couple longer tasks, including cloning the snapshot, and creating a digest file.
  4. Eventually the tab named RDS Hosts will show the new virtual machines.
  5. Once the RDS Hosts are created, you publish resources from them by either creating a Desktop Pool, or an Application Pool, or both.

Horizon Administrator

  1. In Horizon Administrator, on the left, expand Resources, and click Farms.
  2. On the right, click Add.
  3. In the Type page, select Automated Farm, and click Next.
  4. In the vCenter Server page, select Instant clones or View Composer linked clones depending on which agent you have installed on your RDS master Agent machine.
  5. Select the vCenter Server, and click Next.
  6. In the Identification and Settings page, enter a name for the Farm. A VM folder with the same name will be created in vCenter.
  7. In the Farm Settings section, set Default Display protocol to VMware Blast.
  8. In Horizon 7.3.1 and newer, if you set the Default display protocol to PCoIP, then HTML5 Blast won’t work unless Allow users to choose protocol is set to Yes. See VMware Communities Upgraded from 7.0.1 to 7.3.1, getting “You cannot access your applications or desktops”… error.
  9. Horizon 7.2 and newer support Pre-launch. If pre-launch is enabled on a published app, when the user logs into Horizon Client, an empty RDS Session is immediately established. When the user double clicks an icon, the program launches quickly since there’s already a pre-launched session. When the user closes Horizon Client, the pre-launch session is disconnected for the duration specified here. The minimum duration is 10 minutes.
  10. For Empty session timeout, set it to 1 minute. For When timeout occurs, set it to Log off. You usually want the session to end when users close all of their applications.
  11. For Log off disconnected sessions, specify a disconnect timer. This is in addition to the idle timer configured in View Configuration > Global Settings.
  12. To access the Pools/Farm from a web browser using HTML Blast, check the Enabled box next to Allow HTML Access.
  13. Horizon 7.4 adds a new Allow Session Collaboration checkbox, which adds a VMware Horizon Collaboration icon in the system tray of the remote desktop, which lets you invite users to collaborate. See Session Collaboration for details.
  14. Click Next.
  15. Horizon 7.8 and later have a Load Balancing Settings page that lets you configure the load evaluator rules without having to modify any script. In general, use stable, non-fluctuating rules like session count and Memory usage. Note that CPU usage tends to wildly fluctuate and can prematurely disable connections to an RDS Host. Click Next when done configuring rules.
  16. In the Provisioning Settings page, enter a naming pattern. Make sure the name includes {n:fixed=3} or something like that.
  17. Enter the number of machines to create, and click Next.
  18. In the Storage Optimization page, click Next.
  19. In the vCenter Settings page, click Browse next to each option, and make a selection.
  20. When selecting a datastore, Instant Clones sets the Storage Overcommit to Unbounded automatically. For Composer Linked Clones, set it to Unbounded. Click OK, and then click Next.

  21. If Composer, in the Advanced Storage Options page, decide if you want space reclamation or not. Space reclamation does reduce disk space but increases IOPS while the operation is occurring. If space reclamation is enabled, also configure a Blackout window so the increased IOPS does not affect production usage. Scroll down.
  22. If you scroll down, you’ll see an option for Transparent Page Sharing. By default it is disabled. You can enable it by setting it to Global. This should reduce some memory consumption. Click Next.
  23. For both Instant Clones and Composer, in the Guest Customization page, select an OU.
  24. Consider the Allow reuse of pre-existing computer accounts check box.
  25. For Composer Linked Clones, select a customization specification, and click Next.
  26. In the Ready to Complete page, click Finish.
  27. If you double-click the farm, on the RDS Hosts tab, you can see the progress of the farm creation operation.
  28. Horizon 7.7 and newer show you the status of RDS Drain Mode, which can be enabled on the RDS Host by running change logon /drain.
  29. If Composer, since RDS Farms use SysPrep, it will take some time before they become available.
  30. Once the RDS Hosts are created, you publish resources from them by either creating a Desktop Pool, or an Application Pool, or both.

Add more RDS Hosts to an Automatic Farm – Instant Clones and Composer Linked Clones

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to add RDS hosts to an existing RDS Automatic Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. On the left, expand Inventory, and click Farms.
  2. On the right, select an existing Automated Farm, and click Edit.
  3. Switch to the Provisioning Settings tab and change the Max number of machines. Then click OK.
  4. If the parent VM is already running on destination host/datastore, then it should only take a minute to add the new VM.
  5. The RDS Hosts tab of the RDS farm shows the new RDS host(s).

Horizon Administrator

  1. On the left, expand Resources, and click Farms.
  2. On the right, highlight an existing Automated Farm, and click Edit.
  3. Switch to the Provisioning Settings tab, and change the Max number of machines. Then click OK.
  4. For Instant Clones, if the parent VM is already running on destination host/datastore, then it should only take a minute to add the new VM.
  5. Composer Linked Clones use SysPrep, which takes a while to add the virtual machines. The new VMs reboot several times during the provisioning and customization process.
  6. The farm now has new RDS host(s).

Update an Automatic Farm – Instant Clones and Composer Linked Clones

Master Image Preparation

  1. Power on the master session host.
  2. Login and make changes.
  3. After making your changes, shut down the master session host.
  4. Right-click the virtual machine, and take snapshot. You must create a new snapshot.
  5. Name the snapshot, and click OK.
  6. You’ll need to periodically delete the older snapshots. Right-click the master VM, and click Manage Snapshots.
  7. Delete one or more of the snapshots.

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to add RDS hosts to an existing RDS Automatic Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. In Horizon Console, go to Inventory > Farms.
  2. Click the farm name’s link.
  3. On the Summary tab, click Maintain, and then click Schedule.
  4. One option is to schedule Recurring reboots, which revert the RDS Hosts to a clean state.
  5. To push out an updated Master Image, change the Schedule to Immediate.
  6. Select Start Now, or select Start at a future date/time. Click Next.
  7. In the Image page, uncheck the box next to Use current parent VM image, select the new snapshot, and click Next.
  8. In the Scheduling page, decide if the reboot should wait for users to logoff, decide when to apply this new image, and then click Next.
  9. In the Ready to Complete page, click Finish.
  10. The RDS Farm’s Summary tab (scroll down) shows you that it’s publishing the new image.

  11. On the RDS Hosts tab, you can check on the status of the maintenance task.
  12. It will take a few minutes to create a new parent VM. Once the parent VM is created, the Instant Clones are quickly deleted and recreated.

Horizon Administrator

  1. In View Administrator, go to Resources > Farms.
  2. Double-click a farm name.
  3. For Composer Linked Clones, before beginning the Maintenance/Recompose operation, edit the Farm, and on the Provisioning Settings tab, consider specifying a minimum number of ready machines during Instant Clone (or View Composer) maintenance operations. If you leave this set to 0, then all machines will be in maintenance mode, and nobody can connect until Maintenance/Recompose is complete. Instant Clones are recreated quickly enough that this setting might not be needed.
  4. If Instant Clones, on the Summary tab, click Maintenance, and then click Schedule.
  5. If Composer Linked Clones, on the Summary tab, click Recompose.
  6. Instant Clones lets you either schedule recurring reboots, or you can change the Schedule to Immediate to update the machines now (or one time in the future). Click Next.
  7. In the Image page, uncheck the box next to Use current parent VM image, select the new snapshot, and click Next.

  8. In the Scheduling page, decide if the reboot should wait for users to logoff, decide when to apply this new image, and then click Next.

  9. In the Ready to Complete page, click Finish.

  10. On the RDS Hosts tab, you can check on the status of the maintenance/recompose task.
  11. Horizon 7.7 and newer show you the status of RDS Drain Mode, which can be enabled on the RDS Host by running change logon /drain.
  12. If Instant Clones, it will take a few minutes to create a new parent VM. Once the parent VM is created, the Instant Clones are quickly deleted and recreated.
  13. If Composer Linked Clones, Composer uses SysPrep, which means this will take a while.

Instant Clones Maintenance

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to perform Instant Clone Maintenance. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. If you click an Instant Clones RDS Farm name…
  2. And switch to the RDS Hosts tab, you can select a machine, and then click Recover, this causes the VM to be deleted and recreated, thus reverting to the master image snapshot.

  3. On the Summary tab of the RDS Farm, you can click Maintain > Schedule to schedule a reboot of every VM in the RDS Farm. Rebooting causes the VMs to revert to the master image snapshot.
  4. Specify how often you want the reboot to occur, and then click Next.
  5. In the Image page, you don’t have to change the snapshot. Click Next.
  6. Decide what to do about logged on users, and click Next.
  7. In the Ready to Complete page, click Finish.
  8. If you click the Maintain menu again, you can click Reschedule to change when the reboots are scheduled. Or click Cancel.
  9. If you click Schedule again, you can only schedule a one-time update, typically to replace the master image snapshot used by the RDS Farm.
  10. In Horizon 7.1 and newer, ESXi hosts running Instant Clones can be placed into maintenance mode without any special instructions.

Horizon Administrator

  1. If you double-click an RDS Farm that contains Instant Clones, and switch to the RDS Hosts tab, you can right-click a machine, and click Recover. This causes the VM to be deleted and recreated, thus reverting to the master image snapshot.

  2. On the Summary tab of the RDS Farm, you can click Maintenance > Schedule to schedule a reboot of every VM in the RDS Farm. Rebooting cases the VMs to revert to the master image snapshot.
  3. Specify how often you want the reboot to occur, and then click Next.
  4. In the Image page, you don’t have to change the snapshot. Click Next.
  5. Decide what to do about logged on users, and click Next.
  6. In the Ready to Complete page, click Finish.
  7. If you click the Maintenance menu again, you can click Reschedule to change when the reboots are scheduled. Or click Cancel.
  8. If you click Schedule again, you can only schedule a one-time update, typically to replace the master image snapshot used by the RDS Farm.
  9. In Horizon 7.1 and newer, ESXi hosts running Instant Clones can be placed into maintenance mode without any special instructions.

RDS Farms – Manual

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to publish a manual RDS Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. Make sure neither the View Composer Agent nor the Instant Clone Agent is installed on your RDS servers, and make sure you saw the screen to register the Agent with a Horizon Connection Server.
  2. In Horizon Console, go to Settings >Registered Machines and make sure your manually-built RDS Host is registered and listed on the RDS Hosts tab.
  3. On the left, expand Inventory, and click Farms.
  4. On the right, click Add.
  5. In the Type page, select Manual Farm, and click Next.
  6. In the Identification and Settings page, enter a name for the Farm.
  7. Scroll down to the Farm Settings section.

    1. There is a pre-launch option. If pre-launch is enabled on a published app, when the user logs into Horizon Client, an empty RDS Session is immediately established. When the user double clicks an icon, the program launches quickly since there’s already a pre-launched session. When the user closes Horizon Client, the pre-launch session is disconnected for the duration specified here. The minimum duration is 10 minutes.
    2. For Empty session timeout, set it to 1 minute. For When timeout occurs, set it to Log off. You usually want the session to end when users close all of their applications.
    3. For Log off disconnect sessions, specify a disconnect timer. This is in addition to the idle timer configured in View Configuration > Global Settings.
    4. Check the Enabled box next to Allow HTML Access.
    5. There is an Allow Session Collaboration checkbox, which adds a VMware Horizon Collaboration icon in the system tray of the remote desktop, which lets you invite users to collaborate. See Session Collaboration for details.
  8. Click Next.
  9. Horizon Administrator 7.8 and newer let you configure Load Balancing Settings for the RDS Farm. You cannot yet configure these settings in Horizon Console. After the RDS Farm is created, you can use Horizon Administrator to edit these settings.
  10. In the Select RDS Hosts, select one or more identical Remote Desktop Session Hosts. Click Next.
  11. In the Ready to Complete page, click Submit.
  12. If you click the farm name…
  13. On the RDS Hosts tab, you can click Add to add more registered RDS Hosts. Make sure every Host in the RDS Farm is identical.

Horizon Administrator

To create a manual RDS Farm (no linked clones), do the following:

  1. Make sure neither the View Composer Agent nor the Instant Clone Agent is installed on your RDS servers, and make sure you saw the screen to register the Agent with a Horizon Connection Server.
  2. In View Administrator, expand View Configuration and click Registered Machines. Make sure your manually-built RDS Host is registered and listed on the RDS Hosts tab.

  3. In View Administrator, on the left, expand Resources and click Farms.
  4. On the right, click Add.
  5. In the Type page, select Manual Farm and click Next.
  6. In the Identification and Settings page, enter a name for the Farm.
  7. In the Farm Settings section, set the Default display protocol to VMware Blast.
  8. Horizon 7.2 adds pre-launch. If pre-launch is enabled on a published app, when the user logs into Horizon Client, an empty RDS Session is immediately established. When the user double clicks an icon, the program launches quickly since there’s already a pre-launched session. When the user closes Horizon Client, the pre-launch session is disconnected for the duration specified here. The minimum duration is 10 minutes.
  9. For Empty session timeout, set it to 1 minute. For When timeout occurs, set it to Log off. You usually want the session to end when users close all of their applications.
  10. For Log off disconnect sessions, specify a disconnect timer. This is in addition to the idle timer configured in View Configuration > Global Settings.
  11. Check the Enabled box next to Allow HTML Access.
  12. Horizon 7.4 adds a new Allow Session Collaboration checkbox, which adds a VMware Horizon Collaboration icon in the system tray of the remote desktop, which lets you invite users to collaborate. See Session Collaboration for details.
  13. Click Next.
  14. Horizon 7.8 and later have a Load Balancing Settings page that lets you configure the load evaluator rules without having to modify any script. In general, use stable, non-fluctuating rules like session count and Memory usage. Note that CPU usage tends to wildly fluctuate and can prematurely disable connections to an RDS Host. Click Next when done configuring rules.
  15. In the Select RDS Hosts, select one or more identical Remote Desktop Session Hosts. Click Next.
  16. In the Ready to Complete page, click Finish.
  17. If you double-click the farm name…
  18. On the RDS Hosts tab, you can click Add to add more registered RDS Hosts. Make sure every Host in the RDS Farm is identical.

Publish Desktop

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to publish a desktop from an RDS Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. In Horizon Console, on the left, expand Inventory, and click Desktops.
  2. On the right, click Add.
  3. In the Type page, select RDS desktop Pool, and click Next.
  4. In the Desktop Pool ID page, enter an ID and name. They can be different. The ID cannot contain spaces. Click Next.
  5. In the Desktop Pool Settings page:
    1. You can select a Category Folder where the published icon will be placed on the client’s Start Menu. This feature requires Horizon Client 4.6 and newer. See Create Shortcuts for a Desktop Pool at VMware Docs.
    2. You can type in a new category folder name, or select an existing one. Also select Shortcut Locations.
    3. Horizon 7.3 and newer have a checkbox named Client Restrictions. When this is enabled, you can add Client Computer Accounts to an AD Group and entitle the published desktop to that computer AD group. The published desktop can then only be accessed from the client computers in the AD group.
    4. Notes on Client Restrictions:
      • Windows clients only. If this feature is enabled, then all non-Windows clients are blocked.
      • Horizon Client 4.6 and newer. All other versions are blocked.
      • In Horizon 7.8 and newer, the Active Directory security group can contain client computers that belong to any AD Organizational Units (OUs) or default Computer container. For older versions of Horizon, the computers must be in the Computer container.
      • See Implementing Client Restrictions for Desktop and Application Pools at VMware Docs.
  6. Click Next.
  7. In the Select an RDS farm page, select a farm, and click Next.
  8. In the Ready to Complete page, check the box next to Entitle users after this wizard finishes, and click Submit.
  9. In the Entitlements window, click Add.
  10. Browse to an Active Directory group, and click OK.
  11. Then click Close.
  12. If you go to Inventory > Farms, click your farm name, there will be a RDS Pools tab, where you can see which Desktop Pool is associated with this farm. An RDS Farm can only belong to one Desktop Pool.

Horizon Administrator

To publish a desktop from an RDS farm, do the following:

  1. In View Administrator, on the left, expand Catalog, and click Desktop Pools.
  2. On the right, click Add.
  3. In the Type page, select RDS Desktop Pool, and click Next.
  4. In the Desktop Pool Identification page, enter an ID and name. They can be different. Click Next.
  5. In the Desktop Pool Settings page:
    1. Horizon 7.3 and newer let you select a Category Folder where the published icon will be placed on the client’s Start Menu. This feature requires Horizon Client 4.6 and newer. See Create Shortcuts for a Desktop Pool at VMware Docs.
    2. Horizon 7.5 and newer let you put the shortcut on the endpoint’s desktop.
    3. Horizon 7.3 and newer have a checkbox named Client Restrictions. When this is enabled, you can add Client Computer Accounts to an AD Group and entitle the published desktop to that computer AD group. The published desktop can then only be accessed from the client computers in the AD group. Notes:
      • Windows clients only. If the this feature is enabled, then all non-Windows clients are blocked.
      • Horizon Client 4.6 and newer. All other versions are blocked.
      • In Horizon 7.8 and newer, the Active Directory security group can contain client computers that belong to any AD Organizational Units (OUs) or default Computer container. For older versions of Horizon, the computers must be in the Computer container.
      • See Implementing Client Restrictions for Desktop and Application Pools at VMware Docs.
    4. Horizon 7.7 and newer have an option to Allow user to initiate separate sessions from different client devices.
  6. Click Next.
  7. In the Select an RDS farm page, select a farm, and click Next.
  8. In the Ready to Complete page, check the box next to Entitle users after this wizard finishes, and click Finish.
  9. In the Entitlements window, click Add.
  10. Browse to an Active Directory group, and click OK.
  11. Then click Close.
  12. If you go to Resources > Farms, double-click your farm, there will be a RDS Pools tab, where you can see which Desktop Pool is associated with this farm.

Publish Applications

Horizon Console

This section uses Horizon Console (https://<View_Connection_Server>/newadmin) to publish a desktop from an RDS Farm. If you prefer Horizon Administrator, or if your Horizon isn’t 7.5 or newer, then skip to the next section.

  1. In Horizon Console, on the left, expand Inventory, and click Applications.
  2. On the right, click Add, and then click Add from Installed Applications.
  3. In the Select Applications page, select a RDS Farm.
  4. The purpose of this wizard is to publish and entitle applications from an RDS Farm. The entitlements will apply to all of the applications you select on this page. If you want different entitlements for different applications, run this wizard multiple times and select different applications. Once the applications are published, you can change their entitlements individually.
  5. Select one or more applications. Notice that File Explorer is not one of the options. You can manually add that application later.
  6. There are additional options at the bottom of the Select Applications page. Notice the Entitle users box is checked by default.

    1. There’s a Pre-launch option for published applications. You can optionally enable it on at least one application, and then entitle the pre-launch application to the users that need the Pre-launch feature.
    2. You can assign tags for Connection Server restrictions, which lets you control visibility of icons for internal users vs external users.
    3. You can select a Category Folder where the published icon will be placed on the client’s Start Menu and/or Desktop. This feature requires Horizon Client 4.6 and newer. See Create Shortcuts for a Desktop Pool at VMware Docs.
    4. There’s a checkbox named Client Restrictions. When this is enabled, you can add Client Computer Accounts to an AD Group and entitle the published application to that computer AD group. The published application can then only be accessed from the client computers in the AD group. Notes on Client Restriction:
      • Windows clients only. If this feature is enabled, then all non-Windows clients are blocked.
      • Horizon Client 4.6 and newer. All other versions are blocked.
      • In Horizon 7.8 and newer, the Active Directory security group can contain client computers that belong to any AD Organizational Units (OUs) or default Computer container. For older versions of Horizon, the computers must be in the Computer container.
      • See Implementing Client Restrictions for Desktop and Application Pools at VMware Docs.
  7. Click Next when done.
  8. The Edit Applications page lets you rename the published icons. Click Submit when done.
  9. Click Add to select a group that can see these icons. This is the normal entitlement process.

    1. There is an option for Unauthenticated users, which is detailed at Providing Unauthenticated Access for Published Applications at VMware Docs.
    2. Before you can configure Uauthenticated Access on published applications, you must add a Domain Account that will be used for anonymous access at Users and Groups > Unauthenticated Access.
    3. Then go to Settings > Servers and Edit a Connection Server.
    4. On the Authentication tab…
    5. …enable Unauthenticated Access, and select the Default unauthenticated access user account.
    6. Horizon 7.6 and newer have a Login Deceleration Level option, which requires Horizon Client 4.9. See Configure Login Deceleration for Unauthenticated Access to Published Applications at VMware Docs.
    7. Back in your entitlement, you select Unauthenticated Users, and entitle it to the Domain User that is your anonymous account.
  10. You can run the Add Application Pool wizard again to publish more applications with different entitlements.
  11. If you click the name one of the application pools…
  12. …on the Entitlements tab, you can change the entitlements

In Horizon Console 7.11 and newer, if you click a Farm name, you can view Sessions connected to that Farm and the published application each user is running. Monitor > Sessions does not show published application information, but RDS Farm > Sessions does.

  1. In Horizon Console, on the left, expand Inventory and click Farms.
  2. On the the right, click the link for one of the farms.
  3. Switch to the tab named Sessions.
  4. As you scroll down the table you’ll see sessions with Type = Application.
  5. If you scroll to the right, you’ll see the Application Name in the far-right column.

Icon for Published Application

  1. In Horizon 7.9 and newer, you can select an Application Pool, then open the Application Icon menu and click Associate Application Icon.

  2. In older Horizon, use PowerShell to change the icons. See the YouTube video Customizing Horizon RDSH Application Icons.

Show application pools associated with RDS Farm:

  1. If you go to Inventory > Farms, click your farm name…
  2. …and switch to the RDS Pools tab, you can see which Application Pools (published applications) are associated with this farm. You can click the link for a pool to be taken to the pool’s property pages.

Instead of publishing an existing application from the Start Menu, you can add an application manually:

  1. Go to Inventory > Applications, click Add, and select Add Manually.
  2. File Explorer is an application that has to be added manually.

  3. When publishing Explorer, add the /separate switch. This prevents the full desktop from appearing when launching published Explorer through HTML Blast (Source = RDS Desktop being presented when opening an app at VMware Communities)

Horizon Administrator

  1. In View Administrator, on the left, expand Catalog, and click Application Pools.
  2. On the right, click Add.
  3. The purpose of this wizard is to publish applications from an RDS Farm, and entitle them. The entitlements will apply to all of the applications you select on this page. If you want different entitlements for different applications, run this wizard multiple times, and select different applications. Once the applications are published, you can change their entitlements individually.
  4. At the top of the window, select an RDS farm.
  5. Select one or more applications.
  6. There are additional options at the bottom of the window.

    1. Horizon 7.2 and newer have a Pre-launch option for published applications. Enable it on at least one application, and entitle the application to the users that need the Pre-launch feature.
    2. Horizon 7.7 and newer have an option for Multi-session Mode, which lets users launch multiple sessions from different clients.
    3. Horizon 7.2 and newer have the ability to assign tags (Connection Server restrictions) to RDS Desktop Pools.
    4. Horizon 7.3 and newer let you select a Category Folder where the published icon will be placed on the client’s Start Menu. This applies to Horizon Client 4.6 and newer. See Create Shortcuts for a Desktop Pool at VMware Docs.
    5. Horizon 7.5 and newer lets you put the shortcut on the endpoint’s desktop.
    6. Horizon 7.3 adds a checkbox named Client Restrictions. When this is enabled, you can add Client Computer Accounts to an AD Group and entitle the published application to that computer AD group. The published application can then only be accessed from the client computers in the AD group. Notes:
      • Windows clients only. If the this feature is enabled, then all non-Windows clients are blocked.
      • Horizon Client 4.6 and newer. All other versions are blocked.
      • In Horizon 7.8 and newer, the Active Directory security group can contain client computers that belong to any AD Organizational Units (OUs) or default Computer container. For older versions of Horizon, the computers must be in the Computer container.
      • See Implementing Client Restrictions for Desktop and Application Pools at VMware Docs.
  7. Click Next when done.
  8. Or you can add an application manually by changing the radio button to Add application pool manually. Notice that Explorer is not one of the listed applications, so Explorer will need to be added manually.

    • When publishing Explorer, add the /separate switch. This prevents the full desktop from appearing when launching published Explorer through HTML Blast (Source = RDS Desktop being presented when opening an app at VMware Communities)
  9. Notice the Entitle users box is checked by default. All of the applications in this list will receive the same entitlements. Click Finish.
  10. Then click Add to select a group that can see these icons.
  11. Horizon 7.1 and newer supports Unauthenticated users, which is detailed at Providing Unauthenticated Access for Published Applications at VMware Docs. Click OK when done.




  12. You can run the wizard again to publish more applications with different entitlements.
  13. If you double-click one of the application pools, on the Entitlements tab, you can change the entitlements.
  14. In Horizon 7.1 and newer, icons for the published apps can be changed using PowerShell. See the YouTube video Customizing Horizon RDSH Application Icons.
  15. If you go to Resources > Farms, double-click your farm, and switch to the RDS Pools tab, you can see which Application Pools (published applications) are associated with this farm. Notice you can’t really do anything from here.

Anti-affinity

You can configure Horizon to restrict the number of instances of an application running on a particular RDS host. Here are some limitations:

  • If the user already has a session then anti-affinity is ignored.
  • If the application is launched from within an RDS Desktop then anti-affinity is ignored.
  • Not recommended for Horizon Mobile clients.

See Configure an Anti-Affinity Rule for an Application Pool at VMware Docs.

Do the following to configure Anti-Affinity in Horizon Console or Horizon Administrator:

  1. On the left, go to Inventory > Applications or go to Catalog > Application Pools.
  2. On the right, edit an existing application pool.

  3. In the Anti-Affinity Patterns field, enter process names to match. Wildcards are supported. Each match is counted.
  4. In the Anti-Affinity Count field, enter the maximum number of process name matches that can run on a single RDS Host.

Related Pages

27 thoughts on “VMware Horizon 7 – RDS Farms/Pools”

  1. Hi Carl,

    Where can we check the periodic schedules that are configured for an RDS Farm?

    We use Horizon 8 2209 and we can schedule recurring maintenance but don’t see the configured schedule.

    Any place where we can check it?

    Thank you again Carl.

    1. The Summary tab of a Farm has a Farm Maintenance section. You can also click Maintain > Reschedule.

  2. Hi Carl, I would like to point out what appears to be a mistake that cost me an embarrassing call to VMware support! Under Creating Manual Farms, point 2, it says to check the Inventory – Machines – RDS hosts to make sure your machine shows up after registering. My machine did not show up there, and I eventually opened the case with VMware support where it was pointed out to me that the newly registered machines show up under Settings – Registered machines, not in Inventory, until you create a Farm. We are on 7.11, so I don’t know if this changed from the time this documentation was created or not, but I thought you should know.

    1. Thanks for pointing that out. I suspect the other location is only for machines that are added to an RDS Farm whereas Settings shows all registered machines whether in a farm or not.

    2. By the way I am using the HTML5 console, not the old Administrator. But in my version of the Console which is the 7.11 version, the newly registered machines go into the Settings – Registered machines, not directly into Inventory – Machines. So it is somewhat similar to the old Administrator where the newly registered machines went into Configuration – Registered machines.

  3. This is a great guide, I’m having an issue to where the published apps are not showing in the horizon client or via the web. Any assistance is greatly appreciated.

  4. Hi Carl,
    Excellent guide – thank you. We have an issue where, if a pre-existing ‘prelaunch’ session does not exist on the RDS host, then it tries to create a new one, this newly created session expires almost immediately (from the horizon logs, we can see it expires consistently after 1 minute) and user gets a black screen. This happens consistently when connecting externally, but not when we connect internally.

    Its very weird – but I can (rarely) get a successful launch of the app externally. The farm settings are correct (prelaunch timeout is 999999 minutes, and empty session timeout is 10 mins. We’ve also tried removing pre-launch entirely from app and farm config – but still the immediate expiration of the session persists. Again, this all works when connecting internally.

    Any ideas at all?!

    Thanks

    1. As below – the agent accepts the session, but then the session immediately expires 1 minute later.
      04/09/2020, 1:56 PM Agent Warning: The pending session on machine AS12UATGoal101 for user XXX has expired
      04/09/2020, 1:55 PM Agent The agent running on machine AS12UATGoal101 has accepted an allocated session for user UKDN\s008816

  5. Hello Carl. In application pools we have published notepad application, when de user execute notepad, the notepad is opened ,in this moment , if you touch on the right, appear the desktop server rdsh, settings, poweroff, etc, etc ¿any solution for this problem?. thanks a lot !!

  6. Hi Carl, During installation of Horizon Agent on RDS Server 2016 Im receiving error message.
    “Error 2739. Could not access JavaScript run time for custom action”

    Have you troubleshoot this issue before?

    Thank’s

  7. Would you know or is there something I need to do while I install view agent on RDSH server?
    facing weird problem. I have published the application but do not see any of the apps.

  8. I am trying to use browsers like Firefox, chrome and internet explorer through RDSH but the first time when I open any of the 3 apps it takes me to login to the RDSH servers and after successful login it closes the server login and opens browser window. Anyone knows how to fix this behavior ? Also, I am trying to use a default homepage when browser opens, basically like a kiosk. I will appreciate any recommendations on how to accomplish it seamlessly. Thanks.

    1. You need to make sure SSO is configured on the Web Access server and Connection Broker(s) as well as ensure the applicable Group Policies are applied to the workstations attempting to connect.

  9. Hello Carl,

    When and app is launched from citrix we dont see complete user session login process to desktop but incase of horizon view user will see the complete user session login process. Is there any way to hide it?

    1. When I launch an app, I don’t see anything until the app appears. Maybe a group policy setting or custom registry value is interfering?

      1. Thanks Carl for your reply.

        When I launch the application for the first time I see the server login message followed by connection server preparing the desktop/application.. ”

        Following launch of the same application wont show the server login message.

        Unable to relate to any group policy too , may be I need to open a case with VMware

        1. We had similar issue in our environment. We found that a logon banner registry key was interfering. After fixing the value of one of the registry key, the app was launching perfectly fine similar to Citrix published application.

          ( On Windows 2008 R2 OS )

          HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System

          Before the issue:
          • Legalnoticecaption = “”
          • Legalnoticetext=””

          Fix : ( we had to blank out the value)

          • Legalnoticecaption = “”
          • Legalnoticetext=””

          Please test on a server and if it works then probably you may need to permanently change via GPO.

          1. Sorry I missed to mention the value for the Legalnoticecaption key

            Before the issue:
            • Legalnoticecaption = “Press OK to continue”
            • Legalnoticetext=””

  10. Hello

    First of all ,thank you for sharing !
    We are deploying an Automatic Farm, allowing HTML access with Blast
    At the begining we had certificates alert regarding autosigned blast certificates.
    We now used a wildcard certificate, and have installed it on the RDS Host with success following Vmware KB.
    But composed RDS Host seems to lost certificate private key with the sysprep.
    Have you ever encountered this problem ?

    Thanks in advance

    1. This is a common problem with pooled machines.

      One option is to create a computer startup script that imports the wildcard, sets the registry key, and restarts the Blast service.

Leave a Reply

Your email address will not be published. Required fields are marked *