Search
The Open Source SLEE and SIP Server

Mobicents Sip Servlets

Mobicents Sip Servlets Failover support

This page is obsolete : More detailed and better looking installation instructions are available from the Mobicents Sip Servlets User Guide

Description

For a good description of Mobicents fail-over system (and even give us some feeback about it), I invite to read the Mobicents SIP High Availability and Clustering document .
You can only read Section 1 and 2 since following sections are for jslee.
We will cover the Mobicents Sip Servlets specific failover implementation, configuration and an example below.

Implementation

As in Mobicents JSLEE, Mobicents Sip Servlets uses no standby nodes, so typically in this configuration proxies/registrars will need to share the user location table by using a database cluster.

The Mobicents Sip Balancer (Sip Call-Id aware load-balancer) will be used as the man in the middle, forwarding (transaction statefully) requests to any of the different nodes of the cluster.

This implementation has many pros :

  • No need for standby nodes, because the remaining nodes take over the load of the failed node as both the Mobicents SIP load Balancer and Mobicents Sip Servlets support mid-call failover.
  • No need to make sure requests are directed to the right node, as all nodes can serve requests to any users
  • All hardware is in use, reducing costs
  • Maintenance is easier, as all nodes have equal configurations

Installation & Configuration

Please refer to Mobicents SIP Load Balancer and Mobicents Sip Servlets Clustering . Both combined will make mid call failover available for your application.

Step-By-Step Examples

Cluster spread on 2 machines

We provide an example to run the Mobicents Sip Servelts cluster (comprised of 2 nodes), the load balancer and client application on different machines.

Please checkout our clustering and mid-call failover example and follow the README-network.txt instructions.

Cluster on the same machine

We provide an example to run the Mobicents Sip Servelts cluster (comprised of 2 nodes), the load balancer and client application on the same machine for ease of testing purposes.

Please checkout our clustering and mid-call failover example and follow the README.txt instructions.

Here is the modifications needed to run two application servers running at the same time on the same machine. (Those steps are done in the above example as part of the prepare-jboss-server-for-clustering-failover.sh script)

As we need two application servers running at the same time, we must avoid any conflict. For instance we will need JBoss Tomcat to bind its socket on two different ports otherwise a network conflict will occur. We will leverage the service binding manager this chapter of the JBoss AS documentation.

The first step is to copy the all configuration of JBoss into two separate configurations that we name ports-01 and ports-02 :

cd JBOSS_HOME/server
cp -r all ports-01
cp -r all ports-02

Edit the file JBOSS_HOME/server/ports-01/conf/jboss-service.xml and uncomment the service binding manager :

<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager" >
<attribute name="ServerName">ports-01</attribute >
<attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute >
<attribute name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute >
</mbean >

Edit the file JBOSS_HOME/server/ports-02/conf/jboss-service.xml , uncomment the service binding manager and change the value ports-01 into ports-02:

<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager" >
<attribute name="ServerName">node-02</attribute >
<attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute >
<attribute name="StoreFactoryClassName">org.jboss.services.binding.XMLServicesStoreFactory</attribute >
</mbean >

Limitations

Mobicents Sip Servlets currently support mid call failover for converged applications and pure sip applications (Uas, Uac, B2BUA, Proxy).
However failover support for dialogs not yet established is not supported.