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 ????) 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 .
|
|
String [ ] | Disable audit logging for specific URL paths. Multiple partial path values can be specified. All paths starting with the configured values do not generate audit log entries. Optional. No default value. |
|
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 webAuditLogDisableUrlPaths = ["prometheus-metrics", "healthcheck"] 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”.
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 } } } } } } }