Saturday, January 17, 2009

Upgrading Sun Java System Directory Server Enterprise Edition to version 6.3

Introduction

As part of my network infrastructure I also deployed an instance of Sun Java System Directory Server Enterprise Edition (JSDSEE from now on). I chose to download and install it with the Sun Java Enterprise System (JES from now on), which at the time of writing has reached version 5 update 1, which ships JSDSEE 6.2.

Installation of this and other products with the JES installer went smooth on my Solaris 10 update 5 instances and the services were deployed, configured and up and running in a question of minutes.

Some weeks ago we had an abrupt server shutdown the same day I was adding some entries in the LDAP server. When the server went up it was no big surprise to me discovering that the LDAP database was corrupted and the only options I had was restoring from a backup, which I had obviously done. Again, the service was restored in a matter of minutes.

However, I discovered by chance that JSDSEE 6.2 is affected by a bug that, in certain conditions, may result in data loss and database corruption. The bug report can be examined at Sun Solve website at this address: JSDSEE bug #6642430. The bug has been resolved but it implies upgrading JSDSEE from version 6.2 to version 6.3.

Getting the software

When it comes to getting the software, you are presented these options:
  • Sun Java Enterprise System distribution
  • native packages distribution
  • zip distribution
The JES installer installs its products with native packages and I usually prefer to use this method rather than install zip distributions and carefully tracking down the details about every software I installed. In this case is that the native package distribution is a patch to apply to a previous JSDSEE installation.

Differences between the distributions

The differences between the distributions are described in the document Sun Java System Directory Server Enterprise Edition 6.3 Administration Guide. It's not obvious, because the documents I read first, Sun Java System Directory Server Enterprise Edition 6.3 Release notes and Sun Java System Directory Server Enterprise Edition 6.3 Installation guide, tell nothing about this.

Java Enterprise System distribution

Basically, the JES installer is a native package distribution, but it still delivers just JSDSEE v. 6.2, and you can only rely on a patch to upgrade JSDSEE to v. 6.3. The JES installer, also, does not provide the Directory Server Resource Kit, which is provided by the zip distribution. The JES installer is a GUI tool which facilitates the installation of the components delivered with JES and it also facilitates the shared components used by the products in the suite. The JES installer must be run as root because the products are installed as native packages.

Native patches

The native patches must be run as root, too, and let you upgrade your existing JSDSEE installation to version 6.3. As I'll tell in the following sections, these installation method is not supported on Solaris Express or OpenSolaris.

Zip distribution

The zip distribution is a non-root self-contained distribution which can installed by anyone. Multiple version of the product can then be installed at the same time. The drawbacks of this kind of distribution is that the system administrator is responsible of having these services start at system boot and that whoever installs them must keep a detailed log of every installed product.

Test run on Solaris Express Community Edition

Before upgrading a production server, I always test the installation on another machine. Unfortunately I had no such machine at hand so I decided to test the installation on Solaris Express Community Edition (SXCE from now on) build 103. I'm using SXCE because the JES installer was not running properly on OpenSolaris 2008.05 so I switched some development machines to SXCE to be able to use these kind of Sun distributions.

The JES installer went smooth on SXCE and I also replicated the LDAP database on the test machine. Unfortunately, when it came to run the patches, I was caught in a sort of patch hell because I found no way to install the required patches on it without having patchadd complaining about packages' versions or dependent patches. After losing and entire night trying, I decided to switch to Solaris 10.

Patching JSDSEE 6.2 on Solaris 10

This time, everything went absolutely smooth. I just followed the recommendations on the Sun Java System Directory Server Enterprise Edition 6.3 Installation guide and I just ran the following commands in this order (be aware that these patch numbers are relative to Solaris 10 x86/AMD64). The list of patches is available here.

Stopping the services

After patching, all the services must be shut down. First I stopped the Directory Server Control Center
# dsadm stop /var/opt/SUNWdsee/dscc6/dcc/ads
the I stopped the JSDSEE instance I previously registered with SMF. This step depends on your installation.

Upgrading shared components

I installed the following patches taking care of following the special instructions included with them (if your system is not Solaris 10 AMD64 please check this):

Installing the patches to version 6.3

The patches to install on Solaris 10 AMD64 are these (be aware that the localization patch must be installed before the JSDSEE v. 6.3 patch):

Conclusion

After installing these patches and restarting the JSDSEE services, everything was up and running. Since now on, I'll always have a Solaris 10 installation to test these kind of setups because it's not the first time I have problems with Sun packages on SXCE or OpenSolaris.

No comments: