I recently got a great question on Facebook about when to add additional XenDesktop controllers and Provisioning services servers as the environment expands. As I’m long winded, I thought a blog entry makes more sense than a Facebook comment.
First, your initial design should plan for the future. I recently had a customer conversation that had a similar situation.
The initial implementation was going to be around 500-1000 desktops, think SMB type architecture (which is shown in the XenDesktop Design Handbook by the way). But over the next 1-2 years, that architecture would expand to include 3000+ desktops.
My advice is to plan for the 3000+ desktops now and architect accordingly. That way we don’t have to re-do our infrastructure that has been in production for a year. Chances are higher that you will screw something up or forget to do something. Do it now and be done with it.
But let’s say the future plans were never as grand. In fact, the virtual desktop implementation was only supposed to support 500 users. And because you did such a fabulous job and the users are happy, the organization has decided to expand the infrastructure. At what point do you add additional XenDesktop controllers and Provisioning services servers. Again, if you know the environment is going to grow, just do it now instead of waiting. What value do you get by waiting if you know you will need it?
OK, if you really want to get into the fun details, think about it this way… We are concerned with fault tolerance and scalability:
- The XenDesktop controller scalability is based on the boot, logon and logoff storms. The greater the storm, the less scalable the solution is. On average, a 2 controller system should be able to support 3000-4000 desktops. BUT (and this is a big but), if one of those controllers fails your scalability will drop fast. That’s why it is good to have 3. Three controllers should be able to support the 3000 desktop load even in the event of failure of one of the DDCs. Also, make sure you configure them appropriately and avoid the defaults. This means separating functionality across the three controllers.
- The Provisioning services scalability is essentially based on the NIC setup. On average, a single 1Gbps NIC should be able to support 500 desktop streams. If you add another NIC, you get more streams. BUT (another big but), we need to focus on fault tolerance. If one server fails, those streams will failover to another server. The more streams you have, the longer it takes. Most organizations limit their servers with 3-4 NICs supporting roughly 1,500 streams. And remember, you need to have N+1 setup, so that if each server can support 1,500 streams and you need to support 3,000 streams, you need 2+1 servers for fault tolerance.
I hope that helps to answer your question, and it was a good one. Thanks
Daniel – Lead Architect