CUPS LoadBalancing

Hey folks

I have a centralized CUPS server running on Rocky 8 with approx 50 printers, and have this shared out to a number of different clients (largely ‘host’ systems running our ERP software), all based on Rocky 8 and everything works nicely. cups version is cups-2.2.6-62.el8_10.x86_64 on clients and server.

Recently I’ve been trying to add an additional CUPS server, mainly for continuity reasons. To do this I followed the Redhat docs on setting up a centralized print server, and following this I noticed a few configs that needed tidied up to match the recommended setup. We have been using the existing centralized server for approx 3 years with no issues.

cupsd.conf on centralized server and clients

#
#
# Configuration file for the CUPS scheduler.  See `man cupsd.conf' for a
# complete description of this file.

# Log general information in error_log - change 'warn' to 'debug'
# for troubleshooting...
LogLevel warn

# Deactivate CUPS' internal logrotating, as we provide a better one, especially
# LogLevel debug2 gets usable now
MaxLogSize 0

# Increase number of max active/remembered jobs from 500 to 2000.
MaxJobs 2000

# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
ServerAlias *

# Show shared printers on the local network.
# Enable printer sharing and shared printers.
Browsing Off
BrowseOrder allow,deny

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Informational, for web interface
ServerAdmin #SNIP#

# Restrict access to the server...
<Location />
  # Allow remote administration...
  Order allow,deny
  Allow @LOCAL
  #SNIP#
</Location>

# Restrict access to the admin pages...
<Location /admin>
  # Allow remote administration...
  Order allow,deny
  Allow @LOCAL
  #SNIP#
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  # Allow remote access to the configuration files...
  Order allow,deny
  Allow @LOCAL
  #SNIP#
</Location>

cups-browsed.conf on clients

BrowseProtocols None
BrowseLocalProtocols None
BrowseRemoteProtocols None
BrowsePoll cupsserver.localdomain
BrowseOrder Allow,Deny
LocalQueueNamingRemoteCUPS RemoteName
LoadBalancing QueueOnServers
HttpLocalTimeout 5
BrowseInterval 2400
BrowseTimeout  12000
DebugLogging file
LogDir /var/log/cups/browsed

I notice when I set the Browse…Protocol settings to None, CUPS no longer seems to honour the LoadBalancing QueueOnServers setting, which then causes print jobs to queue on the client, causing a ~5 second delay between print jobs. This isn’t an issue for most of our printers, but we do have a few high volume invoice printers and the delay is causing some grief.

If I set BrowseProtocols CUPS dnssd, the jobs spool from the clients almost immediately and queue on the server, but I don’t think this allows me to use the printer clustering.

Have I missed something with the config, or is the LoadBalancing setting not honored in this configuration?

Thanks
Mike