Citrix Universal Print Server is a pretty great product, when it’s not breaking.

Unfortunately, the supported and documented deployment is a single server. If you’re one of the common-folk who have ran into a plethora of issues, when your server dies, it dies.

However, using the power of netscaler we are able to load-balance the printers across 2 (or more?) servers. Thankfully, it’s quiet easy.

Firstly, setup a second CUP server the exact same way as the first. Verify functionality, and verify that the printer share names, drivers etc. are all the exact same.

Next, on your two print servers, create the below registry keys:

Value name: DisableStrictNameChecking
Data type: REG_DWORD
Type: Decimal
Value: 1
Value name: OptionalNames
Data type: REG_SZ
Value: <NETBIOS name of cluster resource - "CONTOSOCLU01" if the fqdn is>
Value name: DisableLoopbackCheck
Data type: REG_DWORD
Radix: Decimal
Value: 1
Value name: DnsOnWire
Data type: REG_DWORD
Radix: Decimal
Value: 1

Once added, I personally had to reboot my 2x CUP servers, but you may just get off restarting the ‘print spooler’ service. It’s Melbourne Cup day here in Australia, so I did it when the race was on. Which means we had no staff at computers ;).

Also, add an entry to your hosts file for your Cluster NetBIOS and FQDN.

`# This is the hosts file.

The IP is the VIP you will use for your netscaler load-balanced virtual server</p> CONTOSOCLU01` Now, we move onto the netscaler. Here is a quick 'cliffs' of what to do **Cliffs:** * Define your servers. * Define your services - **'ANY'** protocol and **'ANY**' port. * Create your Load-Balanced Virtual Server - **'ANY'** protocol and **'ANY'** port. ** Define load-balance method and persistence method. * Create a DNS record for your cluster resource in AD. **Define your servers** Pretty easy, create your 2 (or more) CUP servers within the netscaler. * Login to the netscaler * Expand 'Traffic Management' > 'Load Balancing' > 'Servers' * Enter your servers as per usual

[Adding the server](
Adding the servers
**Define the services** This is where it gets a bit tricky. I haven't had time to test an actual proper monitor yet (because I only got this working about an hour ago) so that's a "needs improvement" point. * Expand 'Traffic Management' > 'Load Balancing' > 'Services' * Create your services, ensure choosing **'ANY**' protocol and **'ANY'** port. * Select your monitor. This needs further work, for this example, I've just chosen **'ping'**. * Select your server as the server.
[Adding the service](
Adding the service
**Create you LBVS** Now we've created our servers, and configured our services, time to create our LBVS. * Expand down into Virtual Servers, under load-balancing * Create your vServer \* \* Define name, IP address \* \* Select **'ANY'** for protocol and **'ANY'** for port * Add your services you created earlier * Click 'Method and Persistence'
[Adding the LBVS](
Adding the LBVS
* On that tab, choose your LB method - I chose **'Least Connection'**. * Under persistence, choose your method. This will take some experimenting, but for this example I chose **'SOURCEIP'**. * Configure your timeout. This will take some experimenting, but I chose **'660mins'**. _This is because I don't know what will happen if clients reconnect to a different server after the timeout. Initial testing showed that Citrix users apps lock (Outlook etc.) and they have to close/re-open. Which I don't want happening every 20mins._
[Method and persistence](
Method and persistence
**Create a DNS record in AD** Self-explanitory, create a DNS record in AD for your new LBVS cluster IP, named the exact same as the reg keys etc. you configured above. That's it! Happy testing and happy CUPS-clustering :).