EMG 6 and High Availability Print

The EMG perception of HA is when additional, redundant, nodes are added to an existing node in order to improve reliability and possibly performance. The mechanisms involved are fail-over, load balancing and clustering.

Each EMG node in a HA environment needs to be properly licensed.


The process where a primary node handles traffic until it goes down and another, secondary, node then takes over is called fail-over. This can be accomplished, for example, by putting two EMG instances behind a load-balancing hardware that detects when the connection to the primary node goes down and then switches over to the secondary node which is in "hot standby". In this scenario there is only one active node at any given time. By default when an EMG node goes down all messages within that node are lost. This is not the case when using message persistence which is discussed later in this document.

Load balancing

The process of load balancing is when messages are sent via the available nodes alternating between the nodes in order to spread the load. When "round robin" is used as load balancing algorithm message 1 is sent through node 1, message 2 via node 2 and so on until the number of nodes are exhausted and then it starts with node 1 again.

Load balancing can be divided into two different scenarios: Outbound and inbound.

Outbound load balancing

With outbound load balancing we mean that messages are load balanced when sent out from one EMG instance, usually between two or more available SMSCs.

Inbound load balancing

Inbound load balancing is when incoming messages from client applications are load balanced between two or more EMG instances.

Load balancing caveat

In general there are no problems with load balancing SMS messages at any level since they are usually independent of each other. However, concatenated SMS, where a longer message is split into multiple SMS, can be a problem in that some handsets may not able to reassemble the parts into the original message if the parts has been sent via different routes. For outbound load balancing in EMG this is solved by CMR (Concatenated Message Routing) which ensures that two different parts of the same message are always forwarded via the same connector to the same SMSC. For inbound load balancing this is not possible, as two EMG instances do not know about each others routing decisions.


EMG 6 has the abillity to use a shared message store so that multiple EMG nodes can share message queues and operate in "active-active" mode.

Message persistence

EMG 6 can either persist messages in file system or use MongoDB (http://www.mongodb.org) as a message store. In order to work in "active-active" mode MongoDB is required.

Earlier versions of EMG could only persist messages in file system and thereby could only be used in "active-passive" mode.