Skip navigation
Currently Being Moderated

Cluster nodes discover peers outside cluster domain

Aug 7, 2007 1:59 PM

All, cross-posted from the ColdFusion Server Administration forum:

I've run into an issue with CFMX7 clustering on a subnet with multicast disabled. In our configuration, we have two physical Windows Server 2003 Enterprise Edition servers hosting nine ColdFusion MX 7 Enterprise clusters. Each server hosts one of two instances in a cluster. i.e.:

server1 [1.2.3.4] - instance1-1 <- cluster1 -> server2 [1.2.3.5] - instance1-2
server1 [1.2.3.4] - instance2-1 <- cluster2 -> server2 [1.2.3.5] - instance2-2
server1 [1.2.3.4] - instance3-1 <- cluster3 -> server2 [1.2.3.5] - instance3-2
server1 [1.2.3.4] - instance4-1 <- cluster4 -> server2 [1.2.3.5] - instance4-2
server1 [1.2.3.4] - instance5-1 <- cluster5 -> server2 [1.2.3.5] - instance5-2
server1 [1.2.3.4] - instance6-1 <- cluster6 -> server2 [1.2.3.5] - instance6-2
server1 [1.2.3.4] - instance7-1 <- cluster7 -> server2 [1.2.3.5] - instance7-2
server1 [1.2.3.4] - instance8-1 <- cluster8 -> server2 [1.2.3.5] - instance8-2
server1 [1.2.3.4] - instance9-1 <- cluster9 -> server2 [1.2.3.5] - instance9-2

My first step in enabling peer discovery was to add the unicastPeer attribute to the ClusterManager service under each instance.

e.g. jrun.xml on instance1-1:

<service class="jrunx.cluster.ClusterManager" name="ClusterManager">
<attribute name="bindToJNDI">true</attribute>
<attribute name="enabled">true</attribute>
<attribute name="clusterDomain">cluster1</attribute>
<!-- While we will discover nearby peers automatically without prior knowledge -->
<!-- of them, you can also add as many specific hosts as you wish; these unicast -->
<!-- peers do not need to be nearby or reachable via multicast. -->
<!--EXAMPLE: <attribute name="unicastPeer">sneville</attribute> -->
<attribute name="unicastPeer">1.2.3.5</attribute>
<service class="jrunx.cluster.ClusterDeployerService" name="ClusterDeployerService">
<attribute name="deployDirectory">{jrun.server.rootdir}/SERVER-INF/cluster</attr ibute>
<attribute name="deactivated">false</attribute>
</service>
</service>

e.g. jrun.xml on instance1-2:

<service class="jrunx.cluster.ClusterManager" name="ClusterManager">
<attribute name="bindToJNDI">true</attribute>
<attribute name="enabled">true</attribute>
<attribute name="clusterDomain">cluster1</attribute>
<!-- While we will discover nearby peers automatically without prior knowledge -->
<!-- of them, you can also add as many specific hosts as you wish; these unicast -->
<!-- peers do not need to be nearby or reachable via multicast. -->
<!--EXAMPLE: <attribute name="unicastPeer">sneville</attribute> -->
<attribute name="unicastPeer">1.2.3.4</attribute>
<service class="jrunx.cluster.ClusterDeployerService" name="ClusterDeployerService">
<attribute name="deployDirectory">{jrun.server.rootdir}/SERVER-INF/cluster</attr ibute>
<attribute name="deactivated">false</attribute>
</service>
</service>

. . . and so on for each instance and cluster. This is where the problem begins. When I start the instances, every instance discovers every other instance as a cluster peer, regardless of cluster domain.

Another forum user suggested using host:port, where port is the JNDI listening port. That doesn't work. Using the Jini listening port, however, does work, e.g.:

<attribute name="unicastPeer">1.2.3.4:4160</attribute>

That presents another problem. The Jini listening port defaults to 4160. If 4160 is taken, a port is chosen at random.

I can't find documentation on setting a static Jini listening port, if that's even the correct action to take.

Thoughts?

...

From what I can tell, the version of Reggie (the Jini lookup service) shipped with JRun only supports setting the unicast listening port programmatically. Reggie is started by jrunx.cluster.ClusterManager.init--actually, the private method startLookupService--and JRun doesn't appear to ever call Reggie's setUnicastPeer method.

Assuming we can't tweak Reggie, I guess a more appropriate question is how do we get JRun's RMI service (?) to honor groups/domains in a call to getPeers? I'll cross-post to the JRun forums and investigate JRun Updater 6.

Trev
 
Replies
  • Currently Being Moderated
    Aug 21, 2007 4:24 PM   in reply to TRS-80
    Jrun uses and empty group name I believe TRS
     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points