Remote Desktop Services (RDS) is the platform of choice to cost-effectively host Windows desktops and applications. You can use an Azure Marketplace offering to quickly create a full-blown RDS farm on Azure IaaS deployment. The good news is that the Azure Stack team was busy on bringing the same experience and offering to Azure Stack as well.
What actually does the Azure marketplace, it creates a domain for you, so making it a simple and easy mechanism for testing and proof-of-concepts scenarios. The quick start ARM templates, on the other hand, allow you to use an existing domain, so you can build out a production environment. Once the set up is completed, you can connect to the published desktops and applications from various platforms and devices, using the Microsoft Remote Desktop apps for Windows, Mac, iOS, and Android.
In order to deploy Remote Desktop Services on Azure Stack as described in this article, you need to have the following:
- Azure Stack deployed in a connected scenario. The same applies to Azure Stack Integrated Systems and Azure Stack Development Kit (ASDK).
- Azure Stack tenant subscription (plan/offer).
- Download Remote Desktop Services template from the Marketplace.
- Download Windows Server 2012 R2 image from the Marketplace.
- Download Windows Server 2016 image from the Marketplace.
This deployment will create a small-footprint RDS deployment, with the following components:
- 1 domain controller VM (Windows Server 2016).
- 2 Remote Desktop Session Hosts (RDSH) VMs (Windows Server 2016).
- 1 Remote Desktop Connection Broker (RDCB) VM (Windows Server 2016).
- 1 Remote Desktop Gateway (RDGW) VM (Windows Server 2016).
- A public IP address, virtual network, load balancer, and other required networking components.
Deploy Remote Desktop Services on Azure Stack
Assume you already have all the prerequisites in place. Take now the following steps:
As an Azure Stack operator, login to the Azure Stack admin portal and download the Remote Desktop Services (RDS) – Basic – Dev/Test from the Azure marketplace.
As an Azure Stack tenant, login to the Azure Stack portal and Create Remote Desktop Services deployment by taking the following steps:
In the Basics page, provide an Admin username, password, create or select an existing resource group, and then select the location. Click OK to continue.
In the Domain and network settings page, create a public IP address name, provide a DNS name to access the RD gateway, and then provide a desired domain name for the Active Directory VM. Click OK to continue.
In the RDSH and VM settings page, select which Windows Server SKU image do you want to use (assuming you already have downloaded Windows Server 2016 Datacenter or Windows Server 2012 R2 Datacenter images), specify how many RD Session Host instances do you need (the default is 2), and then select the size for each VM. Click OK to continue.
In the Summary page, review the settings and wait until the validation passed and then click OK to continue.
After approximately one hour and a half, you will see 20 resources deployed and created successfully a shown in the next screenshot.
When the deployment is completed, you can check the output of the deployment in the resource group under Deployments. Note the RD WEB URL, you need this web link to access your Remote Apps (more on that in the next section).
Publish RemoteApp Programs on Azure Stack
As part of the deployment, the domain controller is automatically configured and ready to use as well as all VMs are joined to the domain and configured with the necessary RDS roles (RD Connection Broker, RD Licensing, RD Gateway, RD Web Access, and RD Session Host).
The next step is to select the RemoteApp program that you want to publish for the users to access.
Sign in to GW-VM on Azure Stack. Select Server Manager > right-click All Servers > Add Servers.
Add the following servers: Broker, Gateway, RDSH-0, and RDSH-1.
Once added, browse to the Remote Desktop Services view in Server Manager, the RDS Deployment Overview displays.
Browse to the Desktop Collection under Collections and click Publish RemoteApp programs. In this example, I will publish WordPad and Calculator programs (of course, you can install your preferred application on each RDS host and then publish it). Click Publish and then click Close.
Now your application is ready for the users to access.
Open your web browser and type the RD WEB URL that you get from the output of the deployment above. In my example, it’s https://rds.local.cloudapp.azurestack.external/RdWeb
Enter your domain user name and password, and click Sign in. As a side note, the RD Web Access page can be fully customized based on your organization needs.
Select your application and click connect.
As a side note, if you are validating Remote Desktop Services on Azure Stack by using a Self-Signed Certificate and not using a third-party certificate, then you need to export the certificate manually from the RD Gateway machine and import it on the machine from where you want to access the applications. If you don’t do that, you will get an error stating that “This computer can’t verify the identity of the RD Gateway. It’s not safe to connect to servers that can’t be identified“. For production, it’s recommended to update the certificate on the RD Gateway and use a third-party certificate.
Finally, you can connect to the remote application and verify it’s accessible. You can also test the load balancing by turning off one of the RD Session Host (RDSH-0 or RDSH-1) and ensure that you are still able to access Remote App sessions.
Remote Desktop Services on Azure Stack is a great solution for organizations that need workloads to stay on-premises while providing Desktop as a Service (DaaS) solution for remote users.
At the time of this writing, you can only host remote application and remote desktop session based on RD Session Host. Virtual Desktop Infrastructure (VDI) based on RD Virtualization Host is not yet available on Azure Stack.
Microsoft announced at Ignite 2018 conference in Orlando, Florida that they are working on GPU support for Azure Stack. Azure Stack GPU support will bring Azure n-series virtual machines to Azure Stack which then can be used for various scenarios. Microsoft was not mentioning the exact timeline, but it looks like we can expect this in the near future.
Thank you for reading my blog.
If you have any questions or feedback, please leave a comment.