Using Openfire for distributed XMPP-based video-chat
- by Yitzhak
I have been tasked with setting up a distributed video-chat system built on XMPP. Currently my setup looks like this:
Openfire (XMPP server) + JingleNodes plugin for video chat
OpenLDAP (LDAP server) for storing user information and allowing directory queries
Kerberos server for authentication and passwords
In testing with one set of machines (i.e. only three), everything works as expected: I can log in to Openfire and it looks up the user information in the OpenLDAP database, which in turn authenticates my user with Kerberos.
Now, I want to have several clusters, so that there is a cluster on each continent. A typical cluster will probably contain 2-5 servers. Users logging in will be directed to the closest cluster based on geographical location. Something that concerns me particularly is the dynamic maintenance of contact lists. If a user is using a machine in Asia, for example, how would contact lists be updated around the world to reflect the current server he is using? How would that work with LDAP?
Specific questions:
How do I direct users based on geographical location?
What is the best architecture for a cluster? -- would all traffic need to come into a load-balancer on each one, for example?
How do I manage the update of contact lists across all these servers?
In general, how do I go about setting this up? What are the pitfalls in doing this? I am inexperienced in this area, so any advice and suggestions would be appreciated.