2 node Cluster Configuration on same server

Can I have 2 node cluster configuration on the same server with 2 JVM running ? What will be the cluster configuration which needs to be set and steps which needs to be followed.

Hi sameerj,

Of course you can have two nodes on the same machine. Configuration is almost the same as it would be in case of separate machines but there are a few differences. For example, if you use Tomcat as your application server, you have to modify conf/server.xml and use different port numbers for one of the nodes.

CloverETL Server properties related to clustering could look like this:

Node01


<Parameter name="cluster.enabled" value="true" override="false" />
<Parameter name="cluster.node.id" value="node01" override="false" />
<Parameter name="cluster.shared_sandboxes_path" value="C:/workspace/sandboxes/shared" override="false" />
<Parameter name="cluster.group.name" value="cloverCluster" override="false" />
<Parameter name="cluster.jgroups.bind_address" value="192.168.5.34" override="false" />
<Parameter name="cluster.jgroups.start_port" value="7800" override="false" />
<Parameter name="cluster.jgroups.tcpping.initial_hosts" value="192.168.5.34[7801]" override="false" />
<Parameter name="cluster.http.url" value="http://localhost:8080/clover" override="false" />

Node02

<Parameter name="cluster.enabled" value="true" override="false" />
<Parameter name="cluster.node.id" value="node02" override="false" />
<Parameter name="cluster.shared_sandboxes_path" value="C:/workspace/sandboxes/shared" override="false" />
<Parameter name="cluster.group.name" value="cloverCluster" override="false" />
<Parameter name="cluster.jgroups.bind_address" value="192.168.5.34" override="false" />
<Parameter name="cluster.jgroups.start_port" value="7801" override="false" />
<Parameter name="cluster.jgroups.tcpping.initial_hosts" value="192.168.5.34[7800]" override="false" />
<Parameter name="cluster.http.url" value="http://localhost:7080/clover" override="false" />

I also recommend the following part of our documentation, if you have not read it yet: http://doc.cloveretl.com/documentation/ … ation.html

Regards,

Thank you Lubos.

I am getting below error :

“Persistent info about Node01 is not accessible”

Regards

Hi,

There is one more requirement for Cluster - nodes should share DB. See http://doc.cloveretl.com/documentation/ … ation.html for details.

Your error message looks like Server is not able to read node data from database table. That may indicate you use 2 DBs. Can you please check it?

Thank you …I was able to configure 2 node cluster within a single server.

We have now one more physical server and it is like two server environment each having two nodes(jvm) running the clover instance.

I tried configuring the cluster mode but it is failing. The second server is not able to access the first node of first server.

How the inter node messaging works here ? I specified the bind address along with the port of first server name for the jgroups tcp host of second server. Still it doesnt work. Kindly help me with sample configuration of below scenerio.

Thank you for the wonderful support.

Server 1 – Node 01
Server 1 – Node 02

Server 2 – Node 03
Server 2 – Node 04

Hi,

Could you please provide us with configuration (Cluster related lines are enough) of all nodes? Together with information about IP addresses and ports Cluster nodes are using? I am afraid we won’t be able to advise without that.

Also you can check Clover logs for some errors/exceptions regarding Cluster setup.

Thank you!

Error is : “com.cloveretl.server.facade.api.exceptions.NodeUnavailableException: Can’t access any remote PersistenceService ! None of nodes ‘node01’ is accessible”

Server 1

cluster.enabled=true
cluster.node.id=node01
cluster.jgroups.bind_address=localhost
cluster.jgroups.start_port=7800
cluster.jgroups.tcpping.initial_hosts=Server2[7802]
cluster.http.url=http://localhost:8443/clover

cluster.enabled=true
cluster.node.id=node02
cluster.jgroups.bind_address=localhost
cluster.jgroups.start_port=7801
cluster.jgroups.tcpping.initial_hosts=localhost[7800]
cluster.http.url=http://localhost:8444/clover
cluster.datasource.type=remote
cluster.datasource.delegate.nodeIds=node01

Server2

cluster.enabled=true
cluster.node.id=node03
cluster.jgroups.bind_address=localhost
cluster.jgroups.start_port=7802
cluster.jgroups.tcpping.initial_hosts=Server1[7800]
cluster.http.url=http://localhost:8443/clover
cluster.datasource.type=remote
cluster.datasource.delegate.nodeIds=node01

cluster.enabled=true
cluster.node.id=node04
cluster.jgroups.bind_address=localhost
cluster.jgroups.start_port=7803
cluster.jgroups.tcpping.initial_hosts=Server1[7800]
cluster.http.url=http://localhost:8445/clover
cluster.datasource.type=remote
cluster.datasource.delegate.nodeIds=node01

I have a few notes regarding your settings:

  1. To avoid any possible DNS issues, please use full IP addresses everywhere instead of localhost, Server1 and Server2.
  2. Just to be sure, add also cluster.group.name=cloverCluster to all four nodes.
  3. Try to add more addresses (separated by commas) into intial hosts settings, not just a one per node. With just 4 nodes in your cluster, you can point each node at all other nodes.
  4. Are you able to ping IP adressess and specific ports(7800,7801,…) between the nodes?
  5. Do nodes present on the same machine see at each other? (node01 ↔ node02 and node03 ↔ node04; ping and/or Server Web GUI)
  6. Send me all four all.log files if nothing else helps. (<tomcat_home>/temp/cloverlogs/all.log)

Let me know with the results and answers, please.

Regards,

Thank you for your help. ClusterURL was not correctly set due to which http invoke was getting failed. Now it is working fine.