During my last PoC with Nutanix, I investigated the amount of time it takes to build an Environment for the Developer Team. This post is about the DevOps portion, getting in touch at the customer level, the first time. The Developers build their own customer applications used around the globe, developed and version control by on-premises Bitbucket, Jira and Confluence.
- Non-Persistent VDI (same software set for all developers)
- Roaming Profile
- Workspace repository to check-out the branches from the On-Premises Bitbucket Server
- Setup across two DataCenters
During the PoC, I deployed the VMs with MCS from the XenDesktop 7.15 LTSR CU1 Test Environment, which works very smoothly. The Customer has PVS running for their Production XenApp Environment, but PVS Version 7.13 does not support AHV.
The biggest killer-feature is to build a workspace repository, because the developers have a high count of very small files, which produce very big overhead through the download from the BitBucket server. During this PoC, I have several tests running to store the repository on NetApp, AFS (Acropolis File Services), FSLogix User Profile Disk and local drive. I have also measured the different environments.
I have created a simple Powershell Script to create the numbers of files for each size, and I use the same script to copy and measure the files to the destination. The powershell script is available here.
- NetApp connected Share (SMB 3)
- AFS (Hosted on Nutanix with 4 FileServers) connected Share (SMB 3)
- FSLogix UPD: the VHDX behind also mounted through SMB3 (hosted on NetApp)
- Local Folder outside the User Profile on the System Drive.
FSLogix has very good performance, but the big thing through the Bitbucket Download the VDI VM has the usage like a Proxy. Download the files from Bitbucket and store them on an external network share...mmmh...this kills my performance also.
I created a Nutanix Volume Group (part of the ABS [Acropolis Block Service] and used as an iSCSI Target) for each VDI VM and attach each Volume Group to one single VM. This can be used for the Workspace repository inside the VM. More information about ABS (Acropolis Block Services) here. With this, I must use a static assignment every time to point the users to the same VM. From the user perspective, it works, but from the IT-architecture, the adminstration and the High Availablity across two datacenters, I must look behind a little deeper and try additional solutions.
Pooled VMs with User Follow Workspace:
The usage of Pooled VMs is my prefered solution, as users can share the same VDI if they work at different times, and the administration is easier. But, the Workspace drive that I created is attached to the VM, and the users store their own data there. How can I build the Workspace that is attached to the user and not the VM?
I played around with the POSH SDK from Nutanix, and I'm able to create, attach and detach the volume group. I installed the SDK on the Win10 Base Image, and updated the Machine Catalog. During User Logon, the Volume Group (VOLGRP_%username%) is cloned from a previously-created template and based off of the DataCenter ID that is a part of the Computername. I'm able to connect to the right cluster.
Scripts that I used during my PoC can be accessed here.
High Availablity Across Two DataCenters:
Nutanix does not support a stretched cluster accross two datacenters, meaning you must create one cluster with a number of Nutanix Blocks in each datacenter. From the Citrix perspective, I create two Zones and two Machine Catalogs. The Delivery Group has both Machine Catalogs assigned and the User is a Member of the Zone. With this solution, the user is able to open a session on each VM in a DataCenter, but what happens with his workspace if the connection to the datacenter drops in case of a catastrophic failure? With the Nutanix Protection Domain, we can replicate the Volume Group to the other site, but this is a near-sync mirror with AHV only. Depending on the hard disk size, you can reduce the sync to a minimum of one hour. With VMware vSphere, a sync-mirror can be set up. In the case of a catastrophic failure, the Active Directory Group for the Citrix Zone must switch to the other and the Volume Group must be enabled to the other side.
To build the solution design like this, I need 10 NX-3175-G5 (5 each DataCenter) to host 180 VMs in summary (two Sockets, two Cores, 16 GB RAM, 50 GB PVS WriteCache Disk, 100 GB User Workspace).
During the PoC, one NX-3460-G5 has up to 20 VMs available, automated the Bitbucket (git) checkout on a real user example and measure the load on the Nutanix Hardware. I also built different kinds of VM configurations.
- 2 Sockets, 2 Cores, 12 GB RAM
- 1 Socket, 4 Cores, 12 GB RAM
- 100 GB User Workspace
As you can see, we have a linear time to checkout, build the workspace repository, based on the usercount accross 4 AHV in a single Block. Minimum differences between the configuration of the VMs.
During the same time, I measured the load on the hardware itself, to see what happened under the hood.
Nutanix is a very good solution, to bring all the features together in a single box and linear grow up with the same workload, for this described PoC / Solution above, Nutanix can help and reduce the administrative effort. On the other side are the costs for Nutanix, you can't compare both Solutions like traditional servers with ext. storage and storage network with Nutanix. For a non-persistent environment like XenApp and no special requirements, no shared storage, no Xen/v-Motion, you can use cheaper server with local storage to build your solution... but every time I say "it depends..."