WebLogic 12.1.3 New Unicast Group Implementation

As of WebLogic 12.1.3 the implementation of unicast groups used for WebLogic clusters has changed.

What is new?

  1. There is a fixed maximum number of groups which is 10.
  2. Groups can be asymmetric.
  3. Servers are put into groups based on the hash value of their name (which obviously explains 2).

The group leader in a particular group might change if new servers are added but with dynamic clusters and generated cluster names this is rather unlikely.

Why?

The implementation has changed to make it more robust.

Example

When creating a classic cluster with servers surf1, surf2, surf3 or servers abc, jkl, xyz, every server ends up in its own unicast group, the total number of groups is the same as the number of servers.

When creating a dynamic cluster with let’s say 15 servers, server server-1 and server-11, server-2 and server-12, etc. are grouped together into one group.

unicast groups dyn cluster

More?

It is not yet officially documented. Currently the official Oracle documentation still describes the old implementation. I described the new implementation in my Oracle Open World presentation together with Dave Cabelus.

Also there is a short web cast available here:

12 Things about WebLlogic 12.1.3

While you’re at it, make sure to download my Oracle Open World 2014 presentation slides for more ideas of what is new and newsworthy in WebLogic 12.1.3.

WebLogic 12c Proxy Plugin for Web Servers is missing (kinda solved)

According to the documentation for the brand new WebLogic 12c the WLS mod_wl proxy plugin for web servers should be located under the following location:

$WL_SERVER/server/plugin

and this is where the trouble starts:

  • This directory does not exists for WebLogic 12c.
  • You can download the plugins seperately from here. Yet there is no version for WebLogic 12c either.
  • You must not simply use an lower plugin version (e.g. the one that comes with WebLogic 11g) because lower versions of the plugin e.g. 10.3.5 are not guaranteed to work (only higher versions). Now, this is between you me: yes they do work typically.  Yet I remember at least one situation when I spent over a day debugging an issue because an older plugin version was used. I am pretty sure you can imagine serveral way to spend your time better.
  • The behavior for the Apache mod_wl 10.x plugins is known to be rather strange after a a managed server drops out of the dynamic server list (clustered or not).

 

Here are some possible solutions:

I briefly checked the 10.3.5 plugin for Apache 2.2 with a WebLogic 12c cluster and it seems to work okay so far. Actually even the glitch with the failing load balancing after a server drops out of a cluster has improved. Probably that’s the best solution currently, but remember it’s at your own risk.

Follow up with my OTN thread and some valuable input from René and Sandeep.

For a more critical production environment I recommend to open a support ticket with Oracle. If you do so, please post an update here and share your findings.

 

So how are you using WebLogic 12 in production? If you do, how is your clustering set up?

 

UPDATE  / Jan 2013:

Thanks to input from my friend Rene I am aware now that Oracle officially recommends to use the latest 10.3.x plugin even for WebLogic 12c. Still it is causing a lot of confusion and the WLS 12.1.1 documentation is wrongly stating that the plugin is part of the WebLogic distribution.

 

Select “Generally Available System Configurations”:

http://www.oracle.com/technetwork/middleware/ias/downloads/wls-1211x-certmatrix-1395408.xls

 

 

Win a Copy of Middleware and Cloud Computing Book

If you are interested in Middleware and Cloud Computing subscribe to my my newsletter and win one of the first two copies of my brand new cloud computing book. The drawing will be Dec. 15th 2010.

There are only 4 mailings per year and you can unsubscribe any time from the newsletter.

Oracle Middleware and Cloud Computing Book

WebLogic Whole-Server Migration on EC2 Cloud?

WebLogic whole-server migration is a compelling solution for the availability of servers and pinned resources such as JMS  on those servers. It simply moves the IP address to the new candidate machine before starting the managed server there. From the perspective of the managed server there is no change at all, since even the IP address is the same. The crucial point however is the availability of floating IP addresses that can be automatically reassigned by the wlsifconfig.sh script.

On EC2 there are only two IP addresses per instance, a public and a private one. You cannot get additional IP addresses, so whole-server migration isn’t of much use.

In fact, you could get an elastic IP address, which is a reassignable, static IP address assigned to an EC instance. Still an elastic IP is not useful for server-migration because assignment of the address requires the EC2 command-line and cannot be done directly from the cluster script using ifconfig.

This text is a digest of my upcoming book about cloud computing with Oracle.

RackspaceCloud Support for MultiCast?

A WebLogic server cluster used to use IP multicast (MC) for cluster heartbeats and global JNDI updates. Today there is another option with Unicast. Still large cluster deployments benefit from multicast. Often using MC is problematic, there is a whole list of possible problems with Windows, routers and firewalls swallow the MC packets (by design, unless you configure them otherwise) and on Unix it could be disabled for the NIC. Apart from WLS clustering it is used by products such as TIBCO EMS for failover.

I had an excellent discussion with the support team of RackspaceCloud about using IP multicast. “There is no obvious reason why it shouldn’t work“, they told me, but at the end there was some doubt left. Since I know AWS doesn’t support MC on EC2 I decided to give it a try.

How to reproduce

  1. Launch two instance in RSC. Should take some 3 minutes. 1 went for a 1GB Win2008 because I wanted to check for poetential Win problems. Note: Currently you cannot create an image from a Windows server, that’s why I started two images from the very beginning, otherwise it makes more sense to prepare one and then clone it.
  2. I downloaded Mozilla FireFox because InternetExplorer drives my crazy with all its security fuss when doing a simple proof of concept.
  3. Download and install WLS10.3.2
  4. I turned off the Win firewall just in case. I don’t wanted the firewall to block the MC packets.
  5. I shared my WebLogic installation directory and copied it over. Yes, you can do that in the RS cloud and at least for a POC it saves a lot of time.
  6. Open a cmd prompt cd to server\bin and run the setWLSEnv to set the environment:

    C:\Oracle\Middleware\wlserver_10.3\server\bin>setWLSEnv.cmd

  7. Repeat step 2 to 6 on the other instance, then run the MC test utility on both sides using a different name with -N, e.g use -N Tom on the other side:
    C:\Oracle\Middleware\wlserver_10.3\server\bin>java utils.MulticastTest -n
    Frank -A 237.0.0.1 -P 8001
    ***** WARNING ***** WARNING ***** WARNING *****
    Do NOT use the same multicast address as a running WLS cluster.
    Starting test.  Hit any key to abort
    Using multicast address 237.0.0.1:8001
    Will send messages under the name Frank every 2 seconds
    Will print warning every 600 seconds if no messages are received
     I (Frank) sent message num 1
    Received message 2 from Frank
     I (Frank) sent message num 2
    Received message 3 from Frank
     I (Frank) sent message num 3
    Received message 4 from Frank
     I (Frank) sent message num 4
  8. If MC was working correctly you’d expect to see your own messages as well as the messages from the remote side, but we just seeing the local ones.

Conclusion: there is no support for Multicast between two instances in the RackspaceCloud. The RSC support team officially confirmed that later as well :” Unfortunately, multicasting is disabled on our hypervisors to preserve network sanity. We apologize for the inconvenience.

So what?

Note: Oracle states MC is not working for AWS either and the preferred solution is Unicast (which is acceptable IMHO).