Migrate to Microsoft Azure with Azure VMware Solution


Azure VMware Solution (AVS) is a private cloud VMware-as-a-service solution, allowing customers to retain VMware related investments, tools, and skills, whilst taking advantage of the scale and performance of Microsoft Azure.

Microsoft announced the latest evolution of Azure VMware Solution in May 2020, with the major news that AVS is now a Microsoft first party solution, endorsed and cloud verified by VMware. Microsoft are a VMware strategic technology partner, and will build and run the VMware Software Defined Data Centre (SDDC) stack and underlying infrastructure for you. The latest availability of Azure VMware Solution by region can be found here.

If you have looked at AVS by Cloud Simple before this is a new offering, consistent in architecture but now sold and supported direct from Microsoft, providing a single point of support and fully manageable from the Azure Portal. Cloud Simple were acquired by Google in late 2019.

Azure VMware Solution Explained

Azure VMware Solution is the VMware Cloud Foundation (VCF) software stack built using dedicated bare-metal Azure infrastructure, allowing you to run VMware workloads on the Microsoft Azure cloud. AVS is designed for end-to-end High Availability with built in redundancy. Microsoft own and manage all support cases, including any that may need input from VMware.

Microsoft are responsible for all the underlying physical infrastructure, including compute, network, and storage, as well as physical security of the data centres and environments. As well as hardware failure remediation and lifecycle management, Microsoft are also responsible for the deployment, patching, and upgrade of ESXi, vCenter, vSAN, NSX-T, and Identity Management. This allows the customer to consume the VMware infrastructure as a service, and rather than spending time fire fighting or applying security updates; IT staff can concentrate instead on application improvements or new projects. Host maintenance and lifecycle activities such as firmware upgrades or predictive failure remediation are all carried out with no disruption or reduction in capacity.

Microsoft’s data centres meet the high levels of perimeter and access security you would expect, with 24×7 security personnel, biometric and visual sign-in processes, strict requirements for visitors with sufficient business justification including booking, location tracking, metal detectors and security screening, security cameras including per cabinet and video archive.

The customer is still responsible for Virtual Machines and everything running within them, which includes the guest OS, software, VMware Tools, etc. Furthermore the customer also retains control over the configuration of vCenter, vSAN, NSX-T, and Identity Management. VMware administrators have full control over where their data is, and who has access to it by using Role Based Access Control (RBAC), Active Directory (AD) federation, customer managed encryption keys, and Software Defined Network (SDN) configuration including gateway and distributed firewalls.

Elevated root access to vCenter Server is also supported with AVS, and that helps to protect existing investments in third party solutions that may need certain vCenter permissions for services like backup, monitoring, Anti-Virus or Disaster Recovery. By providing operational consistency organisations are able to leverage existing VMware investments in both people skills and licensing across the VMware ecosystem, at the same time as reducing the risk in migrating to the cloud.

Connectivity between environments is visualised at a high level in the image below from Microsoft’s AVS documentation page. The orange box symbolises the VCF stack, made up of vSphere, vSAN, and NSX-T.

Azure VMware Solution

Some example scenarios where AVS may be able to resolve IT issues are as follows:

  • Data centre contract is expiring or increasing in cost:
  • Hardware or software end of life or expensive maintenance contracts
  • Capacity demand, scale, or business continuity
  • Security threats or compliance requirements
  • Cloud first strategy or desire to shift to a cloud consumption model
  • Local servers in offices are no longer needed as workforces become more remote

Azure Hybrid Benefit allows existing Microsoft customers with software assurance to bring on-premises Windows and SQL licenses to AVS. Additionally Microsoft are providing extended security updates for Windows and SQL 2008/R2 running on AVS.

There is a clear and proven migration path to AVS without refactoring whole applications and services, or even changing the VM file format or network settings. With AVS a VM can be live migrated from on-premises to Azure. Hybrid Cloud Extension (HCX) is included with AVS and enables L2 networks to be stretched to the cloud. The Azure VMware Solution assessment appliance can be deployed to calculate the number of hosts needed for existing vSphere environments, full details can be found here.

AVS Technical Specification

Azure VMware Solution uses the customers Azure account and subscription to deploy Private Cloud(s), providing a deep level of integration with Azure services and the Azure Portal. It also means tasks and features can be automated using the API. Each Private Cloud contains a vCenter Server, NSX-T manager, and at least 1 vSphere cluster using vSAN. A Private Cloud can have multiple clusters, up to a maximum of 64 hosts. Each vSphere cluster has a minimum host count of 3 and a maximum of 16. The standard node type used in Azure is the AV36, which is dedicated bare metal hardware with the following specifications:

  • CPU: Intel Xeon Gold 6140 2.3 GHz x2, 36 cores/72 hyper-threads
  • Memory: 576 GB
  • Data: 15.36 TB (8 x 1.92 TB SSD)
  • Cache: 3.2 TB (2 x 1.6 TB NVMe)
  • Network: 4 x Mellanox ConnectX-4 Lx Dual Port 25GbE

AVS uses local all-flash vSAN storage with compression and de-duplication. Storage Based Policy Management (SBPM) allows customers to define policies for IOPS based performance or RAID based protection. Storage policies can be applied to multiple VMs or right down to the individual VMDK file. By default vSAN datastore is encrypted and AVS supports customer managed external HSM or KMS solutions as well as integrating with Azure Key Vault.

An AVS Private Cloud requires at least a /22 CIDR block on deployment, which should not overlap with any of your existing networks. You can view the full requirements in the tutorial section of the AVS documentation. Access to Azure services in your subscription and VNets is achieved using an Azure ExpressRoute connection, which is a high bandwidth, low-latency, private connection with automatically provisioned Border Gateway Protocol (BGP) routing. Access to on-premises environments is enabled using ExpressRoute Global Reach. The diagram below shows the traffic flow from on-premises to AVS using ExpressRoute Global Reach. This hub and spoke network architecture also provides access to native Azure services in connected (peered) VNets, you can read the full detail here.

On-Prem to AVS

AVS Native Azure Integration

A great feature of AVS is the native integration with Azure services using Azure’s private backbone network. Although the big selling point is of course operational consistency, eventually applications can be modernised in ways that will provide a business benefit or improved user experience. Infrastructure administrators that no longer have to manage firmware updates and VMware lifecycle management are able to focus on upskilling to Azure.

Deployment of a Private Cloud with AVS takes as little as 2 hours, and some basic Azure knowledge is required  since the setup is done in the Azure Portal, and you’ll also need to create a Resource Group, VNets, subnets, a VNet gateway, and most likely an ExpressRoute too.

Screenshot 2020-09-10 at 11.28.32

To get the full value out of the solution native AWS services can be used alongside Virtual Machines. Some example integrations that can be looked at straight away are; Blob storage offering varying tiers of cost and performant object storage, Azure Files providing large scale SMB file shares with AD authentication options, and Azure Backup facilitating VM backups to an Azure Recovery Services Vault. Additional services like Azure Active Directory (AAD), Azure NetApp File Services, and Azure Application Gateway may also help modernise your environment, along with Azure Log Analytics, Azure Security Center, and Azure Update Manager.

VMware customers using, or interested in, Horizon will also note that the Horizon Cloud on Microsoft Azure service is available, and if configured accordingly will have network line of sight to your VM workloads in AVS, and native Azure services.

For more information on Azure integration see the Azure native integration section of the AVS document page, and the AVS blogs site by Trevor Davis. Further detail on Azure VMware Solution can be found at the product page, FAQ page, or on-demand webinar.

How to Deploy VMware Horizon Cloud on Microsoft Azure


VMware Horizon Cloud is a cloud-native virtual desktop platform that transforms an organisation’s digital workspace experience. Virtual desktops and applications can be accessed by end-users securely from any device, anywhere, with a cost-effective subscription-based model. Infrastructure administrators can deploy highly available and distributed environments consuming capacity from Microsoft Azure, VMware Cloud on AWS, or on-premises infrastructure. VMware Horizon Cloud can also be deployed to IBM Cloud. You can read more about the Horizon Cloud service offerings in the VMware Horizon Cloud Service Documentation.

Horizon on Azure allows customers to deploy Horizon Cloud as a VMware managed service using Infrastructure-as-a-Service (IaaS) from their own Microsoft Azure subscription. Horizon Cloud on Azure delivers virtual applications and dedicated or floating Windows 10 desktops, leveraging Azure cloud resources for multiple scalable deployment options. The Horizon Cloud admin console provides a single interface to manage virtual desktops and users with built-in service monitoring, logs, and analytics. You can see a full list of features in the VMware Horizon Cloud on Azure FAQs.

Example Design

AD Req

During pod deployment Horizon Cloud deploys a pair of Unified Access Gateways in an Azure Virtual Machine Scale Set behind an Azure Load Balancer assigned a public IP address. The Unified Access Gateways provide secure external access from a demilitarised zone (DMZ) subnet and directs authenticated requests accordingly. The public load balancer IP address is visible from the Horizon Cloud management portal and will need adding with the FQDN to a public DNS zone. A certificate matching the FQDN is uploaded in PEM format during the UAG deployment wizard.

A further Azure Load Balancer with a private IP address is automatically deployed with an Azure Virtual Machine Scale Set for the pod’s manager instances into a management subnet. The manager IP address is also visible from the Horizon Cloud portal and will need adding with the FQDN to a private DNS zone. A certificate chain matching the internal load balancer FQDN and DNS resolution is necessary if integrating Horizon with Workspace ONE, you can read more in the Overview of Configuring SSL Certificates on the Horizon Cloud Pod’s Manager VMs documentation.

The gold image(s) and virtual desktop pools are deployed and managed from the Horizon Cloud portal and use a dedicated private tenant subnet. Each of the components mentioned is provisioned to the customer’s Azure subscription organised in Azure Resource Groups with the supporting resources such as databases, Key Vaults, disks, Storage Accounts, network interfaces, and Network Security Groups.

Workspace ONE and True SSO

Each pod deployment in the example design can serve up to 2000 virtual desktops and can scale out to multiple pods across additional regions to provide extra capacity and resilience. Using Workspace ONE with Horizon Cloud enables a single URL for all users to access regardless of where their virtual desktop is located. Workspace ONE Access, formerly VMware Identity Manager, adds a further layer of security with Multi-Factor Authentication (MFA).

To allow for Single-Sign-On (SSO), VMware’s True SSO needs to be used. True SSO removes the need to enter the username and password more than once while accessing virtual desktops and published applications. True SSO comes with an additional set of requirements which you should review in full before starting along with the Integrate a Horizon Cloud Pod in Microsoft Azure with Workspace ONE Access documentation. At a high-level Active Directory (AD) with DNS and an enterprise Certificate Authority (CA) are needed. If you are deploying a greenfield environment, without an existing federated Azure Active Directory (AAD), then you may need to manually install Active Directory Domain Services on Virtual Machines in the Azure subscription as portrayed in the example design above. Azure Active Directory Domain Services (AAD DS) cannot be used with an enterprise CA at the time of writing which is a requirement for True SSO. Configuration of Workspace ONE and True SSO is beyond the scope of this document, but it is recognised as a component in the overall design.


Azure Pre-Requisites

Review the VMware Horizon Cloud Service on Microsoft Azure Requirements Checklist. Before Horizon pod deployment, you will need to configure the following Azure resources:

  • Azure subscription with available capacity
  • The following resource providers registered in each Azure subscription:
    • microsoft.authorization, microsoft.keyvault, microsoft.storage, microsoft.sql, microsoft.dbforpostgresql, microsoft.insights (registers automatically when a service using insights is deployed)
  • Azure Active Directory (AAD) App registration (service principal) with an authentication key for each subscription
    • You will need the Subscription ID, Directory ID, Application ID and key to hand
  • Contributor role assigned to the subscription access control (IAM) for the above service principal
  • A VNet created with the Microsoft.Sql service endpoint enabled, DNS configured, internet access, and 3 non-overlapping address ranges (subnets can be added in advance or at pod deployment)
    • Management subnet, minimum /27
    • Tenant subnet, minimum /27 up to /21 based on the number of virtual desktops
    • DMZ subnet, minimum /28
  • Any required VNet peering should be in place for line of sight Active Directory access, and optional Express Route or VPN for on-premises connectivity

    Horizon Pod Deployment

    Access to Horizon Cloud is provided through email invite via your VMware representative. After logging in the first step is to add pod capacity, the Getting Started page defaults to the Capacity section. Next to Microsoft Azure click Add.

    The Add Microsoft Azure Capacity wizard opens. Follow the instructions to associate the Horizon Cloud control plane with the Azure subscription, using the Subscription ID, and the Azure AD (AAD) App Registration, using the Directory ID with the Application ID and Key for the service principal created during the pre-requisite configuration.


    In the Pod Setup page, configure the pod details. Enter the network settings, including the VNet and subnets to use as discussed in the design section above.


    Configure the external Unified Access Gateways (UAGs) with the public FQDN and the DMZ subnet. Upload the certificate to be applied to both UAGs in PEM format, the certificate must use the FQN specified in this page and must be signed by a trusted Certificate Authority.


    If the pod and gateway configurations validate successfully, then review the summary details and click submit to begin the pod deployment.


    The screenshot below shows the completed post-setup dashboard. In this instance, 3 pods for Azure capacity have been configured.


    After adding capacity to Horizon Cloud, the next step is to configure Active Directory. Review in full the Horizon Cloud service accounts requirements before starting. If you are using a third-party identity source, validate the permissions outlined are acceptable, along with the enterprise CA requirement mentioned above. Cross-check with the Active Directory Requirements section of the VMware Horizon Cloud Service on Microsoft Azure Requirements Checklist.

    Click Configure next to Active Directory to register your domain, add the domain bind and domain join accounts, and define the AD group for Horizon Cloud administrators. After applying the Active Directory configuration, you will need to log back into the portal with a domain account with Horizon Cloud administrative permissions, as well as your My VMware account. You can configure additional My VMware accounts under Settings and then General Settings.

    Publish a Horizon Desktop Image

    With Active Directory configured, we can go ahead and add the first gold image. As an optional configuration item, you can specify the allowed Virtual Machine types for deployments under Settings and then VM Types & Sizes.

    Images can be uploaded or imported from the Azure Marketplace under Inventory and Imported VMs. When you select an image from the Marketplace choose an OS and configure settings like domain join, and Horizon Agent features such as Smart Card / USB redirection, etc. You can enable a public IP address to access the image over RDP, or you can use the Azure Portal (Bastion) to apply software and configuration to the base build. During the import process, Horizon Cloud enables the RDS role, automates the agent installation, and performs a bootstrap process to securely pair the agent and the Horizon Cloud pod.


    Click Import, after a few minutes the image Status changes to green and the Agent Status Active. With the image imported, you can carry out any customisations required to the base build. When complete, select the image and from the More drop-down menu click Convert to image. The build is now converted to an image, Horizon runs sysprep for you, seals the OS, and publishes to the Images section.

    This example is using a single gold image, but you can use multiple images and farms to publish many desktops and applications to end-users. The final step is to configure a new Desktop Assignment enabling users to deploy the image from Horizon Cloud. Click Assignments and New then select Desktops. Choose floating or dedicated desktop types and fill in the fixed attributes, fixed attributes on the assignment cannot be changed after publishing. Complete the flexible attributes, such as minimum and a maximum number of desktops, and machine prefix. Flexible attributes can be updated later.


    Virtual desktops are powered off and deallocated when they are not being used to balance infrastructure costs. You can configure power off protect timings or add power management schedules. On the Users page add the Active Directory users or user groups that will have access to the desktop pool. After the Assignment is created and online it is available for use.


    Users given access to the Assignment can now log in direct to the public FQDN for the pod.


    Entitled images and applications are shown in the Horizon client.


    Back in the Horizon Cloud admin portal the dashboard and reports functionality can be used for general monitoring of the service. At the time of writing, there is no syslog forwarding feature available from the Horizon Cloud portal. Automation of report downloads in CSV format can be scripted, or an agent used on the image build itself, such as a Splunk forwarder.


    Here are some additional gotchas found at the time of deployment. These are expected to be fixed in future releases.

    • Communicating with the internal IP address of a basic Azure Load Balancer across regions with VNet peering is not supported, a standard Azure Load Balancer is needed. At the time of writing the Horizon Cloud pod deployment uses basic load balancers for the internal manager VMs.
    • When applying a certificate to the internal load balancer for the manager VMs to facilitate Workspace ONE integration at the time of writing a common name in the certificate will be ignored if Subject Alternative Names (SANs) are present. All pods should be added as SANs.

    Useful Documentation