News, tips, partners, and perspectives for the Oracle Solaris operating system

Java Messaging Server 6.3 now supported on Sun Cluster 3.2

Guest Author

Java Messaging Server(MS) 6.3 is now supported on Sun Cluster 3.2.  The qualification of Java Messaging Server on SC3.2 has been completed on sparc and x86 platforms.  Java Messaging Server(MS) is an Internet messaging server that provides support for several email protocols like IMAP, POP3.

The Sun Cluster High Availability agent for Messaging Sever makes the application highly available in Sun Cluster environment.  The Sun Cluster agent provides methods to start, stop and monitor the Java Messaging server application.  It constantly watches the watcher process of MS, under PMF (Process Monitoring Facility).  If the watcher dies, it restarts/failsover the watcher. Since the watcher process is the single point of failure, it is made highly available.

Java Messaging Server 6.3 High Availability agent is now certified on Sun Cluster 3.2.  What does this mean?  Some of the most important Solaris features like ZFS(Zeta File System) support, Solaris 10 non-global zones are now available with MS 6.3 HA agent. These features are very attractive to Messaging Server customers, especially ISPs since internet messaging server demands effective space usage and 7x24 availability.

Now that we have non-global zone support for MS 6.3, we shall take a look at configuring MS 6.3 HA agent on Solaris 10 non-global zones.

Note: This is not a complete Java Messaging Server 6.3 installation/configuration. I have described below only the pre-configuration and post-configuration steps for running the agent in Solaris 10 non-global zones.

An example HA MS configuration would look something like this:

A two-node cluster say Node1 and Node2, with a sparse root zone Zone1 installed on Node1 and a whole root zone Zone2 installed on N2.


1. Install messaging server 6.3 Binaries on all the cluster nodes(here, Node1 and Node2).  Refer for installation: http://docs.sun.com/app/docs/doc/819-7560

2. Install LDAP server 6.1 and make it HA.

3. Install the Messaging Server HA Agent Package, SUNWscims on all the Cluster Nodes.

4. Install and boot the non-global zones, Zone1 and Zone2.

5. Create and enable a failover resource group with Logical hostname and HASP resource for ZFS with non-global zones in the Nodelist.

   ex: # clresourcegroup create -n Node1:Zone1, Node2:Zone2 mail-rg

        # clreslogicalhostname create -g mail-rg -h loghost

        #clresource create -g mail-rg -t SUNW.HAStoragePlus -p

       Zpools =ms-zpool -p AffinityOn=TRUE

       # clresourcegroup online mail-rg

6. Execute "Configure" script on one of  the cluster nodes(say Node1 in this example).

7. Execute "useconfig" and "ha_ip_config" on all the secondary cluster nodes(Node2 in this example).

    ex: Path to the scripts: /opt/SUNWmsgsr/sbin/useconfig and /opt/SUNWmsgsr/sbin/ha_ip_config

The following two sections describe the configuration of Java Messaging Server 6.3 in non-global zones:

1. Sparse root zone(Zone1):

    1. If the MS 6.3 is installed in the global zone, the packages (SUNWmsgsr and SUNWscims) would be inherited to the non-global zone. This would, essentially, mean the /opt directory where MS installation exists, will be inherited to the zone.

    2. Switch the HASP resource and Logical Host resource to come online on this zone Zone1.

        ex: clresourcegroup switch -n Node1:Zone1 mail-rg

    3. Run "useconfig" and "ha_ip_config" on this zone.

2. Whole root zone(Zone2):

    1. As the whole root zone does not inherit SUNWmsgsr packages from the global zone, messaging server 6.3 must be installed on the whole root zone. Install MS 6.3 binaries as indicated in the MS 6.3 installation procedure. Refer for installation: http://docs.sun.com/app/docs/doc/819-7560

    2. Switch the HASP resource and Logical Host resource to come online on this zone Zone2.

        ex: clresourcegroup switch -n Node2:Zone2 mail-rg

    3. Run "useconfig" and "ha_ip_config" on this zone.

The following steps describe creating and enabling an Messaging Server resource and a few tests to demonstrate how Sun Cluster keeps the messaging server highly available.

1. Create MS resource:

    ex: # clresource create -g mail-rg -t SUNW.ims -p IMS_serverroot=/opt/SUNWmsgsr -p


2. Enable MS resource:

    ex: clresource enable mail-rs

3.  "clresourcegroup status" would display the resource status online on one of the non-global zones.

4.  Failover the MS resource to another zone node.

    ex: clresourcegroup switch -n Node1:Zone1

5. Try killing the watcher process and observe watcher process getting restarted.

For more information on Installation and Configuration of Sun Cluster HA Messaging Server 6.3 agent, refer to http://www.sun.com/bigadmin/features/hub_articles/message_srvr_cluster.pdf

Sun Cluster Engineering

Join the discussion

Comments ( 7 )
  • Parathi M. Friday, August 24, 2007

    Why isn't the code to the messaging platform available via open source? I would love to use it, but not without an acceptable license or community commitment.

  • jrmy Monday, August 27, 2007

    Great News!! Cluster 3.2 and JSMS 6.3 is an unbeatable combination!!

    Just want to make sure, but it sounded like you stated iMS 6.3/SC 3.2 and ZFS is now supported? Last I heard it was going to probably be next year before ZFS was going to get supported...

    Thanks for the news!

  • Swathi Monday, August 27, 2007

    The Sun Cluster HA Java Messaging Server 6.3 agent has been qualified with ZFS.

  • Swathi Monday, August 27, 2007

    As of now, we are not sure about the open source plan for Java Messaging Server.

  • guest Friday, February 1, 2008

    Damn problems...

    I managed to configure the whole cluster, and Messaging server gets started, but when I manually kill any process (pkill imapd) it doesn't get restarted.

    # clrs status ims-rs

    === Cluster Resources ===

    Resource Name Node Name State Status Message

    ------------- --------- ----- --------------

    ims-rs msgb1 Online Online - Service is online.

    msgb2 Offline Offline

    # pgrep imapd


    # pkill imapd

    # pgrep imapd

    # clrs status ims-rs

    === Cluster Resources ===

    Resource Name Node Name State Status Message

    ------------- --------- ----- --------------

    ims-rs msgb1 Online Online - Service is online.

    msgb2 Offline Offline


    I looked at the logs, enabled debugging, but no errors there....

  • Swathi Sunday, February 3, 2008

    The HA agents behavior was never intended to monitor the iMS daemons.The watcher, an iMS process, is responsible for monitoring the iMS daemons and determining whether or not they are functioning properly. The HA agents responsibility is to monitor the watcher and any other underlying resource groups.

    The watcher has in-built intelligence that can determine whether or not a process has crashed or is unresponsive, and will take action accordingly. This functionality is useful even in a non-clustered environment, which is why it is part of the watcher instead of the HA agent.

    Right now there is a Messaging Server Process called the msprobe, which probes all of the Messaging Server processes. In case a particular process is unresponsive, the watcher re-starts that particular process.

    For example:

    If imap process has very low response, it will notify the watcher to re-start imap process. And the Sun Cluster framework, which monitors only the watcher is unaware of this. But the ultimate purpose of a slow-daemon being restarted is achieved by the msprobe / watcher processes.

  • Jim Klimov Wednesday, December 10, 2008

    You did not detail someting interesting (for me ;) ) here about ZFS HA; please elaborate if you have time:

    Is the messaging store contained on the ms-zpool?

    Is some filesystem dataset of ms-zpool delegated to the zones (Zone1 and Zone2)?

    How is the ZFS data available on both hosts? Is it kept on a common external storage? Is it replicated on-line between local storages of the servers (i.e. via zfs send/recv)?

    Is the resulting system Active/Passive, and should the Passive half (i.e. Zone2) stay not-booted while the Active half works (in order to import the ZFS delegated dataset upon boot, for example)?



Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.