Setting up a RDS Farm is not that hard but anyway I created a step by step guide to build a Windows Server 2016 Remote Desktop Services deployment.
there is a new feature in the Windows Server 2016 RDS : Full OpenGL support with RDS for VDI scenarios.
And Yes you can use the Quickstart but I’m not using this in this demo setup. I tried to do a complete setup,but doing this I noticed that I’m constantly expanding this demo with new options so. I’ll keep this pure to the setup and some PowerShell basics.
Quick Start is an option in RDS deployment during the process of adding roles and features with Windows Server 2012 Service Manager. It dramatically simplifies the deployment process and shortens go-to-market while still providing the ability to add additional RDS servers as needed. The abstraction formed by RDWA, RDCB, and RDSH offers such elegancy that the Quick Start process integrates the three and deploy all to one server in a process rather uneventful. For For prototyping a centralized remove access environment, demonstrating and testing a VDI solution, or simply building a study lab for self-training, Quick Start is a fast track for getting RDS up and running in a matter of minutes. – See more at: http://blogs.technet.com/b/yungchou/archive/2013/02/07/remote-desktop-services-rds-quick-start-deployment-for-remoteapp-windows-server-2012-style.aspx
As a lot of customers are using Citrix just to host some applications and never heard od RDS paying big license cost. as in the options is already build-in
My DC is running the License services and this is also my broker server.
Doing this setup is in two parts One add Roles and Second the RDS setup.
Adding the Roles to my DC and adding all the servers in the all server filter in the server manager of the DC.
Selecting the Server that holds the Remote Desktop Session host ( mvprds01 )
Selecting and installing the role. I did this in the menu but you can also do this in the configuration. and the role will be installed.
Now that the roles are installed there is an extra option in server manager <> Remote Desktop Services.
To configure Windows Server 2016 Remote Desktop Services you have to pick in the add roles and features the lower option Remote Desktop Services Installation.
As you can see a quick Start option is here but we are not using this. and check the standard deployment. now you need to configure all the stuff.
But for a quick demo you can pick the quick start option.
When using the VDI option you will need a machine that is running Hyper-v !. In my setup I’ll use the Session based desktop deployment.
A quick overview of the roles that I’ll need for this deployment.
Selecting the RD Connection Broker Server
Selecting the RD Web Access Server
Selecting the RD Session host Servers ( in this case only 1 )
The roles are getting configured and if needed deployed to the servers. I already did this but there is a check mark to deploy the Roles
Now that all the roles are installed in server manager you can go to the Remote Desktop Services
In the overview you can see what is deployed and what options you can do. but in every task pulldown item there are the same options.
I installed all my options and I’m ready to create a Collection.
Create a Collection.
In the task menu I choose the Create Session Collection,
Just Name it
Choose a RD Session host Servers
What users may access this collection. I’ll pick all domain users.
User profile disks offer several advantages:
- Configuration and deployment is simpler than roaming profiles or folder redirection.
- User profiles can be maintained even on pooled virtual desktops that get rolled back after logoff.
- Logon and logoff times are reduced.
- Previously, profiles could be corrupted if used simultaneously on multiple computers. User profile disks are specific to the collection, so they can’t be used on multiple computers simultaneously.
- Administrators can have granular control of exactly which locations get saved to the virtual hard disk (VHDX).
- User profile disks can be stored on Server Message Block (SMB) shares, cluster shared volumes, SANs, or local storage.
- In pooled virtual desktop collections, user profile disks work with virtual machines running both Windows 8 and Windows 7 with Service Pack 1 (SP1).
Some things to remember about user profile disks:
- User profile disks are available only in pooled virtual desktop collections and session collections—not in personal virtual desktop collections.
- Share permissions are automatically set up by the management tools.
- Use Server Manager or Windows PowerShell to manage user profile disks.
- User profile disks are for a single collection only. A user connecting to two different collections will have two separate profiles. If you want to synchronize settings, refer to Microsoft User Experience Virtualization.
When Creating the collection we can make a start for publishing applications.
Now that the Application Collection is ready we can add applications to this collection. When selection the task <> publish remoteapp programs or in the hyperlink. there will be a discovery off all the apps on the RD Session host Servers in this case the mvprds01.mvp.local
But sure you can apps that are not discovered just press add
and press Publish and there is the APP
When Logon to the Portal you can see the RemoteApp
Changing the Icon of the RemoteApp can be done by PowerShell or copy and replace. On the RDS Broker server. goto the path :
all the RemoteApps are there and can be changed here.
OR change the ICON with the shell23.dll with powershell
To change the Icon
The Icon Index for this interface works top to bottom, starting with 0. So count the rows until you see your desired icon, multiply this by 4, subtract 1, and count up to your desired icon. The Icon Index for the Windows Update icon turns out to be 46.
Type one of the following commands in the Powershell box:
Get-RDRemoteApp -Alias "clustermvp" | Set-RDRemoteApp -IconPath "c:\windows\system32\shell32.dll" -IconIndex 46
Creating Subfolders in the Application
Using the The RemoteDesktop PowerShell module we’re also able to add subfolders in RD Web Access and “move” specific Remote Apps to specific folders.
In order to do so we use the same command as above, Set-RDRemoteApp. For example, to create a subfolder called “My tools” and move the Remote App MSpaint to that folder you can use the following command:
Set-RDRemoteApp -CollectionName “Application 1″ -Alias clustermvp -FolderName “My tools” -ConnectionBroker mvpdc01.mvp.local
Creating File Extensions
A common setting is configuring the file extensions for Remote Apps. Inside the ServerManager GUI, file extensions are configured as a property of a RemoteApp, therefore you would expect that setting a file extension using PowerShell should be done using the command Set-RDRemoteApp. Instead, we need to use a different command called Set-RDFileTypeAssociation.
For example if we want to add the file extension .pdf or .txt to a Remote App Acrobat Reader or Wordpad we can use the following command:
Set-RDFileTypeAssociation –CollectionName “Application 1” -AppAlias AcrobatReader -FileExtension .pdf -IsPublished $true –ConnectionBroker mvpdc01.mvp.local
More about using Powershell to manage RemoteApp programs.
Get-RDRemoteApp (http://technet.microsoft.com/en-us/library/jj215454.aspx) is used to list properties for RemoteApps.
Get-RDRemoteApp -alias “wordpad” | fl
Set-RDRemoteApp (http://technet.microsoft.com/en-us/library/jj215494.aspx) is used to set properties for RemoteApps.
Set-RDRemoteApp -Alias “wordpad” -DisplayName “WordPad – Renamed”
New-RDRemoteApp (http://technet.microsoft.com/en-us/library/jj215450.aspx) is used to create a new RemoteApp in a certain collection.
New-RDRemoteApp -CollectionName “RemoteApps” -Alias “regedit” -DisplayName “RegEdit” -FolderName “Admin Tools” -FilePath “C:\Windows\regedit.exe”
Remove-RDRemoteApp (http://technet.microsoft.com/en-us/library/jj215493.aspx) is used to remove a RemoteApp.
Set-RDRemoteApp -CollectionName “RemoteApps” -Alias “wordpad”
Get-RDAvailableApp (http://technet.microsoft.com/en-us/library/jj215457.aspx) is used to list available applications to publish in a collection.
Get-RDAvailableApp -CollectionName “RemoteApps”
Get-RDFileTypeAssociation (http://technet.microsoft.com/en-us/library/jj215461.aspx) lists the filetype association(s) for a certain application.
Get-RDFileTypeAssociation -AppAlias “wordpad”
Set-RDFileTypeAssociation (http://technet.microsoft.com/en-us/library/jj215459.aspx) is used to set the filetype association(s) for a certain application.
Set-RDFileTypeAssociation -CollectionName "Application 1" -AppAlias "wordpad" -FileExtension ".txt" -IsPublished $True -IconPath "%ProgramFiles%\Windows NT\Accessories\wordpad.exe" -IconIndex 0
Happy RDS clustering
Data is the new oil and will be responsible for the largest transfer of wealth since the industrial revolution. Organizations that master data will lead the world. Those who don’t will wane into irrelevancy. Join Microsoft Distinguished Engineer James Whittaker on an entertaining and educational romp through modern data and its history from 20 years in the past to what is happening now in the time of Big Data all the way to 20 years in the future where the data landscape will be dominated by machines. Learn about ways your organization can think about data and how to be a player in a future that is closer than anyone thinks from intelligent clouds to the internet of things to quantum computing. No piece of data is left unturned.
Keynote can be found here https://channel9.msdn.com/events/TechDays/Techdays-2015-the-Netherlands/001
As my sessions : https://www.microsoft.com/netherlands/techdays/spreker.aspx?name=robert-smit&theme=yellow
At the Intel Innovation stage.
My slides can be found here : https://dd.docs.com/en-US/d/techdays-storage-spaces-direct-s2d_DaGcZJSEWSGSTEAAZg0FWBQ~M6cf13678-9bb1-eca5-2a2d-2b8d9b49448b
As https://twitter.com/Hans___Jan Hans jan was the cartooning man and he made a MVP logo of the Cloud and Clustering.
The new company car
Now that Windows Server 2016 is there and SQL server 2016. you can build a default cluster with SQL but that is no fun. Building a SQL Cluster on Storage Spaces Direct or putting the Databases on storage replication. or building a hybrid SQL cluster with Azure.
In my blog there are plenty off samples on how to build this. This blog is a easy step by step on hoe to create a cluster with the 2016 products. ( basically the same as 2008,2012R2 )
Get your Windows server 2016 here : https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview
What’s new in Windows Server 2016 ?
the Cluster is easy I use 3 lines of PowerShell to create this. needless to say the .net 3.5 is needed for SQL!
Installing the Cluster feature you will need to reboot this node.
install-WindowsFeature "Failover-Clustering","RSAT-Clustering" -IncludeAllSubFeature -ComputerName "mvpsql16-1.mvp.local","mvpsql16-1.mvp.local"
Test-Cluster -Node "mvpsql16-1.mvp.local","mvpsql16-1.mvp.local"
New-Cluster -Name Techdays01 -Node "mvpsql16-1.mvp.local","mvpsql16-1.mvp.local" -NoStorage -StaticAddress "10.255.255.10"
The Cluster is in place and yes you could do create a new failover cluster but that is to easy. command line is way faster with the advanced config.
Let’s pick the two steps installation in the advanced menu. cluster prep and cluster completion.
first step is advanced cluster preparation. when installing from command line you will need a ini file during the GUI setup you can save this ini file and use this for later or you can use an older file non 2016 if you just want to setup the DB.
If you are using named instances you can see this error if you are not using the right names
SQL named instance Requirements : https://msdn.microsoft.com/en-us/library/ms143531.aspx
WHen using the Command line with the INI file you can do this :
D:\setup.exe /q /CONFIGURATIONFILE="C:\SQLSetup\Configstep1.ini" /AGTSVCPASSWORD="Password01" /ASSVCPASSWORD="Password01" /SQLSVCPASSWORD="Password01" /ISSVCPASSWORD="Password01" /RSSVCPASSWORD="Password01" /IACCEPTSQLSERVERLICENSETERMS /INDICATEPROGRESS
Remember to change the ini file and set the ignore to the UIMODE="Normal"
In just a few minutes you have completed the whole setup. ( 5 minute Setup Windows Server 2012R2
Step 1 is done still there is nothing to see in the Cluster but the first part of SQL install is done.
Creating the Cluster with the advanced Cluster completion.
Important that you did run the cluster validation. else the setup will fail.
Using the named instance and using the Created ini file in step 2 if you haven’t had this file.
d:\setup.exe /q /CONFIGURATIONFILE="C:\SQLSetup\Configstep2.ini" /IACCEPTSQLSERVERLICENSETERMS /INDICATEPROGRESS
Done in just a few minutes and ready for the next Cluster rollout using the unattended files just change the names and IP and or locations in the INI files and you are ready to go.
Done for Part 1 the cluster basics.
As there are still many questions on how to setup a Windows NLB. Or not getting a working situation with all kind of different errors.
I made already two Blog post about NLB. This blog post will be a bit off Both.
So for starting I have 4 NLB nodes MVPSQL141 to MVPSQL 144
The NLB tools I installed with Powershell Run this on every NLB node!
Install-WindowsFeature nlb –IncludeManagementTools
Now that the tools are installed We can start with the Configuration of the NLB.
Starting the NLB manager to Create the NLB cluster and joining the Other Nodes.
All my nodes have multiple network cards and for the NLB I use always a dedicated NIC to avoid problems.
I select the create new cluster from the menu and add the First NLB node.
As you can see there are 3 nic’s in this case I use the Ethernet connection. The Public connection is connected to the Domain.
And All NIC’s have a fixed IP Addresses.
As you can see the nic has a dedicated IP if the nic has a DHCP Address you can give here a fixed IP by selecting ADD
This step is adding the Cluster IP by selecting ADD and then choose the right NLB Cluster IP!
Right Creating a DNS name for the NLB Cluster.
As I will only use Port 80 I changed the Rule and selected only port 80. I does not make sense to select all the ports when using only 80 and or 443.
Now that the Cluster is created We can join other Nodes with add host to the cluster I the menu. You can do only One Node at the time. the same screens as above are showing so no reason to capture this. However I have one node that has no fixed IP
When Adding this node there is a little warning.
As you can see the IP is not there therefore I do ADD and create a FIX IP on the NIC when I select Next the port policy will appear and the node Will be joined to the Cluster.
If anything fails to join the NLB node to the Cluster you need to look on this node. Creating NLB is a simple Process. Basic rule all nics need to See and Ping on FQDN and IP incoming and outgoing ! and make sure the NLB DNS entry is there and make sure the reversed lookup is also there!
When joining the NLB IP to IIS make sure you use the Cluster NLB IP and remove all other IP bindings!!
Happy nlb clustering
I like the option Storage Spaces. As you can use a simple disk to play with thin provisioning and show he I got a 480 TB Disk ( USB ) that is huge.
But this is no fun. I’m not saying this is Supported! play at own risk.
This is fun for demo’s but I was thinking about a fun blog post this could be it. At least to get things working.
I used my old USB disk and thought has anyone build a USB Scale-out File Server ? guess not Let me bing that for you http://tinyurl.com/lprxqsf
Playing with the New Cluster Options. as shown in an old blog post : what is new in Server 2016
But looking at just those 4 Options to Enable the Storage Spaces Direct that is no fun but what about the other options.
With a little help of this STORAGE_BUS_TYPE enumeration on MSDN we could do Fun things with some old disks.
So enabling the options I start Building My Scaleout File Server with My USB thumbdrive Storage.
With the DASmodeEnabled and the change of the bustype the disk are online
Creating my Storage Space Direct
Got My three disks online in my Cluster Enclosure
Created a Disk and made this disk a CSV To bad I could not thin provisioning this disk. So a max of 700 GB is there.
Just a screen shot of my Cluster with Storage Space Direct
Se how Fun new technology can be play and learn.
Download Windows Server Technical Preview evaluations:
As you know in Windows Server you can use the local storage in you cluster and you can also replicate storage between two Servers.
But what if we combine these two options ? seems logical and with some advanced config it could work. ok but what if I use Azure for this and better I use a Hybrid config using a Cluster that has also a leg in a on premise will this work ? I don’t think it is supported but cluster validation passed on this so it must be supported. with a *
Ok what Do I need for this :
Azure Subscription – Check
Azure Site – to – site VPN – Check
on-premise Cluster – Check 6 node Cluster
Azure Cluster nodes – Check 2 nodes running in Azure.
Fast Internet line – check
I’m not showing you all the details else it would be a very long blog post and I have already posted on how you can build your Replica and How to use the Storage Spaces Direct Combine them with those Two options.
My Setup is 4 Cluster nodes On Hyper-v on premise and Two node in Azure all running All Running Windows Server 2016.
and basically what I did is Building a cluster with Storage Spaces Direct based on 3 local disk and on top of this I created a 2 Disks that I used for replication.
as you can see I have 26 disk in Node 1 Different Sizes and Shared and non shared disks these are running on my Hyper-v 2012R2 Server
and with the Storage Spaces Direct option my Cluster Would look like this. Hybrid Cluster with all the Best options in Windows Server 2016
My Storage Pools One is running in Azure and On is on premis As for the Replication all replication disk needs to be at the same size.
Sizing difficult in azure So I created first the Azure disk to see what size they are and after that I created the On-premise disks
This is really nice all native Windows Server 2016. the only thing you need is a fast internet line. and Currently the limit is the access to Azure ( if you don’t have Expressroute. )
Seting up the Replication is easy with powershell
New-SRPartnership -SourceComputerName win2015-1 -SourceRGName Azure_group01 -SourceVolumeName u: -SourceLogVolumeName v: -DestinationComputerName win2015-6 -DestinationRGName Azure_group02 -DestinationVolumeName p: -DestinationLogVolumeName Q: -LogSizeInBytes 1gb
My Replication with Storage Spaces Direct in a hybrid Configuration. as you can see with this more configurations are possible and if you make sure the line latency is below 50ms things could work just fine.
But building this is fun but imaging you need to trouble shoot this where are my disk and what is failing things are getting complex and even with the hybrid model extending your Datacenter to Azure is a bit closer.
With todays Fast internet it is easy to build this and hybrid solutions are easy to build especially with windows server 2016 build in Replica and local Storage for clustering. extending your lab or production to Azure and you can demonstrate the high available solutions today. but keep in mind building an troubleshooting can be a pain as environments are getting complex.
Checkout the MVP V-Conf Session
Deploying Highly Available SQL Server in Microsoft Azure IaaS
Download Windows Server Technical Preview evaluations: