"Pool Fill" load balancing
I'd like the ability in the load balancer to fill the assigned nodes in order up to a given number of concurrent connections.
So node A would have a given connection limit, and only when that was reached would new connections reach node B, and only when A and B were full would new connections go through to node C, and so forth - with a fail-over option for all subsequent attempts once the pool is filled.
This is a really cool idea and great feedback. While I can't promise implementation or a timeline, I've submitted this idea to our developers for review as a feature request. So that we can get a better idea of where you're coming from, do you have a specific use case for this type of failover?
In the meantime, it may be worth trying some of the current available algorithms (Least Connections, Round Robin, Source IP) to see if they address your need in terms of load-balancing. I've linked our NodeBalancer Reference Guide in case you haven't seen it yet.
And here's our guide on NodeBalancer set up/configuration:
Of course, if there are any additional features you'd like to see, we'd love to hear them. Just send any suggestions to firstname.lastname@example.org.
The experiment we ran yesterday was putting a pair of game servers being handled by our management system behind a node balancer. When users connected they ended up playing on either one or another node depending on which one was least occupied using the Least Connections mode. On a purely technical level this worked flawlessly.
For game servers however the preference is to have higher populations (thus higher number of connections to a single node) rather than to spread users out thinly across servers, while also maintaining continuity of service as servers become full. If you play MMOs for example you may have seen such a setup.
It'd also be nice to see UDP support for the load balancer again based on source/destination-IP stickiness, working on the assumption that a 'session' is maintained so long as at least one packet moves between the given node and client every N seconds.