How to load balance user connections between ejabberd nodes ?

First, I think my 2 ejabberd nodes are properly configured (all in a windows environment). I can control them and I can see them in the WebAdmin http page.
What I can see:
- The user can only connect to the first node. It is not possible for them to connect to the second node, even if I change the domain ip address (from node1 to node 2) in the hosts table of the end user station.
- The WebAdmin http page states that all connected user are assigned to the first node....so I don't understand the aim of my clustered nodes.
- The second node does not listen on 5222 & 5280 ports. Only the first does ! Did I miss something ?
- The documentation deals with load balancing but only for the ejabberd features....not the listeners (franckly I do not really understand this section).

I already read from some forum that SRV records (DNS server) or TCP/IP Load Balancers could help me to achieve a proper NLB. But I do not understand why it is not possible to directly connect to the second node. Does it mean that the first node remains the only entry point for the clustered system? and that if the first node dies, the other nodes are no more accessible from a user stand point ?

Is there somebody that could help me?

Use haproxy as a load

Use haproxy as a load balancer and send connections to both servers

Since the connections are

Since the connections are persistent, wouldnt it over-load the only LB? Because the connections are being routed via the LB, hence all the connections goes through the LB. Am I right here?
For eg:- Consider the following architecture. I've 3 ejabberd nodes in a cluster and 1 LB(with haproxy). Now when the load is high, ie over 1M+ connections, will the LB be able to handle all the 1M+ connections on its own? By handling all the connections, I mean the connections are being routed through LB and are persistent, hence LB will be overloaded.

What are your thoughts?

Syndicate content