Another method of providing HA for microsoft print servers

printers

Good evening, Microsoft used to have a supported method of providing HA for print servers. It utilized MS cluster services and provided a way to guard against an outage on the OS that would interrupt printing for your users. This had been around for some time and was completely abandoned with the release of server 2012. Now they are providing HA by using the Hypervisor and a silly monitor that starts the server on another node.

 

I see two problems with this approach. Why is this any better than just using VMWARE and having a single print server. It also does not scale, which for large Citrix deployments IS a big issue.

I found that you can load balance print servers, if you already have a Netscaler or an F5 Big IP, this is fairly easy.

 

Here are the issues you will encounter

 

1. Persistence is key (make sure to at least use source IP as the persistence)

2. New security features in windows will not allow the job to be processed if the job is originally sent to another name (the CNAME or A record used to point to the VIP)

3. Drivers and naming conventions used across both servers must be kept in sync.

4. You will need to decide your desired method of health check on the servers to take them out of the loop when a spooler is stuck, or server is down.

5. Do not call Microsoft for help. They have stated this is officially not supported. Which i do not care. It works well and is better than the method they have released. I will not call them for support

 

I will further document all my steps, screenshots and all the ins and outs as time permits.

 

here is the dump of my settings for now:

Details of the registry settings to be applied at each node in the cluster (each print server)

Disable “strict name checking”

 

Locate and select the following key in the registry:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters

On the Edit menu, click Add Value, and then add the following registry value:
Value name: DisableStrictNameChecking
Data type: REG_DWORD
Radix: Decimal
Value: 1

Disable Loopback Check

1. Click Start, click Run, type regedit, and then click OK.
2. In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
3. Right-click Lsa, point to New, and then click DWORD Value.
4. Type DisableLoopbackCheck, and then press ENTER.
5. Right-click DisableLoopbackCheck, and then click Modify.
6. In the Value data box, type 1, and then click OK.
7. Quit Registry Editor, and then restart your computer.

Configure Optional Names (the DNS Name of the Virtual Server)

Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters,
then create the OptionalNames value, you can enter a list of names. (This should be the DNS name setup for the VIP.)
Restart the computer, and the server will then respond to any of the names you listed.

Add the following to the registry to work around DNSONWIRE in windows 2008 R2 SP1 (may 2012, TBD)

reg add HKLM\SYSTEM\CurrentControlSet\Control\Print /v DnsOnWire /t REG_DWORD /d 1

 

Create a Host file on each print server referencing the name of the VIP and the local ip address

Edit the hosts file located in c:\windows\system32\drivers\etc

If you used an A record for your VIP, then type the netbios and FQDN along with the ip of that server.

stsprint                     10.100.10.59

stsprint.fpfnet.local    10.100.10.59

 

reference this document: http://support.microsoft.com/kb/2546625 for an example of a CNAME.

here are some references i found with sometimes conflicting info, but it was helpful:

 

https://devcentral.f5.com/questions/load-balancing-print-server

https://devcentral.f5.com/questions/ms-print-servers

https://devcentral.f5.com/questions/irule-to-modify-the-client-ip-to-virtual-server-ip#30522

http://forums.citrix.com/thread.jspa?threadID=295586

http://support.microsoft.com/kb/2546625

http://support.microsoft.com/kb/979602

 

anyway, i am done for tonight, it is working with a basic health check and i will continue tomorrow.

If you have any questions, please feel free to ask.

 

Michael

 

Quick update to this post, this is now in production and working well. We used the PrintBRM tool to syncronize the print queue’s on the servers which is working quite nicely (http://ss64.com/nt/printbrm.html)

I would still like to use a better health check method on the Netscaler to ensure the spooler is functional, however what we have in place now works well.