Skip to content

Fresh Installation

The HyWorks Desktop Agent uses the HyWorks VM Scale Booster to send status updates and events. The latest HyWorks VM Scale Booster releases also support pushing the HyWorks Session Host Server and the Monitoring Service status/system load information. This helps in getting faster updates and reduces polling overhead on the controller.

Installation of the HyWorks VM Scale Booster

Prerequisites

The HyWorks VM Scale Booster can be installed either on the controller server or any other Windows machine that fulfills the VM Scale Booster Prerequisites.

HyWorks VM Scale Booster Installation

Download the latest HyWorks VM Scale Booster for Windows and follow the steps to install:

  1. Double-click on the HyWorks VM Scale Booster Installer [HyWorksVMScaleBooster_Net472.exe].

  2. In the Accops HyWorks VM Scale Booster wizard, click Next to proceed.

  3. On the Choose Components page, the HyWorks VM Scale Booster will be selected by default. Click Next.

  4. Click I Agree to accept the License Agreement.

  5. Controller Details:

    1. Management Node 1 and Port: Enter the IP address and port number details of the HyWorks controller. It can not be empty.

    2. Management Node 2 and Port: Enter the IP address and port number details of the secondary HyWorks controller. It can be empty as it is optional.

      • The installer will check for the reachability of both controllers and display a message box only if one of the controllers is unreachable.

      • Unreachable controllers can also be selected.

  6. On the MQ Configuration page:

    • Enter the IP address of the host where the RabbitMQ is installed for Consumer Hostname(s). The Port, Username, Password, and the check box to Enable SSL.

    • Click Install to proceed.

    Important

    Provide both the MQ server host addresses for high availability.

  7. The installation process will start. Once complete, click Finish to close the Installation wizard.

  8. Check the services section to verify whether the Accops HyWorks VM Scale Booster Service is installed and running.

  9. Run the ConfigureRabbitMQ script at the end to configure RabbitMQ and follow the steps mentioned in the script.

Enable VM Scale Booster on the Controller

Controller in Advance Settings

The controller uses the following settings for MQ communication, and it shares these settings with the DVM agent.

If there are any changes to these settings, the controller sends them to the DVM agent during the heartbeat call.

  • Whenever any MQ settings that are connected to the consumer or utilized by the consumer are modified, the consumer will be restarted.

  • The controller and DVM tool utilize this particular setting, so the application will automatically restore the consumer mentioned below:

    • Notification consumer in the DVM tool

    • HA notifier consumer in the RMS service

Advance settings
  • Consume from MQ Server(s): Enter comma-separated hostnames/IPs of the MQ servers (from where the messages will be picked). In a non-clustered environment, specify at least two values.

    • List of comma-separated hostnames/IP addresses of the MQ server that are configured in the HA deployment that will be available to receive the messages for processing. E.g., Hostnames/IP addresses of the MQ server are installed on the primary and secondary servers. The application will listen on both servers, and the message will be delivered to the application from both of the servers.

    Note

    Consumers should point to both MQ servers individually, even if a load balancer is available, as message replication is not supported.

  • Publish to MQ Server(s): Enter comma-separated hostnames/IPs of the MQ servers (where messages will be sent). In a clustered environment, specify at least two. If a load balancer is present, then the IP address of the load balancer is used.

    • If the load balancer is not available in deployment: The list of comma-separated hostnames or IP addresses of MQ servers that are configured in HA deployment, which are available to publish the message that will be delivered to the respective consumer. E.g., Hostnames or IP addresses of the MQ server are installed on the primary and secondary servers. The message will be sent to only a single server that is randomly picked and able to send the message on the first successful server. Consumers are already listening to both of the servers.

    • If the load balancer is available in deployment: The hostname or IP address of the load balancer will publish the message on one of the MQ servers.

  • MQ Server Port: The default value of this port is 5672 for non-SSL and 5671 for SSL.

    • Set the Use MQ SSL flag accordingly.

    • This port should be the same for all the configured MQ publisher and consumer servers.

  • Use MQ SSL: Set the value as True if the SSL is needed else if not for the RabbitMQ set the value as False.

    • The MQ server should be configured for SSL communication, to set to True.

    • Refer to the Advance configuration.

    • This SSL setting should be identical for all the configured MQ publisher and consumer servers.

  • MQ Username: Enter the MQ Username. The default value is accopsmqadmin. This MQ username should be identical for all the configured MQ publisher and consumer servers.

  • MQ Password: Enter the MQ Password in an encrypted format. The default value is guest. This MQ password should be identical for all the configured MQ publisher and consumer servers.

  • Enable notification listener in DVM tool: The DVM agent will listen to scheduled action notifications (default: False). To enable notifications, set the value to True. The DVM agent will receive and process notification messages, and display notifications to the logged-in user on the virtual machine when a supported action is performed using schedules.

  • MQ Connection Settings: These are a few other MQ connection settings in a JSON string.

    These are the default connection settings in the JSON string. Changing these settings is not recommended without confirmation from the Dev team.

  • Desktop poll mode: The two desktop poll modes are as follows:

    1. Normal Mode: The default value is set to 1, which means the controller will poll agents for the status.

    2. Hybrid Mode: The DVM tool will send events and heartbeat to the MQ if the desktop poll mode is set to 2 (Hybrid Mode). The VM Scale Booster must be operational to process the events sent by the DVM.

  • VM Scale Booster queue hostname: The default value is set as localhost. This will only be used in older DVM agents (older than 3.4.0.661 on Windows and older than 3.4.0.127 on Linux).

  • This setting is deprecated and not used in the latest version of the DVM tool after 3.4.0.661 - Windows and older 3.4.0.127 - Linux.

  • VM scale booster queue name: It specifies the name of the queue used for managing the heartbeat signals. The default value is set as edc.dvm.heartbeat-queue.

  • VM Scale Booster queue heartbeat interval (in sec): It determines how frequently a heartbeat signal is sent to monitor the status and health of virtual machines or queues. The default value is set as 120 sec.

VM Scale Booster in appsettings.json file

During VM Scale Booster installation, all the required configurations are captured. These configurations are saved in appsettings.json file and one can organize the settings according to the parameters listed. These settings will control how the VM Scale Booster interacts with RabbitMQ, including connection parameters and message handling configurations.

  • ConsumerHostname: The hostname or IP address of the RabbitMQ server. E.g.: localhost or rabbitmq.example.com

  • Port: The port number on which RabbitMQ or the message broker is listening. E.g.: 5672

  • Username: The username used for authentication with the message broker. E.g.: guest

  • Password: The password associated with the username. E.g.: guest

  • SslEnabled: Indicates whether SSL/TLS is enabled for secure communication. E.g., True if SSL/TLS is enabled and False if not enabled

  • Queue: The name of the queue to which messages are sent or from which they are consumed. E.g., scale.boost.queue

  • Exchange: The name of the exchange used for routing messages. E.g., scale.boost.exchange

  • TimestampType: The type of timestamp to use for messages or events. This could be UTC or Local.

  • ControllerHeartbeatTimeout: The timeout period (in seconds) for the heartbeat signal used to monitor the controller’s status. E.g.: 300 sec (5 mins)

  • MessageTTL: The time-to-live (TTL) for messages in the queue, in milliseconds. This determines how long the messages will remain in the queue before being discarded. E.g.: 3600000 (1 hr)

  • ConnectionRetryIntervalInMilliseconds: The interval (in milliseconds) between retry attempts to connect to the broker if the initial connection fails. E.g.: 5000 (5 sec)

  • ConsumerMaxConnectAttempts: The maximum number of attempts to connect to the broker before giving up. E.g.: 5

  • LogConsumerReconnectAttemptAfterNCount: The number of connection attempts after which to log a reconnect attempt. E.g.: 3

Configuration on the SHD

  1. Install the latest Session Host Installer setup that has the built-in DVM Tools-Lite. The Session Host Server and the Monitoring Services will use the DVM Tools to push the service and the load status.

  2. On the Session Host Server, verify that the registry entry EnableShdMode flag is set as true at the location HKLM\Software\Accops\DesktopAgent.

Limitations of the VM Scale Booster

  1. The VM Scale Booster feature works only for Managed SHD Pools.

  2. The VM Scale Booster feature works only for Windows Managed SHDs. Linux SHD does not support the SHD push Feature.

  3. The HyWorks VM Scale Booster [v3.3.0.20] requires Controllers and SHD version 3.3 GA or above.

Important (VM Scale Booster)

  1. During the installation of the new Session Host, a DVMTools-Lite will get installed automatically, and it will set the EnableShdMode registry of the Desktop Agent to True. So, if it is set as false, then the SHD Push will not work.

  2. The manual installation arguments for the SHD Mode enabled DVMTools with regular release:

    • Argument: HyWorksDVMTools.exe /S /desktopagent=1 /hyprint=0 /usbcleaner=0 /usbredirection=0 /EnableShdMode=1
  3. DVM push agent refresh timeout: Only the controller-driven manual poll will be executed for each of the SessionHosts/MonitoringServers/DVMAgents after this timeout.

Azure-specific Configurations on the Controller

Add the following inbound firewall rules for ports:

  1. 5672: RabbitMQ Message Queue [Must] or as port configurations.

  2. 15672: RabbitMQ Management Console [Optional] or as port configurations.

VM Scale Booster Configurations and High Availability

Important concepts and terminologies:

Important

  • HyWorks has the concept of consumers and publishers. Modules that send data to the queues are called publishers, and modules that fetch data from the queue are referred to as consumers. For example:

    • VM Scale Booster acts as a consumer picking from message queues sent by the desktop agent as a publisher.

    • Consumers should be provided with both of the message queue server host addresses during installation or configuration.

    • Publisher modules should be configured with a load balancer (if deployed), if load balancer is not there publisher components should be configured with both of the message queue server host addresses during installation or configurations.

HyWorks Configurations: Enabling VM Scale Booster

  1. Without an External Load Balancer: Considering an example where two VM Scale Booster servers with two RabbitMQ servers are set up without a load balancer configured for RabbitMQ. High availability can be achieved as explained below:

    1. Assuming both of the HyWorks Controller Management nodes are installed with prerequisites for the VM Scale Booster.

    2. Configure VM Scale Booster to consume from both of the RabbitMQ servers.

      • During the installation of VM Scale Booster, provide the host addresses of both the MQ servers.
    3. HyWorks Configurations:

      1. From HyWorks Controller Management Console > Settings > General > Advance Settings, apply Tags Filter as VM Scale Booster & Message Queue.

      2. To enable VM Scale Booster, provide the following details:

        1. MQ Port: 5672 (Non-SSL, default) or 5671 (SSL)

        2. MQ Username: As configured during RabbitMQ installation.

        3. MQ Password: As configured during RabbitMQ installation.

        4. Desktop Poll Mode: Set to 2 to enable VM Scale Booster mode.

        5. Enable notification listener in DVM tools: Not a VM Scale Booster-related configuration, but if scheduled actions are being used, this can be marked as true for notifications in sessions.

        6. Consume from MQ Server(s): Provide comma-separated separated host addresses of RabbitMQ servers.

        7. Use MQ SSL: True or false based on RabbitMQ SSL configurations.

        8. Publish to MQ server(s): Comma-separated hostnames/IP addresses of the MQ servers (where messages will be sent), if a load balancer is not used. If the load balancer is present, provide a single IP Address of the load balancer.

      3. Clear the Tags Filter and try to search the configuration HA notify control and set it as True. This is used by HyWorks Controller to notify on Controller switching.

      4. Other advance configurations (which should not be changed and should be kept as it is):

        1. VM Scale Booster queue hostname: Default value is localhost. Will only be used in older DVM agents (older than 3.4.0.661 - Windows and 3.4.0.127 - Linux).

        2. VM Scale Booster queue heartbeat interval: 120. This can be changed if needed based on deployment size.

        3. VM Scale Booster desktop agent refresh timeout: 120 by default. Refresh desktop agent status, if last VM Scale Booster Push time and Poll time is more than this interval(Sec.).

        4. VM Scale Booster provider timeout: 120 by default. Refresh Desktop details from hypervisor, if last VM Scale Booster Push time is more than this interval (Sec.).

        5. MQ Connection Settings: Some default connection settings are specified in JSON format.

        6. VM scale booster queue name: Default as edc.dvm.heartbeat-queue.

    4. Save appropriate values in the required fields and then click Update to save the advance settings.

      • Scale Booster is now enabled, and logs can be checked for the heartbeats and events from the deployed desktops.

Scale Booster/ Message Queue High-availability

The new VM Scale Booster supports active-active mode, where the following two combinations are possible:

  1. Without an External Load balancer

  2. With an External Load balancer

This section will explain functioning in both cases:

  • Without an External Load Balancer:

    • Assuming the following configurations are in place:

      1. Scale Booster is installed and configured to consume from both of the RabbitMQ servers.

      2. VM Scale Booster is enabled and has both message queues host addresses configured for the Consumer as well as the publisher.

    • HyWorks Controller will push the configurations of both RabbitMQ servers to the respective desktop agents.

    • Case #1: Both queues are working:

      • Desktop agents will start sending heartbeats and events to any of the queues.

      • Both of the Scale Boosters are listening to both of the message queues.

      • Any one of the Scale Boosters will process the queue and push it to the HyWorks Controller.

    • Case # 2: One of the queues is not working:

      • The desktop agent will attempt to connect to the available queue and will start sending to that queue.

      • Any one of the Scale Boosters will process the queue and push it to the HyWorks Controller.

    • And thus, Scale Booster is working in active-active mode, with failover conditions handled by the agent for publishing and scale booster is picking from both queues.

  • With External Load Balancer: With an external load balancer configured for RabbitMQ:

    • Assuming the following configurations are in place:

      1. Scale Booster is installed and configured to consume from both of the RabbitMQ servers.

      2. VM Scale Booster is enabled and has both message queues host addresses configured for the Consumer and the load balancer IP address for the publisher.

    • HyWorks Controller will push the configurations of both RabbitMQ servers (both addresses for consumers and the load balancer address for the publisher) to the respective desktop agents.

      • Case #1: Both queues are working:

        • Desktop agents will start sending heartbeats and events via the load balancer to any of the queues.

        • Both of the Scale Boosters are listening on both of the message queues.

        • Any one of the Scale Boosters will process the queue and push it to the HyWorks Controller.

      • Case # 2: One of the queues is not working:

        • The desktop agent continues to send the heartbeats and events via the load balancer.

        • The Load balancer does not forward the details to the message queue not working and thus only working queue gets the data.

        • Any one of the Scale Boosters will process the queue and push it to the HyWorks Controller.

    • Thus, Scale Booster is working in active-active mode, with failover conditions handled by an external load balancer for forwarding details to the functioning message queue, and Scale Booster picking up from both queues.