While working on an Identity Management Solution, I came across an LDAP directory service called OpenDS. This LDAP Directory Service is an open source solution based on JAVA. Due to the company standards, it was required to create an OPENDS Cluster.
After a lot of research on this topic I came to understand that the OpenDS provides scalability by supporting different replicated topologies for large deployments. It however does not support any Clustering. The documentation about the product was minimal and it did not help.
My first step was to find out a way to seperate the OPENDS installation files from its instance files. The main aim behind this was to keep installation files locally on each Server. The installation files are used to invoke the OPENDS and are usually static in nature. The instance or database files are the ones which change frequently and the latest copy has to be accessible by either of the nodes – hence on a Shared Drive. The OPENDS contains a file instance.loc which allows us to seperate the location of the OPENDS instance.
I decided to dive into the Windows Failover Clustering to get the OPENDS configured on a Cluster.
I started off by placing the OPENDS on a Clustered Network drive and then installing the solution on both the Servers – one by one. What I noticed was that OPENDS Database was getting locked on the failed node and only after I change the ports in the config file I was able to restart the application on the other node. This meant every time a server failover occured, the Port was required to be changed and the instance needed to be re-started. The port was also required to be changed on all the locations referencing it. This was quite tedious, if handled manually.
After observing the nodes closely during the Failover, I noticed that the JAVA process gets locked when the Server Failover occurs. This behaviour can be controlled in a Windows Failover Cluster by configuring a Generic Script resource in Cluster.
The Generic Script resource requires a script to be created which can handle the following functions: Online, Offline, LooksAlive, IsAlive, Open, Close and Terminate. We require a script that will check the presence of the JAVA.exe process on the node on which the OpenDS is trying to come online. If the JAVA process exists, then we will kill the JAVA process and then execute a on-demand scheduled task to run the OpenDS startds batch file.
We will be performing the following activities to configure the OpenDS Application on a Windows Failover Cluster:
- Extract OpenDS locally on both the Cluster nodes.
- Prepare a Network Drive to be assigned for OpenDS Cluster
- Decide on Name and IP Address that will be assigned for the OpenDS Cluster
- Create a Visual Basic Script to be used as a Generic Script Resource
- Create an On-Demand Scheduled Task on each Cluster node
- Move the Instance files to the Network Drive of the OpenDS Cluster
- Change the instance.loc files on all nodes locally
- Modify the config file on the Network Drive
- Create and Start the Generic Script Cluster
- Simulate and Test Server Failure
The Part 2 of this series will cover the above mentioned steps. Click on the below link to access the Part 2 of the series.