Load Balancer - Need some help

There’s discussion in the documentation concerning using a load-balancer for front-end gateways. See link below.
https://docs.inductiveautomation.com/display/DOC79/Scale+Out+Architecture#ScaleOutArchitecture-LoadBalancing

This would imply that every participating gateway would need identical configurations in order for the clients not to “care” which gateway they get connected to in order to maintain a balanced load across gateways.
My question is, how is this load-balancing accomplished? I’m not seeing an option within Ignition to manage load-balancing. I’m also not seeing an option to automatically synchronize multiple gateways other than in a redundant pair setup. I’m also not finding any documentation that fleshes-out the actual implementation.
Now, I’m vaguely familiar with the concept of load-balancing happening on the DNS level (or something like that) external to the application itself. I just had someone set me up with a SQL cluster with load-balancing and I’m regurgitating the little bit that I picked-up from that. Is this how Ignition expects load-balancing to be implemented? If so, how are the various gateways synchronized?

Alright, I’m done guessing… Can someone explain how this is fleshed out for Ignition gateways? I’d very much appreciate it.

Yes, an external load balancer.

Manually. Via the gateway network and the Enterprise Administration Module. Or entirely manually, with gateway backups or scripted with a great deal of knowledge of the guts of Ignition.

1 Like

To expand a bit: we didn’t implement load balancing, because nothing we can possible implement will ever approach the feature set and reliability of a proven tool like nginx - load balancing HTTP traffic (which, ultimately, is all both Vision and Perspective use) is a “solved problem”, so we didn’t want to reinvent the wheel.

Project synchronization between gateways is something we plan on improving as a larger push to expand and improve EAM, but that will likely be in future major versions, not minor (eg, 8.1, 8.2 rather than 8.0.X)

2 Likes