[ejabberd] Clustered deployments
carlos.abalde at gmail.com
Wed Jul 15 13:48:41 MSD 2009
I'm curious about a statement I've read in ejabberd 2.0.0 release notes:
"New front-end and back-end cluster architecture for better scalability
and robustness. Back-end nodes are able to run a fully fault-tolerant
XMPP router and services, but you can now deploy many front-end nodes to
share the load without needing to synchronize any state with the back-ends."
I understand the general idea: create several ejabberd clustered
domains, probably one per jabber domain, deploy as much clustered FE
nodes as needed, basically running c2s, receiver, http and http_bind
user processes, and finally deploy as much BE traffic routing nodes as
needed (part of the same Erlang cluster as FE nodes).
I guess the idea is to run C2S and HTTP components in FE nodes (yes,
easy to setup) and run routing components (global router, local router,
session manager and S2S manager) only on BE nodes. Here comes the first
question: how to set up a ejabberd FE node to forget about routing stuff
and focus only on handling client requests, and, at the same time, how
to set up ejabberd BE nodes to run only routing stuff? Is it possible?
Has it any sense?
The second question is related with the las part of the statement:
"share the load without needing to synchronize any state with the
back-ends". I don't understand this. BE and FE nodes are running in the
same cluster, sharing, for example, session tables. Therefore they are
always synchronizing their states. Aren't they?
Finally, anyone can share his/her experience setting up mnesia table
fragmentation with ejabberd. Any advise of useful hints?
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 197 bytes
Desc: OpenPGP digital signature
More information about the ejabberd