The Identity Manager User Application comes with cluster support, and instructions to set it up using JBoss or Websphere. However, there is more to a High Availability Userapp solution than configuring a clustered cache. In this article, I will explain how to set up a HA Userapp cluster, and a HA front-end load balancer configuration using JBoss mod_cluster.
In summary, the architecture would comprise:
Without going into the details of a Disaster Recovery Plan or IP Switching configuration, this configuration can be deployed such that servers are split between data-centres, and in the event of a server going down, or even a whole data-centre, the Userapp will still be available.
An important thing to note about the configuration I will describe is that the UserApp servers do not "know" about the Apache servers, and the Apache servers do not know about the UserApp servers (i.e. they are not configured with each others DNS names or IP addresses), so adding capacity to the solution by adding another UserApp server, or moving one to a faster machine with a different IP address, does not require manual configuration of DNS names or IP addresses after installation.
The first step to achieve this "low configuration" cluster, is to create an install script to install the UserApp with a cluster configuration, and then update JBoss with the mod_cluster plugin. After that, we create a installer for the Apache Front-end.
Attached to this article is all the scripts and config files. Any binaries mentioned below can be downloaded from JBoss sites. If you cant find the JBoss in tar.gz format, install it from the installer that comes with the UserApp and tar it up. You wont need IP switches to test it out. All you need is two or four SLES 10/11 servers. You can install the UserApp and the Apache server on a single machine in a DEV environment.
The UserApp installer consists of the following files:
Only the env.properties and env.silent.properties files need to be copied and modified. For example, for a development environment, create dev.properties and dev.silent.properties and modify the values to suit.
When editing the .properties file, please note:
When editing the .silent.properties file, please note:
After running install.sh and verifying that the UserApp server is up-and-running, follow the Novell documentation for configuring the Userapp as the first of a cluster (in the Administration tab).
When everything is running, install another server. tail the log file /opt/jbossxxx/server/idm/log/server.log. If everything is working you should see the two servers join the cluster.
The front-end load balancer requires a SLES build without the Apache service, but with the wwwrun user and www group present.
The JBoss project (Redhat) provide a tar.gz package for mod_cluster that includes the directory structure and files for an Apache 2.2 installation with the mod_cluster module and pre-requisites configured. I.e. there is no RPM.
This installer simply un-zips the JBoss distribution to /opt, copies the apachectl command to /etc/init.d so Apache can start as a service, and sets up some environment variables for the mod_cluster module to use the correct UDP port and subnet.
This installer package consists of the following files:
For each environment (cluster), the .apache_lb.sh file simply needs to be edited to provide the unique UDP address to advertise on, and the subnet to accept registrations from, which should be the same as the server being installed. I.e. the Apache servers and Userapp servers should be in the same subnet.
When the installer finishes, it will start Apache. It will advertise to the UserApp servers, which should register with mod_cluster. Navigate to http://:6666/mod_cluster_manager and all Userapp servers should be shown. Navigate to http:///idm and the Welcome Page of one of the Userapp servers should be displayed.
The JBoss logs are in /opt/jbossxxx/server/idm/log/server.log.
The Apache logs are in /var/log/apache.
Google is your friend.
Editor's Note: When it comes to disaster recovery, Novell has some extraordinary offerings. Check it out.