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
- 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.
- I downloaded Mozilla FireFox because InternetExplorer drives my crazy with all its security fuss when doing a simple proof of concept.
- Download and install WLS10.3.2
- I turned off the Win firewall just in case. I don’t wanted the firewall to block the MC packets.
- 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.
- 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
- 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
- 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).
AFAIK the only cloud host that supports multicast is Opsource (I last looked about 1 month ago).
I got as far as configuring it, but had a lot of issues from that point that meant I couldn’t connect to the virtual server to test it. I left Opsource alone because I think there are a lot of things they need to fix before I would again consider using them. But you might have a different experience.
Lack of multicast / subnet broadcast in cloud hosts is a stumbling block for quite a lot of things you’d want to do with a cloud solution, so I’m puzzled it’s so difficult to achieve right now.