[ejabberd] ejabberd clustering and SLB questions

Jan Koum jan.koum at gmail.com
Thu Sep 17 04:48:13 MSD 2009

hi there,

well, we finally launched our chat service and it is doing better than i
could have expected.  in fact, it is doing so well that i am now having
little anxiety attacks over the servers ability to handle the load:)  so
please tell me it will all be just fine:)))

currently i see ~200 connected users at a time and 'vmstat 1' is reporting
~80% idle CPU for now (server also does mysql, etc.)

btw, how many user connections can ejabberd handle without breaking a
sweat?  1000?  5000?  the machine is a Linux 2.4 (w/POLL=false) on Intel
Celeron 2.40GHz with 1GB RAM,  so my guess hardware will probably reach a
bottleneck before software does (but will be adding more RAM soon).. also,
the nature of service is such that people connect and disconnet a lot (vs.
long lived sessions) -- is there anything i should look at optimizing to
make sure frequent connects and disconnects to the server scale in addition
to connected users number?)

anyway... what i'd like to do now, right away and before it is too late, is
get two new servers and build a scalable ejabberd cluster into which i can
just pop additional machines as users grow... i looked at ejabberd docs and
how-to's on the web and still have a few questions.  for the sake of
argument, lets say that i will get two servers, im1.example.com and
im2.example.com and jabber domain of im.example.com (let's call old jabber
domain old-im.example.com)

1. if i cluster im1 and im2 nodes, will users registered on either one be
automatically replicated into the other, or should i always register on im1
and it will sync mnesia db into im2?

2. how does the "client connecting to server" fail over occurs?  right now
my users connect into old-im.example.com hostname (which is also the name of
jabber domain).  if i switch to using im1 and im2, will i need to modify
xmpp client to first connect to im1.example.com and if it is down, connect
to im2.example.com or for the sake of distributing the load, should client
randomly pick between im1 and im2 and try the other one if first one fails
to connect?

3. if i cluster im1 and im2 together for the jabber domain of im.example.com,
how do migrate data from the an old server that i have now?  all of my
current users are registered as
nickname at old-im.example.com<name at old-im.example.com>-- should i simply
old-im.example.com domain and use new im1 and im2 servers/nodes with the old
jabber domain name?

and also, while i understood clustering setup (Chapter 6.2), i was a little
bit unclear on SLB setup (Chapter 6.3) -- what are the components which the
document refers to and how can i use SLB to provide high availabilty?  seems
like that is what clustering itself is for, right?

thanks, i appreciate any feedback i can get from the experts.

-- yan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.jabber.ru/pipermail/ejabberd/attachments/20090916/2adca4b4/attachment.html>

More information about the ejabberd mailing list