This section provides detailed descriptions for all properties in each node deploy configuration object. A snippet is also provided for each configuration object showing the syntax for specifying all of the configuration values.
The NodeDeploy
object is the top-level
container for all of the node deploy configuration. Figure 3.2, “NodeDeploy relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.1, “NodeDeploy object properties” and a snippet for these properties is in Example 3.2, “NodeDeploy object snippet”.
Table 3.1. NodeDeploy object properties
Example 3.2. NodeDeploy object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { globalConfiguration = [ """ name = "mysecurity" type = "com.acme.security.keystore" version = "1.0.0" configuration = { CommunicationSecurity = { keyStore = "myKeyStore.jks" keyStorePassword = "secret" } } """ ] nodes = { "A.X" = { ... } "B.X" = { ... } "C.X" = { ... } } availabilityZones = { "elastic-credit" = { ... } "elastic-debit" = { ... } } } }
The Node
object defines the
configuration for a specific node. Figure 3.3, “Node relationships” shows the relationships to other
configuration objects.
A detailed description of the configuration object properties is in Table 3.2, “Node object properties” and a snippet for these properties is in Example 3.3, “Node object snippet”.
Table 3.2. Node object properties
Name | Type | Description |
| String | The node's type, as defined in the application definition
configuration. Optional. Default value is a built-in node type
of default . |
| String | Node description. Optional. Default value is node name. |
| Associative array of EngineBinding
objects keyed by engine name. | Engine bindings for this node. Optional. Default runs a single engine for each top-level fragment in the node type being deployed on the node. |
| Communication configuration
object. | Network communication configuration for the node. Optional. See the section called “Communication” for default values. |
| String [ ] | Array of configuration data that applies to this node. Optional. No default. |
| Associative array of
AvailabilityZoneMembership objects keyed by
availability zone names. | Availability zone membership for the node. The
availability zone must be defined in
NodeDeploy.availabilityZones . Optional. No
default. |
| RouterBinding [ ] | Router bindings for the node. Optional. No default. |
Example 3.3. Node object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { nodeType = "large-resources" description = "My application node" engines = { "settlement-engine" = { ... } } communication = { ... } configuration = [ """ name = "mysecurity" type = "com.acme.security.keystore" version = "1.0.0" configuration = { CommunicationSecurity = { keyStore = "myKeyStore.jks" keyStorePassword = "secret" } } """, """ name = "myusers" type = "com.acme.security.users" version = "1.0.0" configuration = { Principal = { principal = "road-runner" } } """ ] availabilityZoneMemberships = { "cross-data-center" = { ... } } routerBinding = [ { ... } ] } } } }
The EngineBinding
object associates an
engine name with it's fragment and optional engine specific
configuration. Figure 3.4, “EngineBinding relationships” shows
the relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.3, “EngineBinding object properties” and a snippet for these properties is in Example 3.4, “EngineBinding object snippet”.
Example 3.4. EngineBinding object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { engines = { "settlement-engine" = { fragmentIdentifier = "settlement-engine-fragment" configuration = [ """ name = "my-engine-stuff" type = "com.acme.engine" version = "1.0.0" configuration = { AcmeEngine = { name = "value" } } """ ] } } } } } }
The RouterBinding
object associates a
router with a node and optionally an availability zone. Figure 3.5, “RouterBinding relationships” shows the relationships to
other configuration objects.
A detailed description of the configuration object properties is in Table 3.4, “RouterBinding object properties” and a snippet for these properties is in Example 3.5, “RouterBinding object snippet”.
Table 3.4. RouterBinding object properties
Example 3.5. RouterBinding object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { routerBindings = [ { routerName = "my-partition-router" availabilityZone = "active-active" } { routerName = "my-round-robin-router" } ] } } } }
The Communication
object defines all
connectivity options for a node. Figure 3.6, “Communication relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.5, “Communication object properties” and a snippet for these properties is in Example 3.6, “Communication object snippet”.
Table 3.5. Communication object properties
Name | Type | Description |
| long | Broadcast discovery port. Optional. Default value is
54321 . |
| String [ ] | An array of broadcast discovery network request
addresses. The addresses are specified as either IPV4 or DNS
host names. Discovery requests are broadcast to the
discoveryPort on the network interface
associated with each network address. Optional. Default value is
a single network address which is the system host name. |
| long | The number of ports to allocate to the node for
distribution listeners. Ports are allocated from this range when
migrating the distribution listener between engines or when a
duplicate port error is detected starting a listener. Port
allocation is started at the configured
dataTransportPort for each distribution
listener interface (see the section called “DistributionListenerInterface”). The minimum
value that can be specified is the total number of engines plus
one. If a port cannot be allocated from this range, the
distribution listener will fail to start. Optional. Default
value is 20. |
| Administration configuration
object. | Administration network communication configuration for the node. Optional. See the section called “Administration” for the default values. |
| DistributionListenerInterface [ ] of
configuration objects. | Distribution network communication configuration for the node. Optional. See the section called “DistributionListenerInterface” for the default values. |
| ProxyDiscovery configuration
object. | Proxy discovery configuration for the node. Optional. No default. |
Example 3.6. Communication object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { numberSearchPorts = 10 discoveryPort = 4321 discoveryRequestAddresses = ["myhost.com"] distributionListenerInterfaces = [ ... ] administration = { ... } proxyDiscovery = { ... } } } } } }
The DistributionListenerInterface
object defines the network communication options for a node's
distribution connectivity. Figure 3.7, “DistributionListenerInterface relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.6, “DistributionListenerInterface object properties” and a snippet for these properties is in Example 3.7, “DistributionListenerInterface object snippet”.
![]() | |
IP addresses specified in the |
Table 3.6. DistributionListenerInterface object properties
Name | Type | Description |
| long | Distribution listener port number. This field is required
and cannot have a value of 0 if the Node
configuration (see the section called “Node”) containing the
DistributionListenerInterface object is
referenced in ProxyDiscovery configuration
(see the section called “ProxyDiscovery”), otherwise
optional. Default value is 0 , which causes
the distribution port to be auto-assigned when the node is
installed. |
| boolean | Secure-transport indicator. If true ,
use TLS to secure communication to the host, if
false do not. Optional. Default value is
false . |
| String | Distribution listener interface address. This address can
be specified as an IPv4 address, IPv6 address, or DNS name. DNS
names can only be used to bind to an IPv4 address. A special
prefix of IPoSDP: indicates that the address
is an Infiniband sockets direct protocol interface (Linux only).
This field is required and cannot have a value of
0.0.0.0 or an empty string
("" ) if the Node
configuration (see the section called “Node”) containing the
DistributionListenerInterface object is
referenced in ProxyDiscovery configuration
(see the section called “ProxyDiscovery”), otherwise
optional. Default value is an empty string which will bind the
listener to all interfaces. |
Example 3.7. DistributionListenerInterface object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { distributionListenerInterfaces = [ { dataTransportPort = 1234 secure = true address = "myhost.com" } { address = "127.0.0.1" } { address = "IPoSDP:192.168.1.101" } { secure = true address = "fe80::8a63:dfff:fec3:7abd" } ] } } } } }
The Administration
object defines the
network communication options for a node's administration connectivity.
Figure 3.8, “Administration relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.7, “Administration object properties” and a snippet for these properties is in Example 3.8, “Administration object snippet”.
![]() | |
IP addresses specified in the |
Table 3.7. Administration object properties
Name | Type | Description |
| long | Administration transport port number. A value of
0 causes the node to auto-generate the port
number. This field is required and cannot have a value of 0 if
the Node configuration (see the section called “Node”) containing the
Administration object is referenced in
ProxyDiscovery configuration (see the section called “ProxyDiscovery”), otherwise optional. Default
value is 0 . |
| long | Administration web server port number. A value of
0 causes the node to auto-generate the port
number. Optional. Default value is 0 . |
| boolean | Enable administration web server if value if
true . A value of false
disables the administration web server. Optional. Default value
is true . |
| String [ ] | Node filters for the web administration. A list of node filters specifying the nodes that can be managed by this node's web-based administration GUI. Each filter is a fully or partially qualified scoped service name. Optional. Default value is all nodes in the cluster. |
| String | Administration listener interface address. This address
can be specified as an IPv4, IPv6, or DNS name. An empty string
("" ) will listen on all installed interfaces.
If a DNS name is specified, the listener is bound to an IPv6
address if available, otherwise an IPv4 address is used. This
field is required and cannot have a value of
0.0.0.0 or an empty string if the
Node configuration (see the section called “Node”) containing the
Administration object is referenced in
ProxyDiscovery configuration (see the section called “ProxyDiscovery”), otherwise optional. Default
value is all interfaces on the local machine. |
Example 3.8. Administration object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { administration = { transportPort = 1234 webPort = 9876 webEnable = true webNodeFilters = ["A.X", "B.X"] address = "myhost.com" } } } } } }
The ProxyDiscovery
object defines the
nodes for which this node is providing proxy discovery services. Figure 3.9, “ProxyDiscovery relationships” shows the relationships
to other configuration objects.
Additional audits are applied to the remote nodes
specified in the remoteNodes
property,
specifically:
Administration.transportPort
must be set
(see the section called “Administration”) in the remote
node.
Administration.address
must be set (see
the section called “Administration”) in the remote node.
DistributionListenerInterface.dataTransportPort
must be set (see the section called “DistributionListenerInterface”) in the remote
node.
DistributionListenerInterface.address
must
be set (see the section called “DistributionListenerInterface”)
in the remote node.
The range of ports defined by the
DistributionListenerInterface.dataTransportPort
(see the section called “DistributionListenerInterface”) and the
Communication.numberSearchPorts
(see the section called “Communication”) cannot overlap for the nodes
specified in the remoteNodes
property.
Any audit failures will cause the node deploy configuration to fail activation.
A detailed description of the configuration object properties is in Table 3.8, “ProxyDiscovery object properties” and a snippet for these properties is in Example 3.9, “ProxyDiscovery object snippet”.
Table 3.8. ProxyDiscovery object properties
Name | Type | Description |
| String [ ] | List of remote nodes for which to provide proxy discovery
services. All of the specified nodes in this property must be
defined in the NodeDeploy.nodes property (see
the section called “NodeDeploy”) and be in the same cluster
as the node in which they are contained . See the Javadoc for
java.util.regex.Pattern for the syntax of the
regular expressions that can be used. Optional. No
default. |
Example 3.9. ProxyDiscovery object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { proxyDiscovery = { remoteNodes = ["B.X", "C.X"] } } } "B.X" = { } "C.X" = { } } } }
The AvailabilityZoneMembership
object
defines the availability zone membership for a node. Figure 3.10, “AvailabilityZoneMembership relationships” shows the relationships
to other configuration objects.
A detailed description of the configuration object properties is in Table 3.9, “AvailabilityZoneMembership object properties” and a snippet for these properties is in Example 3.10, “AvailabilityZoneMembership object snippet”.
Table 3.9. AvailabilityZoneMembership object properties
Example 3.10. AvailabilityZoneMembership object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { availabilityZoneMemberships = { "active-active" = { votes = 2 staticPartitionBindings = { ... } } } } } availabilityZones = { "active-active" = { ... } } } }
The StaticPartitionBinding
object
defines the static partition binding for a node. Figure 3.11, “StaticPartitionBinding relationships”
shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.10, “StaticPartitionBinding object properties” and a snippet for these properties is in Example 3.11, “StaticPartitionBinding object snippet”.
Table 3.10. StaticPartitionBinding object properties
Example 3.11. StaticPartitionBinding object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { availabilityZoneMemberships = { "active-active" = { staticPartitionBindings = { "P1" = { type = "ACTIVE" replication = "SYNCHRONOUS" }, "P2" = { type = "REPLICA" replication = "ASYNCHRONOUS" } } } } } } availabilityZones = { "active-active" = { dataDistributionPolicy = "static-data-distribution-policy" staticPartitionPolicy = { staticPartitions = { "P1" = { }, "P2" = { }, } } } } } }
The DynamicPartitionBinding
object
defines a dynamic partition binding for a node. Dynamic partitions can
also be bound to a node using the
primaryMemberPattern
and the
backupMemberPattern
properties in the
DynamicPartitionPolicy
configuration object (see
the section called “DynamicPartitionPolicy”). Figure 3.12, “DynamicPartitionBinding relationships”
shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.11, “DynamicPartitionBinding object properties” and a snippet for these properties is in Example 3.12, “DynamicPartitionBinding object snippet”.
Example 3.12. DynamicPartitionBinding object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { availabilityZoneMemberships = { "elastic-credit" = { dynamicPartitionBinding = { type = "PRIMARY" } } } } } availabilityZones = { "elastic-credit" = { dataDistributionPolicy = "dynamic-credit-distribution-policy" } } } }
The AvailabilityZone
object defines an
availability zone. There is always a default availability zone defined
even if this configuration object is not specified. See the section called “Default availability zone” for details. Figure 3.13, “AvailabilityZone relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.12, “AvailabilityZone object properties” and a snippet for these properties is in Example 3.13, “AvailabilityZone object snippet”.
Table 3.12. AvailabilityZone object properties
Example 3.13. AvailabilityZone object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { availabilityZones = { "active-active" = { dataDistributionPolicy = "static-data-distribution-policy" staticPartitionPolicy = { ... } } "elastic-dr" = { dataDistributionPolicy = "dynamic-data-distribution-policy" dynamicPartitionPolicy = { ... } } "west-coast-quorum" = { minimiumNumberOfVotes = 2 quorumMemberPattern = ".*\\.west\\.X" } } } }
The DynamicPartitionPolicy
object
defines a dynamic partition policy for an availability zone. Figure 3.14, “DynamicPartitionPolicy relationships” shows the
relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.13, “DynamicPartitionPolicy object properties” and a snippet for these properties is in Example 3.14, “DynamicPartitionPolicy object snippet”.
Table 3.13. DynamicPartitionPolicy object properties
Name | Type | Description |
| String | A regular expression describing the primary node
membership for this dynamic partition policy. Membership can be
expressed in one, or both, of two ways: via this regular
expression or explicitly for each node (see the section called “DynamicPartitionBinding”). The bindings are
additive. See the Javadoc for
java.util.regex.Pattern for the syntax of the
regular expressions that can be used. Optional. Default value is
all nodes in a cluster, unless
backupMemberPattern is specified, in which
case, there is no default value. A regular expression that does
not match any nodes in the cluster must be specified to disable
this binding if backupMemberPattern is not
specified. |
| String | A regular expression describing the backup node
membership for this dynamic partition policy. Membership can be
expressed in one, or both, of two ways: via this regular
expression or explicitly for each node (see the section called “DynamicPartitionBinding”). The bindings are
additive. If backup nodes are defined all primary nodes must be
explicitly defined, i.e. setting this property disables the
primaryMemberPattern default value. See the
Javadoc for java.util.regex.Pattern for the
syntax of the regular expressions that can be used. Optional. No
default. |
Example 3.14. DynamicPartitionPolicy object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { availabilityZones = { "elastic-dr" = { dataDistributionPolicy = "dynamic-data-distribution-policy" dynamicPartitionPolicy = { primaryMemberPattern = ".*\\.west\\.X" backupMemberPattern = ".*\\.east\\.X" } } } } }
The StaticPartitionPolicy
object
defines a static partition policy for an availability zone. Figure 3.15, “StaticPartitionPolicy relationships” shows the relationships
to other configuration objects.
A detailed description of the configuration object properties is in Table 3.14, “StaticPartitionPolicy object properties” and a snippet for these properties is in Example 3.15, “StaticPartitionPolicy object snippet”.
Table 3.14. StaticPartitionPolicy object properties
Name | Type | Description |
| Enumeration. Valid values are
REVERSE_CONFIGURATION and
REVERSE_LOCAL_THEN_REMOTE . | REVERSE_CONFIGURATION disables the
partitions in reverse order based on the order they appear in
the configuration file.
REVERSE_LOCAL_THEN_REMOTE disables all
partitions that have the local node as the active node, then
disable all partitions where a remote node is the active node.
Optional. Default value is
REVERSE_CONFIGURATION . |
| Enumeration. Valid values are
CONFIGURATION and
REMOTE_THEN_LOCAL . | CONFIGURATION enables the partitions
based on the order they appear in the configuration file.
REMOTE_THEN_LOCAL enables all partitions that
have a remote node as the active node, then enables the
partitions where the active node is the local node. Optional.
Default value is CONFIGURATION . |
staticPartitions | Associative array of StaticPartition
objects keyed by partition name. | StaticPartition configuration objects.
Optional. No default. |
| String | A regular expression describing which nodes know about
the partitions in this static partition policy. These nodes may
or may not be hosting the partitions defined in the static
partition policy. The complete set of nodes that know about
these partitions is defined by this regular expression and
explicit node binding (see the section called “StaticPartitionBinding”). See the Javadoc for
java.util.regex.Pattern
for the syntax of the regular expressions that can be used.
Optional. Default value is the explicit partition binding in the
containing availability zone. |
Example 3.15. StaticPartitionPolicy object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { availabilityZones = { "active-active" = { dataDistributionPolicy = "static-data-distribution-policy" staticPartitionPolicy = { enableOrder = "CONFIGURATION" disableOrder = "REVERSE_CONFIGURATION" loadOnNodesPattern = ".*\\.east\\.X" staticPartitions = { "P1" = { }, "P2" = { }, } } } } } }
The StaticPartition
object defines a
static partition. Figure 3.16, “StaticPartition relationships” shows
the relationships to other configuration objects.
A detailed description of the configuration object properties is in Table 3.15, “StaticPartition object properties” and a snippet for these properties is in Example 3.16, “StaticPartition object snippet”.
Table 3.15. StaticPartition object properties
Example 3.16. StaticPartition object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { availabilityZones = { "active-active" = { dataDistributionPolicy = "static-data-distribution-policy" staticPartitionPolicy = { staticPartitions = { "P1" = { rank = 2 }, "P2" = { rank = 1 } } } } } } }