Several Transformers can be configured into a cluster, to share the workload and avoid having a single point of failure.
Each Transformer in the cluster is a node; one (and only one) Transformer is designated as the primary node that controls the cluster and all the other Transformers in the cluster are secondary nodes. At run-time, the nodes communicate their status to each other.
There are several ways to specify which Transformer is the primary node:
- By default, through the textual order of the add-cluster-node items in the configuration file (the default).
- Through the force-primary configuration item.
- Dynamically through a UDP command sent to the Transformer instance that you want to be the primary.
- By allowing the node that has been running for the longest time to become the primary.
The Transformers forming a cluster exchange heartbeat messages at regular intervals, allowing each of them to check that all the others are still present. If a Transformer's cluster heartbeat times out, it waits a configurable time and then disconnects from the cluster and tries to reconnect to it. For more about this, see heartbeat-time and heartbeat-slack-time in Transformer Clustering configuration.
Distributing data amongst Transformers in the cluster
You can specify configuration to make the primary node (and only the primary) automatically distribute to the other nodes in the cluster any updates it receives or generates for designated subjects (see auto-distribute in Transformer Clustering configuration). You can also configure any node (whether primary or secondary) to automatically distribute updates for designated subjects (see always-auto-distribute).