Isolate TIBCO Streaming node and cluster from other nodes

Isolate TIBCO Streaming node and cluster from other nodes

book

Article ID: KB0070290

calendar_today

Updated On:

Products Versions
TIBCO Streaming 10, 11

Description

The default TIBCO Streaming Service Discovery Port is UDP-multicast port 54321.

When multiple clusters all use the same Discovery Port on the same subnet, nodes from other clusters include all reachable nodes when doing discovery when joining a cluster or performing rebalancing. Administrative 'epadmin' commands may apply to more nodes and clusters than intended, particularly for commands that do not require a 'servicename' parameter.

The discovery of nodes that are not in the same cluster may make joining a cluster slower, and may in some circumstances prevent a node from joining its cluster.

How can clusters be isolated in order to ensure node operations and administrative commands apply to only the intended cluster?

Issue/Introduction

NodeDeploy HOCON configuration for setting a specific UDP port for a cluster

Resolution

In the simplest case, to start a node isolated from other nodes, install using the discoveryport parameter to 'epadmin install node' command as shown here:

epadmin install node --nodename=A.X --discoveryport=11111
epadmin --discoveryport=11111 --servicename=A.X start node

This will prevent nodes and clusters using a different discovery port from finding or interacting with the isolated node transactionally. All 'epadmin' administrative commands will need the discoveryport parameter to interact with this node, or bypass discovery by using the adminhost and adminport parameters.

To isolate a cluster on the network, configure a different Service Discovery Port for each cluster, by using a NodeDeploy HOCON configuration either in the Application Archive (ZIP file) or referenced by the 'epadmin' 'nodedeploy' parameter. The NodeDeploy configuration defines the port number as so:

Example NodeDeploy.conf:

 
name = "NodeDeployment"
version = "1.0"
type = "com.tibco.ep.dtm.configuration.node"
configuration = {
  NodeDeploy = {
    nodes = {
      "A1.cluster" = {
        communication = {
          discoveryPort = 2222
        }
      }
    }
  }
}

Setting a non-default discovery port means all 'epadmin' commands working with this cluster will need the global parameter 'discoveryport', for example:
  epadmin discoveryport=2222 servicename=...
or the adminhost and adminport parametersdescribed above.

Use "${EP_NODE_NAME}" in the NodeDeploy configuration instead of "A1.cluster" to match any nodename specified in the 'epadmin install node' command.