Hey all!
I'm interested in clustering solution.
My situation:
2 branches, about 500 users.
I need to deploy redundant IM system, supporting voice and video(if not - not so crytical). The system must be available from inside and outside.
As I read voice and video - it's jabber client question, not ejabberd.
But clustering.. Well, in documentation this chapter covered is not good. I'm interested in design of clustering.
The best as i see - 2 server in cluster in one branch office, and another 2 cluster servers in another branch office.
Is it possible? Or i missed something?
All connections will go through which branch? If Internet connection is down and one branch office is offlin, how outside users will know that they must connect to other office?
With 500 users what database should i use - build in with ejabberd or external like mysql? What about clustering ejabberd that using external databases(in documentation no word about it)?
What hardware requirements i need to serve 500 online chatting, chat consfering, audio and video consfering?
Thanks in advance!!
Cluster & WANs
ejabberd has issues with unstable connections between nodes so connecting between both offices wouldn't work.
You would be better served by using a sub-domain for each branch office ( west-coat.abc.com, east-coast.abc.com ) and facilitating connections using S2S between the two. At each office you could make use of a multi-node cluster and distribute connections through a load balancer or DNS round-robin.
I make use of mnesia (the DB 'engine' that ejabberd uses) as it clusters nicely and find the ODBC implementation for multiple virtual-hosts in ejabberd to be lacking. I would assume that each node would just connect to the same DB server & database and let the DB Server handle the locking and requests handling.
thanks for your reply! If
thanks for your reply!
If user1 belongs to west-coat.abc.com and if west-coat.abc.com is down due to internet provider, so user1 won't be able to connect to east-coast.abc.com and continue chatting? thinking that user1 is user from internet.user1@east-coast.abc.com and user1@west-coast.abc.com ? But user1 will need to change it's JID before connecting to east-coast.abc.com or west-coast.abc.com and need somehow to synchronize contact list..
Or i need to make 2 accounts
This looks not good design for me..
What king of isues are there in clustering over wan?
It is impossible.
If user1 registered at node1, when node1 is down. He can go to node2. But he has to register at node2.
The only benefit of clustering is that when both node1 and node2 are up, user1 at node1 can invite and chat with user2 at node2.
Me, too, wish register at one node of the cluster should automatically register at all nodes of the cluster.
Another question
When you add more than two servers, do you need to put every server in the shared node field, and also in the .hosts.erlang file?
You can try ODBC postgresql
I tried but I do not like the way it relies on one master database. And there could be some other problems. You have to test yourself.
All you have to do is to replace mnesia with ODBC postgresql. All nodes connect to one database. When the user register at one node it will register at all nodes because they share the same database. (Also you have to set up Mnesia cluster. The rest of the tables have to be done by Mnesia. This is what I did and this is another thing why I do not like external DB).
I am using internal mnesia now. User has to register at all nodes.