M-Link Clustering & Reliability
On this page you'll find information on M-Link Clustering and network reliability. On other pages you'll find a general overview of Isode's M-Link XMPP Server, M-Link's use of Directory, security features, boundary controls using M-Link Edge, management tools and standards conformance.
Further information on Reliability and Clustering is given in the white paper “Reliable XMPP”.
The core XMPP client to server and server to server protocols use TCP streams of XML messages. In the event of connection failure, messages may be lost. This is not acceptable for a high reliability deployment. XEP-0198 provides an efficient acknowledgment mechanism to protect against message loss. M-Link is one of the first servers to support XEP-0198.
LAN and WAN Clustering
The core XMPP model is one server per domain. A single M-Link Server can support multiple domains, with delegated administration of users within each supported domain. XMPP Clustering is a technique to enable a single domain to be supported by multiple servers.
XMPP clustering is provided by some XMPP servers, using vendor-specific techniques but capabilities provided under the heading of 'clustering' vary widely between products so actual features need to be reviewed with care.
XMPP clustering needs to synchronize 'state' between servers to ensure that messages are routed to correct destinations and that presence information is correct.
It is also important that information from various services (Presence, Multi User Chat (MUC), and Publish Subscribe (PubSub)) are set on the local server where possible. For example, where MUC subscribers are on multiple servers, participant groups should be managed locally on each server, and messages sent directly to other local users without having to go to another server first. A related characteristic is that MUC and PubSub will continue operation in the event of any cluster node failing.
Isode's XMPP Clustering implementation is designed to work well for both LAN Clustering and Wide Area Clustering environments.
In LAN Clustering there are multiple clustered XMPP servers operating on a common fast highly reliable local network.
Clustering in this environment is important for large deployments, as it enables servers to be added to support load levels greater than can be handled by a single server. This horizontal scaling is important for service providers and large enterprises. It also provides reliability, so that service can continue in the event of failure (accidental or planned) of a server.
Wide Area Clustering
In Wide Area Clustering the XMPP servers are interconnected by links that may be slower and less reliable than a LAN.
There are various scenarios where this is important:
- Off site operation of a server, so that service can continue in event of site failure (Disaster Recovery).
- Support of organizations with multiple sites, so that a server can be run at each site.
- Support of a distributed military deployment with, for example, one server at HQ and another in the field.
Supporting Wide Area Clustering requires protocols and algorithms that will deal with wide area network throughput/latency and periods where connectivity is lost. Servers need to be kept in sync, but operations should continue as well as possible when there are network failures.
Having a server close to a client with good connectivity will give a fast and robust client experience. It is important that local traffic is optimized, and does not switch between servers except where needed. Handling traffic locally to a server without unnecessary switching is particularly important for Wide Area Clustering.