Clustering over internet.

Is it possible to cluster ejabberd running on different windows machine which is geographically separated but connected through internet.

When using clustered

When using clustered ejabberd, reliability of the link between nodes is more important then the reliability of a node. Every time the link breaks you will end up with inconsistent database, and will have to repair it by hands.

When using clustered

I'm deploying the same configuratioon and have some problems on which I'd like to get comments.

Authentification, vcard storage, offline and roster were moved to Postgres DB with corresponding *_odbc modules, we want to move to Postgres as much as possible as this info will be used on web pages and to avoid problems with mnesia in future.
Nodes started with:
Node 1) erl -pa /usr/local/ejabberd/var/lib/ejabberd/ebin -name ejabberd@node1.domain.com -s ejabberd -ejabberd config \"/usr/local/ejabberd/etc/ejabberd/ejabberd.cfg\" log_path \"/usr/local/ejabberd/var/log/ejabberd/ejabberd.log\" -sasl sasl_error_logger \{file,\"/usr/local/ejabberd/var/log/ejabberd/sasl.log\"\} -mnesia dir \"/usr/local/ejabberd/var/lib/ejabberd/spool\" -setcookie XWDMRXPCDJPLPKZIEWJJ

Node 2) erl -setcookie XWDMRXPCDJPLPKZIEWJJ -pa /usr/local/ejabberd/var/lib/ejabberd/ebin -nam
e ejabberd1@node2.domain.com -s ejabberd -ejabberd config \"/usr/local/ejabberd/etc/ejab
berd/ejabberd.cfg\" log_path \"/usr/local/ejabberd/var/log/ejabberd/ejabberd.log\" -sas
l sasl_error_logger \{file,\"/usr/local/ejabberd/var/log/ejabberd/sasl.log\"\} -mnesia
dir \"/usr/local/ejabberd/var/lib/ejabberd/spool\" extra_db_nodes "['ejabberd@node1.domain.com']"

Nodes are connected and pinged succesfully, on Node2 mnesia tables are set to ram+disk or ram (none of them is remote in admin db web-page).
What I want is jabber serving one domain with users connected to differen nodes and consistent user namespace. Plus, conference service should run on each of them (with different DNS-names as clustering of muc is not possible in ejabber yet).
So, I guess I must setup Postgres DB replication of some tables (at least users, vcard and roster) between this nodes, because contact presence works only with mod_roster but not with mod_roster_odbc, users with the same names can be created on differents nodes (tkabber tries to kill another session though) and foreign vcard is not found.

Also, each node doesn't start if other is offline.

Is there any better way to do it right? Some caveats or advices? Howto or success story would be appreciated.

setcookie

Tarick wrote:

Is there any better way to do it right? Some caveats or advices? Howto or success story would be appreciated.

I do not have any experience, though I've some advice: do not use the -setcookie option. It's dangereous: when someone has access to an account on your server, he can see the cookie using ps, and this is a security risk.

--
sander

setcookie

We will use .erlang.cookie, thank you.

Re: Clustering over internet.

sarfaraz wrote:

Is it possible to cluster ejabberd running on different windows machine which is geographically separated but connected through internet.

You can just use IPsec. This is the simplest solution of your problem.

Syndicate content