In this article I will explain why Microsoft removed the Highly Available Print Services Role in Windows Server 2012 R2, 2016 and 2019 Failover Clustering and how you can make your Print Services Role Highly Available. The same level of Spooler Service Process Availability like in Windows Server 2012 Clustered Print Services Role and previous versions is still there but it is one of the most misunderstood topics on the market.
To understand the reason why Microsoft made some design changes to the High Available Print Services Role we have to be aware of some facts and statistics
1. Nearly 95% of Microsoft Customers who used a Windows Print Server, used it in Clustered Mode. Standalone Print Servers was a very rare scenario.
2. In 80% of the Printing related problems and cases handled by the Windows Printing Team the root cause was a faulty printer driver. As a result Microsoft advised his customers to contact the Printer Driver Vendors and ask for help.
With the design change in Windows Server 2012 R2, 2016 and 2019 Microsoft even doubled the High Availability of the Spooler Service Process
We can define the precautions as follows :
1. Printer Driver Isolation for faulty printer drivers.
2. High Availability for the Spooler Service Process with Hyper-V Failover Clustering and Print Spooler Service Monitoring.
How and why Microsoft Printer Driver Isolation Mode was born ?
Because of this high amount of faulty printer drivers on the market and the result of the statistics above, Microsoft decided to implement the Printer Driver Isolation Feature. Customers who had a faulty printer driver on the hand and who couldn’t get help from his Hardware Vendor was obliged to use it till the Hardware Vendor provided a fix. With the Printer Driver Isolation Feature they had now the chance to run the problematic driver in an isolated mode.
As a result once a faulty printer driver misbehaved inside the spooler process other drivers and print queues were not affected anymore.
Why Microsoft removed High Available Print Services Role in Failover Clustering ?
The reason why Microsoft developed the Highly Available Print Services Role in Failover Clustering in 2003 was faulty printer drivers. From Microsoft’s perspective with the implementation of the Printer Driver Isolation Feature there was no need anymore to keep the Print Spooler Service Role.
Furthermore the “High Available Print Services Role in Failover Clustering” made only headache at Microsoft not because it was not good enough. On the contrary it was very well developed but the Printer Driver Vendors coudn’t develop properly working “Cluster Aware Printer Drivers“. As a result Microsoft decided to remove the “High Available Print Services Role” from Failover Clustering in Windows Server 2012 R2, 2016 and 2019.
Why were the Hardware Vendors not able to develop properly working Cluster Aware Printer drivers ?
The reason is as follows. If the printer driver can be installed via the Spooler API we can talk about an Cluster Aware Printer Driver. Once the driver gets installed via the Spooler API the driver components are forced to go into the
\Spool folder and nowhere else. Because of several compatiblity reasons Hardware Vendors don’t want to use the Spooler API to install it’s printer drivers. They want to save it’s driver components outside the
\Spool folder to hinder the overwrite of it’s own components. At this point the problem begins. With the Failover Clustering Feature in Windows Server 2012 and previous versions Microsoft only replicated the
\Spool Folder to the other Cluster Nodes. Everything else remained on the Node where you installed the driver. Once the Spooler Service failed over to another Node all printer related DLL’s outside the
\Spool folder couldn’t be copied to the other Cluster Nodes and the problems with printing begun.
Basically the reason of the “High Available Print Services Role in Failover Clustering” in Windows Server 2012 and previous versions of Windows Server was to provide a recovery and high availability of the spooler process after a crash because of faulty printer drivers. You should take into consideration that if a printer driver misbehaves inside the spooler service on Node A it will misbehave after a move on Node B too. From this perspective if we use the Printer Driver Isolation Mode on every Printer Driver this will provide us the same Level of High Availability like in Clustered Print Services Role too.
How to make your Print Spooler Service Highly Available in Windows Server 2012 R2, 2016 and 2019 ?
I will give you an overview how you should design your Printing Environment to make it Highly Available and Fault Tolerant as possible.
1. First a Hyper-V Cluster with at least 2 Node are required to run the Print Server VM.
2. Setup a Print Server as VM.
3. Configure Virtual Machine Monitoring on the Print Server VM to monitor the Spooler Service as described in the following Microsoft article.
To configure the service that will be monitored by the Virtual Machine Monitoring feature
3.1. Open Failover Cluster Manager on one of the nodes of the cluster, and connect to the cluster that you wish to manage.
3.2. Click the Roles node under the cluster name that you wish to configure. Each virtual machine that is clustered will display in the middle pane.
3.3. Right click the virtual machine that will be monitored and select More Actions, and then Configure Monitoring.
3.4. Select the Print Spooler from the list of services by checking the box next to it.
3.5. When successfully configured, the lower pane of Failover Cluster Manager should show Print Spooler listed next to Monitored Services when the HA Print Server is selected.
4. Create your Print Queues and run all Printer Drivers in an Isolated Mode with the below policy.
Navigate to (Computer Configuration > Administrative Templates > Printers > Override print driver execution compatibility setting reported by print driver). According to the operating system’s online help, “This policy setting determines whether the print spooler will override the Driver Isolation compatibility reported by the print driver. This enables executing print drivers in an isolated process, even if the driver does not report compatibility. If you enable this policy setting, the print spooler will ignore the Driver Isolation compatibility flag value reported by the print driver. If you disable or do not configure this policy setting, the print spooler will use the Driver Isolation compatibility flag value reported by the print driver.”
Now you are done.
Good luck !