In a previous post, I discussed how many different desktop images the ABC school district required for their desktop virtualization design: five. Read the previous blog to find out why five were needed. With 18,000 virtual desktops, the challenge now becomes on how to design/scale the Provisioning services environment. And even still, what happens if one Provisioning services server fails. What happens to the virtual desktops that server was supporting?
With the ABC School District, it was originally decided to use 8 servers, each with 6 NICs. However, since the release of the reference design, we are instead allocating 13 servers with 6 NICs each with the goal of being able to reduce the number to 8. Why the increase? Risk mitigation. The ABC School District wants to make sure there is no bottleneck on the virtual desktop streaming side of the architecture. That in turn made us modify the design to increase the number of servers with the hopes that during implementation we can reduce the number and utilize the servers for other purposes.
Estimating Provisioning services capacity is fairly straight forward. One can assume you can achieve 500 virtual desktop streams per 1Gpbs NIC. With 6 NICs in the server (subtract one for fault tolerance), we estimated 2500 streams. However, the ABC School District is unsure if their infrastructure is able to support that level of traffic coming from a single server, thus we increased the number of Provisioning Services servers. We will revisit if all 13 are required once production ramps up.
Regardless of the number of servers, we still need to figure out what happens in the event of a failure. First, some goodies about Provisioning services:
- Provisioning Services includes its own high availability option
- A Provisioning services high-availability grouping is not limited to 10 servers as many believe.
In order for high availability to function, the same vDisks must be available from each server. We could use a shared storage solution, but the school district is trying to keep costs under control. Instead, we will simply use the local storage on each of the Provisioning services servers. The servers will be configured with 2 spindles in a RAID 1 configuration. Will this be enough IOPS (we all know how much we love to talk IOPS)?
- First, the Provisioning services servers will utilize many more read operations in comparison to writes (remember we are simply reading blocks of the vDisk, thus the higher read operations)
- Second, we will reduce the overall IOPS requirements for the Provisioning services server by utilizing system cache. Because we are using Windows Server 2008 (and more importantly 64bit), we can have a large system cache. This allows us to keep many more blocks of the vDisk in memory, thus reducing the need to go to disk for read requests.
That is only a portion of the Provisioning Services design. If you want to know more you can
- Get the white paper. It is in the XenDesktop Design Handbook in the reference architecture section
- Attend the upcoming TechTalk
Continue following this blog series on the ABC School District
Daniel – Lead Architect