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?
- 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.