What is it?
Network load balancing is the ability to split incoming traffic, for a particular service, across multiple backend servers. A common example of this is a web server farm, where users will connect to a website and their requests are spread across multiple servers all hosting the same web address.
Why use it?
This solution allows the customer to build an environment that can be scaled, based on their company’s needs and demands. In the event that one server goes offline the other servers take up the load to continue providing the relevant services to the end users.
This then can make it easy for a server administrator to quickly spin up new servers, should demand exceed current capability. It also provides some redundancy in the system to stop the server being the single point of failure.
A network load balancer can also be used as a bridge between networks. This will help to keep your clients and servers apart and limit the users access to your backend servers through this device.
How does this solution help with printing?
Just as a web server farm can allow multiple requests to be split across multiple web servers, we can achieve the same scenario with print jobs. It is possible to configure a load balancing device, such as a F5 or Netscaler device, to accept incoming print requests and split those incoming request across multiple print servers.
Network load balancing can be useful in a customer environment where there are large numbers of users constantly printing, or where there are large print jobs being frequently produced.
Implementation of the load balancing can allow system administrators an easier method for print administration and a flexible approach to the print environment. There are a couple of different ways in which PaperCut can operate with these devices.
As you may be aware PaperCut can be installed as a primary server, secondary server and a site server. The primary server is the installation of the main PaperCut application, which is where the software is managed from.
The basic setup for a load balancing scenario will consist of the following:
Above, the PaperCut Application Server is installed behind the network load balancer with a number of secondary print servers. Each secondary print server is connected to the Application Server and will be configured with all available print queues.
For example, if you have five printers in the network (Printer1, Printer2, Printer3, Printer4, Printer5), then each secondary print server would have a print queue for each of these five printers.
The network load balancer can then be configured to accept the print traffic from client machines and redirect them to any backend secondary print server.
In most cases you will now configure a DNS Name that references the front end IP address of the load balancer.
Clients will use that DNS name to reference the printers. Eg: If we created a DNS name for the network load balancer of NLB, then clients would connect to the following print queues:
When a user then chooses to print to one of these print queues (for example, NLB\Printer1), the job will be redirected by the load balancer to one of the secondary print servers. Which means that the job may end up on any of the four secondary servers (depending on how the load balancer has been configured).
The Application Server will see each of the secondary servers and the associated print queues individually and will release the job to the appropriate printer as required.
If Secure Print is being used, the job will be redirected by the Application Server to the correct printer when the user logs into the device. Otherwise the job will not be held at the server and instead be directly printed to the printer.
Does it work with Find Me Printing?
If you are using Find Me printing, you need to configure an additional queue on the secondary print servers. This queue will be your virtual “Find Me” queue. Replicate this across all secondary servers, so that each secondary server has this as an available print queue.
The mapped print queue to the end user would be NLB\Find Me, instead of mapping each printer individually. The network load balancer can now be configured to redirect the incoming “Find Me” queue to one of the four servers located behind it.
From the Application Server level you will now be able to see four different Find Me queues and the PaperCut software will report on each one individually. Since we see each queue as a separate instance we can take our solution one step further and configure server affinity for the print queues. This will then ensure that the server that receives the print job, will also be the same server that sends the job to the printer.
We want to configure server affinity because it will then ensure that we reduce network traffic. This is achieved by stopping jobs from being received by one server (eg: server1) and then be transferred to another server (eg: server4) to then be released to the printer.
Without Server Affinity
With Server Affinity
To configure server affinity, we need to conduct a few steps in the PaperCut Admin Interface:
- Log into the PaperCut Admin Interface
- Go to Printers
- Choose one of the Find Me queues (eg: Server1\Find Me)
- This should be configured as a virtual print queue
- In the Job Redirection settings, choose the printers on this server that you want to be able to release jobs to, from the Find Me queue.
In our example we would choose server1\printer1, server1\printer2, server1\printer3, server1\printer4 and server1\printer5.
- Save the settings.
- This will now ensure that if a job comes into the Find Me queue on server 1 it can only be released to a print queue on this server.
- Repeat the above steps for your remaining Find Me queues, ensuring that you only select the output queues for each relevant server.
Now that we have set the system to only allow it to release print jobs to the queues on the server that it has been received on, we need to check to ensure that we have configured each device to check all four Find Me queues to look for jobs.
- Go to Devices
- Choose your first Device that you want to use the Find Me option with
- Scroll down to Print Release and ensure this option is selected
- In the queue list, select the four virtual Find Me Hold/release print queues
- Save these settings and repeat for the remaining devices
This will now ensure that each device will check the Find Me queues on all four servers to look for any waiting print jobs for each user.
From the end users’ perspective they are looking at a single print queue when they print. When they release their print jobs it all appears to be a single print queue as well. However, their print jobs could be all on one server or spread across multiple servers.
This is a great solution to implement on a customer site to provide some redundancy against a single print server failing. It also allows for a scalable and easy to manage solution.
Keywords: Network, Load, Balancing, Balancer, F5, Citrix, Netscaler