This article describes the node deploy configuration file. It provides an overview of how node deploy configuration files are used, a conceptual model of the node deploy configuration file, and a detailed description of all configuration values.
This chapter assumes that you are familiar with the configuration file syntax described in HOCON Syntax Reference.
The node deploy configuration file is used to define deployment-time values, and to also override, and possibly augment, default application configuration. Deployment time configuration can be specified for multiple nodes in a single node deploy configuration file. The nodes can be in the same or different clusters. The node configuration to use from the node deploy configuration file when installing a node is determined by matching the node name being installed with a node name in the node deploy configuration file. This is shown in Example 1, “Node configuration selection”.
Example 1. Node configuration selection
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy { // // Define a cluster X with three nodes // nodes = { // // Node A.X configuration // "A.X" = { } // // Node B.X configuration // "B.X" = { } // // Node C.X configuration // "C.X" = { } } } } // // Install node A.x - use A.X node configuration in nodedeploy.conf // epadmin install node --nodename=A.X ... --nodedeploy=nodedeploy.conf
Node deployment configuration files can be specified on the install node command line, or they can be packaged in an application archive. Packing a node deployment configuration in an application archive provides an easy mechanism to ship application specific default node deploy configuration values.
In addition to the configuration data defined in a node deploy configuration file, the node deploy configuration can also contain arbitrary configuration. There are two sections in the node deploy configuration file for this configuration:
-
global — applies to all nodes defined in the node deployment configuration file. See NodeDeploy for details.
-
per-node — applies to a specific node in the node deployment configuration file. See Node for details.
Warning
Configuration embedded in the global and per-node sections of a node deployment configuration file are only processed when
the node deployment configuration file is passed to install
node
. Any configuration in these sections is ignored when loading and activating configuration using the load
and activate
configuration
commands.
Configuration files can also be contained in the fragments in an application archive and in the application itself.
See 2 for details on configuration load order.
The node deploy configuration is audited whenever it changes state, such as load to active. There are detailed audits for each of the configuration objects in the node deploy configuration file. These are described in Configuration Objects. There are also these audits enforced on node deploy configuration during application installation.
-
Node deploy configuration can only be contained in an application archive. Node deploy configurations cannot be contained in fragment archives. Node deploy configurations found in a fragment archive will cause an audit failure during application installation.
-
There can only be a single node deploy configuration in an application archive. Multiple node deploy configurations in an application archive will cause an audit failure during application installation.
-
All node deploy configurations loaded when a node is installed must have the same configuration name. Node deploy configurations with different configuration names will cause an audit failure during application installation.
Figure 1, “Node deployment configuration map” shows a map of the relationships between all of the configuration objects in a node deployment configuration file. It also shows all external relationships to the application definition configuration and the application archive.
See the following slices of this map, blown up to readable size. First, the left side:
The center:
And the right side:
The node deploy configuration has a configuration type of com.tibco.ep.dtm.configuration.node
.
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 2, “NodeDeploy relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in NodeDeploy object properties and a snippet for these properties is in Example 2, “NodeDeploy object snippet”.
NodeDeploy object properties
Name | Type | Description |
---|---|---|
|
Associative array of Node objects keyed by fully qualified node service name.
|
Nodes (see Node) configured in this file. The nodes may be in the same or different clusters. At least one node must be defined. |
|
Associative array of AvailabilityZone objects keyed by availability zone name.
|
Availability zone configurations (see AvailabilityZone). Optional. No default. |
globalConfiguration |
String [ ] | Array of configuration data that applies to all configured nodes. Optional. No default. |
Example 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, “Node relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in Node object properties and a snippet for these properties is in Example 3, “Node object snippet”.
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 (see EngineBinding) 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 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 (see AvailabilityZoneMembership). The availability zone must be defined in NodeDeploy.availabilityZones . Optional. No default.
|
|
RouterBinding [ ]
|
Router bindings for the node (see RouterBinding). Optional. No default. |
Example 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 4, “EngineBinding relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in EngineBinding object properties and a snippet for these properties is in Example 4, “EngineBinding object snippet”.
Example 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 5, “RouterBinding relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in RouterBinding object properties and a snippet for these properties is in Example 5, “RouterBinding object snippet”.
RouterBinding object properties
Name | Type | Description |
---|---|---|
|
String | Router to associate with this node. A router with this name must exist in the application definition configuration. Required. |
|
Reference to AvailabilityZone object.
|
Associate a router with an availability zone (see AvailabilityZone). If specified, the availability zone must exist in the node deploy configuration file. Optional. Router is not associated with an availability zone by default. |
Example 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 6, “Communication relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in Communication object properties and a snippet for these properties is in Example 6, “Communication object snippet”.
Communication object properties
Name | Type | Description |
---|---|---|
|
Administration configuration object.
|
Administration network communication configuration for the node. Optional. See Administration for the default values. |
|
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.
|
|
DistributionListenerInterface [ ] of configuration objects.
|
Distribution network communication configuration for the node. Optional. See DistributionListenerInterface for the default values. |
|
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 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.
|
|
ProxyDiscovery configuration object.
|
Proxy discovery configuration for the node (see ProxyDiscovery). Optional. No default. |
|
String | Name of a secure communication server profile (see Secure Communication Server Profile) to use to configure secure communications for the node's administration, data transport, and web server listeners. The secure communication server profile must include a truststore. The truststore is used to validate certificates sent from other nodes in the cluster. Optional. No default. |
Example 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 = { ... } secureCommunicationProfileName = "my-secure-communication-server-profile-name" } } } } }
The DistributionListenerInterface
object defines the network communication options for a node's distribution connectivity. Figure 7, “DistributionListenerInterface relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in DistributionListenerInterface object properties and a snippet for these properties is in Example 7, “DistributionListenerInterface object snippet”.
Warning
IP addresses specified in the address
configuration property must be quoted. See Example 7, “DistributionListenerInterface object snippet”.
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 Node) containing the DistributionListenerInterface object is referenced in ProxyDiscovery configuration (see ProxyDiscovery), otherwise optional. Default value is 0 , which causes the distribution port to be auto-assigned when the node is installed.
|
|
boolean | Deprecated secure-transport indicator. Use the secureCommunicationProfileName property in Communication to control data transport security characteristics. The secure property is ignored if there is a value in the secureCommunicationProfileName property. 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
epadmin-node(1)) containing the DistributionListenerInterface object is referenced in ProxyDiscovery configuration (see ProxyDiscovery), otherwise optional. Default value is an empty string which will bind the listener to all interfaces.
|
Example 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 8, “Administration relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in Administration object properties and a snippet for these properties is in Example 8, “Administration object snippet”.
Warning
IP addresses specified in the address
configuration property must be quoted. See Example 8, “Administration object snippet”.
Administration object properties
Name | Type | Description |
---|---|---|
|
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
epadmin-node(1)) containing the Administration object is referenced in ProxyDiscovery configuration (see ProxyDiscovery), otherwise optional. Default value is all interfaces on the local machine.
|
|
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
epadmin-node(1)) containing the Administration object is referenced in ProxyDiscovery configuration (see ProxyDiscovery), otherwise optional. Default value is 0 .
|
|
boolean | Enable administration web server if value is true . A value of false disables the administration web server. Optional. Default value is true .
|
|
An enumeration with valid values of CACHE_FOREVER , DO_NOT_CACHE , or TIMED_CACHE .
|
Controls the caching of downloaded files. CACHE_FOREVER stores the files forever — they are never deleted. DO_NOT_CACHE never stores downloaded files on the node — they are immediately deleted after use. TIMED_CACHE caches the files for the amount of time specified in webMaximumFileCacheTimeMinutes . Optional. Default value is TIMED_CACHE .
|
|
An enumeration with valid values of , , or UNLIMITED_FILE_SIZE .
|
Controls the maximum size of downloaded files. FILE_UPLOAD_NOT_ALLOWED disables file downloads. LIMITED_FILE_SIZE restricts file size to the value specified in . UNLIMITED_FILE_SIZE sets no limit on downloaded file size. Optional. Default value is LIMITED_FILE_SIZE .
|
|
long | Time in minutes to cache downloaded files if webFileCacheTimeHandling is set to TIMED_CACHE . Value must be > 0. Optional. Default value is 15 .
|
|
long | Maximum file size in megabytes for downloaded files if webFileSizeHandling is set to LIMITED_FILE_SIZE . Value must be > 0. Optional. Default value is 5 .
|
|
long | Administration web server port number. A value of 0 causes the node to auto-generate the port number starting from 8008. Optional. Default value is 0 .
|
|
Associative array of WebServiceBinding configuration objects keyed by web service name names.
|
An associative array of WebServiceBinding (see WebServiceBinding) configuration objects indexed by web service names. Optional.
|
|
boolean | Enable Web UI for configured web service endpoints if value is true . A value of false disables the Web UI. Optional. Default value is true .
|
Example 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 = { address = "myhost.com" transportPort = 1234 webPort = 9876 webEnable = true webUIEnable = true webFileCacheTimeHandling = TIMED_CACHE webMaximumFileCacheTimeMinutes = 5 webFileSizeHandling = LIMITED_FILE_SIZE webMaximumFileSizeMegabytes = 10 webServiceBindings = { "admin" = { ... } "metrics" = { ... } } } } } } } }
The WebServiceBinding
object defines the authentication realm associated with a web service. This provides a mechanism to override the default
node administration authentication realm for a specific web service. Figure 9, “WebServiceBinding relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in WebServiceBinding object properties and a snippet for these properties is in Example 9, “WebServiceBinding object snippet”.
WebServiceBinding object properties
Name | Type | Description |
---|---|---|
|
String | Name of an authentication realm (see Authentication Realms) to use for authentication for this web service. An empty value disables authentication for the web service. Optional. |
Example 9. WebServiceBinding object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { administration = { webServiceBindings = { "admin" = { authenticationRealmName = "my-local-auth-realm" } "metrics" = { authenticationRealmName = "my-other-local-auth-realm" } // // Disable authentication for healthcheck // "healthcheck" = { } } } } } } } }
The ProxyDiscovery
object defines the nodes for which this node is providing proxy discovery services. Figure 10, “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 Administration) in the remote node. -
Administration.address
must be set (see Administration) in the remote node. -
DistributionListenerInterface.dataTransportPort
must be set (see DistributionListenerInterface) in the remote node. -
DistributionListenerInterface.address
must be set (see DistributionListenerInterface) in the remote node. -
The range of ports defined by the
DistributionListenerInterface.dataTransportPort
(see DistributionListenerInterface) and theCommunication.numberSearchPorts
(see Communication) cannot overlap for the nodes specified in theremoteNodes
property.
Any audit failures will cause the node deploy configuration to fail activation.
A detailed description of the configuration object properties is in ProxyDiscovery object properties and a snippet for these properties is in Example 10, “ProxyDiscovery object snippet”.
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 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 10. ProxyDiscovery object snippet
name = "my.application" version = "1.0.0" type = "com.tibco.ep.dtm.configuration.node" configuration = { NodeDeploy = { nodes = { "A.X" = { communication = { // // Node A.X will provide proxy // discovery for B.X and C.X // The data transport and administration // address and port number must be // configured for B.X and C.X // in the same node deploy configuration // as A.X // proxyDiscovery = { remoteNodes = ["B.X", "C.X"] } } } // // administration and distribution // listener addresses and ports must be // configured for node B.X and C.X // so that they are available // for node A.X to provide proxy information // "B.X" = { communication = { administration = { address = "myhost.com" transportPort = 1234 } distributionListenerInterfaces = [ { dataTransportPort = 6789 address = "myhost.com" } ] } } "C.X" = { communication = { administration = { address = "myotherhost.com" transportPort = 1234 } distributionListenerInterfaces = [ { dataTransportPort = 6789 address = "myotherhost.com" } ] } } } } }
The AvailabilityZoneMembership
object defines the availability zone membership for a node. Figure 11, “AvailabilityZoneMembership relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in AvailabilityZoneMembership object properties and a snippet for these properties is in Example 11, “AvailabilityZoneMembership object snippet”.
AvailabilityZoneMembership object properties
Name | Type | Description |
---|---|---|
|
long | Number of quorum votes for this node in the specified availability zone. Optional. Default value is 1. |
|
DynamicPartitionBinding configuration object.
|
Dynamic partition binding (see DynamicPartitionBinding). This property can only be specified if the associated availability zone is using a dynamic data distribution policy. Optional. No default value. |
|
Associative array of StaticPartitionBinding objects keyed by partition names.
|
Static partition binding for the node (see StaticPartitionBinding). This property can only be specified if the associated availability zone is using a static data distribution policy. The
availability zone must be defined in <availability-zone-name> .staticPartitionPolicy.staticPartitions. Optional. No default.
|
Example 11. 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 12, “StaticPartitionBinding relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in StaticPartitionBinding object properties and a snippet for these properties is in Example 12, “StaticPartitionBinding object snippet”.
StaticPartitionBinding object properties
Example 12. 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 DynamicPartitionPolicy). Figure 13, “DynamicPartitionBinding relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in DynamicPartitionBinding object properties and a snippet for these properties is in Example 13, “DynamicPartitionBinding object snippet”.
Example 13. 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 Default Availability Zone for details. Figure 14, “AvailabilityZone relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in AvailabilityZone object properties and a snippet for these properties is in Example 14, “AvailabilityZone object snippet”.
AvailabilityZone object properties
Name | Type | Description |
---|---|---|
|
Long | Minimum percentage of node votes to maintain a quorum. This property is mutually exclusive of the minimumNumberOfVotes property. If neither this property or the minimumNumberOfVotes property is set, quorums are disabled. Optional. No default value.
|
|
Long | Minimum number nodes to maintain a quorum. This property is mutually exclusive of the percentageOfVotes property. If neither this property or the percentageOfVotes property is set, quorums are disabled. Optional. No default value.
|
|
String | The data distribution policy for this availability zone, as defined in the application definition configuration. Optional. No default value. |
|
DynamicPartitionPolicy configuration object.
|
Dynamic partition policy configuration (see DynamicPartitionPolicy). A dynamic data distribution policy must be specified in the dataDistributionPolicy property if this property is set. Optional. No default value.
|
|
StaticPartitionPolicy configuration object.
|
Static partition policy configuration (see StaticPartitionBinding). A static data distribution policy must be specified in the dataDistributionPolicy property if this property is set. Optional. No default value.
|
|
String | A regular expression describing which nodes are part of a quorum. All nodes matching this regular expression are part of the
quorum. Such members get a single quorum vote. Quorum membership can be expressed in one or both of two ways: via this regular
expression or explicitly by each node. See the Javadoc for java.util.regex.Pattern for the syntax of the regular expressions that can be used. Optional. No default value.
|
Example 14. 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 15, “DynamicPartitionPolicy relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in DynamicPartitionPolicy object properties and a snippet for these properties is in Example 15, “DynamicPartitionPolicy object snippet”.
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 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 DynamicPartitionBinding). The bindings are additive. If backup nodes are defined, all primary nodes must be explicitly defined; that is, 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 15. 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 16, “StaticPartitionPolicy relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in StaticPartitionPolicy object properties and a snippet for these properties is in Example 16, “StaticPartitionPolicy object snippet”.
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 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 16. 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 17, “StaticPartition relationships” shows the relationships to other configuration objects.
A detailed description of the configuration object properties is in StaticPartition object properties and a snippet for these properties is in Example 17, “StaticPartition object snippet”.
StaticPartition object properties
Example 17. 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 } } } } } } }