Cluster over "weak link"?


i am currently evaluating jabber servers, mostly openfire versus ejabberd, and have a certain setup in

mind that i will need to deploy. In ejabberd it seems to be not possible, or rather not encouraged,

to cluster server over a “weak link”. Let’s say I have a server in china and one in europe, the one

in china is behind “the big firewall of china” and hence connection to the one server in europe

drops all the time. How would openfire (using the enterprise plugin, i guess) handle such situations?

What is the recommended way to deploy such a scenario given that i want to serve one

single domain and give every user the possibility to decide which server to connect to,

then using geoip or something to give them the best one for their area.

I guess this takes a central user database, and that might be a problem of it’s own with

the flakey connection but can be solved by caching or whatever. With ejabberd it seems

that the only way to “cluster” over a weak link seems to be s2s-connections on several

subdomains…if i have a central user-database that wouldn’t be a problem, but how would

china know that user@china now is logged in in europe…when it’s only s2s?

any ideas, directions, comments?

I’m also interested in clustering between diffirent continents, or at least for starters diffirent connection pipelines / ISPs… Is there possibility to do clustering trough internet? Not as much performance wise as it would be for fail-safe reasons. Eg one connection is down I’d still have another one left for service.


one should review the Oracle Coherence documentation but as far as I know it is designed for a cluster with gigabit connections.

With s2s you’d have ‘foo@europe’ and ‘bar@china’. ‘foo@europe’ can add ‘bar@china’ to his roster and will see when ‘bar@china’ s online and vice versa.

I have no idea how s2s behaves if the connection drops, the users have no chance to send an ‘unavailable’ packet to each other. And I wonder if Openfire or ejabberd are sending out ‘unavailable’ packets to their local users if they detect a broken s2s connection. If no ‘unavailable’ packet is sent both users believe that the other one is still online.


What I’ve also learned is that for working cluster computers needs to be in same domain, that’s doable, but them needs also to use same database, that is big problem with totally diffirent locations… Not to mention possible traffic needs.