Thought it was time for an update – This is something I’d previously written when implementing Provisioning Services 5.6 sp1 and XenServer 5.6 FP1 into a a reasonable sized Presentation Server 4.5 farm that wanted to move away from their currrent physical servers to embrace the wonders of virtualization.
It’s been said before but load balancing TFTP is difficult, and as Provisioning server by default will use TFTP to deliver the ardbp32.bin file to target devices this presents a challenge. This challenge has been well documented already in the following document form the Citrix Blogs
• TFTP is difficult to load balance. The following article describes the difficulties of bootstrap resilience: http://community.citrix.com/display/ocb/2011/05/02/Load+Balancing+TFTP+-+Anything+But+Trivial
What we did was slightly different. I wanted to use the Netscaler to load balance this as Netscaler VPX has been deployed to make other areas of the infrastructure highly avialable so we set about looking for a way and came up with the following..
Instead of using TFTP to deploy the ardbp32.bin file we would use HTTP.
The following configuration steps were taken in addition to the standard Provisioning Server Build in order to allow the Ardbp32.bin file to be delivered via HTTP and Load Balanced by the Netscaler appliances.[warning]I’ve been informed by a colleague that this method does not work when using VMWare VSphere.[/warning]
- In order to deliver the Ardbp32.bin file over HTTP the Windows 2008 R2 IIS 7 server was deployed on each provisioning server.To limit the changes made to the Provisioning server installation the Physical path of the Default site in IIS was changed to the default location of the ardbp32.bin file: C:programdataCitrixProvisioning ServicesTftpboot
- This is a simple HTML file that contained the word PVSUP was created for the Netscaler Load Balancing Monitor to check.
<HTML> <TITLE>Healthcheck</TITLE> <Body> PVSUP </Body> </HTML>
This was saved in the root of the IIS Default Site: C:programdataCitrixProvisioning ServicesTftpboot
- The DHCP server role has also been configured on each Provisioning server to provide the provisioned virtual machines with an IP on the PVS VLAN and the location of the bootstrap file.DHCP Option 67 if configured within the PVS scope to point to: http://<PVS-VIP >/ardbp32.bin
- The Netscaler was configured with a basic HTTP VserverAn HTTP Service Group is created:
add serviceGroup SvcGrp_PVS HTTP
Both Provisioning Server IP addresses are bound to the Service Group and their HTTP port defined:
bind serviceGroup SvcGrp_PVS_HTTP <PVS1IP> 80 bind serviceGroup SvcGrp_PVS_HTTP <PVS2IP> 80
A Vserver is created and the Provisionging Server VIP, HTTP protocol and Port for ncoming connections is defined:
add lb vserver Vsrv_PVS_HTTP HTTP <PVS-VIP> 80
The PVS Service Group is bound to the PVS Vserver:
bind lb vserver Vsrv_PVS_HTTP SvcGrp_PVS_HTTP
- In order to ensure that the Provisioning Server is able to provide the Ardbp32.bin file over HTTP a HTTP ECV monitor was created that constantly checks for the existence of the ‘Healthcheck.htm’ file created on the Provisioning Servers and that its response should contain the word ‘Healthcheck’.The following commands were issues to create this monitor:
add lb monitor PVS_Monitor HTTP-ECV bind lb vserver Vsrv_PVS_HTTP PVS_Monitor add lb monitor PVS_Monitor HTTP-ECV -send "GET /Healthcheck.htm" -recv PVSUP -LRTM ENABLED -destPort 80
Hope this helps someone else.