Ejabberd Clustering understanding-Collection of common programming errors
“Load balancing” is not what you are describing in your question.
In load balancing, a incoming connections are distributed in a balanced fashion over multiple nodes. This is so that no one server has too high a load (hence the name “load balancing”). It also provides fail-over capability if your load balancer is smart enough to detect and remove dead nodes.
A smart load balancer can make it so that new connections always succeed as long as there is at least one working node in your cluster. However, in your question, you talk about clients “maintaining the connection”. That’s something quite different.
To do that, you’d either need the connection to be stateless or you’d need each client to connect to all nodes. That’s not how XMPP works: it’s a stateful connection to a single server. You must rely on your clients to reconnect if they get disconnected.