Cluster

If you have a lot of load on your system or need increased resilience, then you should consider running the Axon Ivy Engine in a Cluster (Axon Ivy Engine Enterprise Edition). A Cluster setup has two major advantages:

  • Performance and scalability: An Axon Ivy Engine Enterprise Edition can serve more clients than the Axon Ivy Engine Standard Edition. If the number of your clients increases, you can add another Engine node to your Axon Ivy Engine Cluster.

  • High availability: In an Axon Ivy Engine Enterprise Edition installation, a single node may crash without affecting the other nodes that are still serving clients. However, if you require high availability of your Axon Ivy Engine you also need to ensure that all other components the engine depends on (Load Balancer, Database Server, File Share) have a high availability.

Compared to a single node setup you will be confronted with a more complex system, higher hardware costs and higher license fees as you will need an Enterprise License.

The diagram below shows how an Axon Ivy Engine Cluster setup looks like. A user accesses the Axon Ivy Engine Cluster over a load balancer that routes the traffic to the nodes of the cluster. All cluster nodes share the same system database and Elasticsearch server.

digraph overview {
  browser [ label="Browser", pos = "0,2.5!", width=1];

  loadbalancer [ label="Load Balancer",pos = "2.25,2.5!" width="1.5"];
 
  cluster [ label="Axon Ivy Cluster",pos = "5.4,2.5!" width=1.8 height=3.1 style="dotted" fontcolor="black" labelloc="t"];
  engine1 [label="Node 1", pos="5.4,3.2!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];
  engine2 [label="Node 2", pos="5.4,2.3!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];
  engine3 [label="Node 3", pos="5.4,1.4!", height="0.8", width="1.5", color="#C7D426", fontcolor="black"];
  
  systemdb [ label="System\nDatabase", pos="8,3.2!" width="1.5" height="0.8"]
  elasticsearch [ label="Elasticsearch", pos="8,1.4!" width="1.5" height="0.8"]

  browser -> loadbalancer [label="HTTPS" fontsize=11];
  loadbalancer -> cluster [label="HTTP\nHTTPS" fontsize=11];
  
  cluster -> systemdb [label="JDBC" fontsize=11];
  cluster -> elasticsearch [label="HTTP\nHTTPS" fontsize=11];
}

Runtime

We strongly recommend operating an Axon Ivy Engine Cluster in a containerized environment like Docker or Kubernetes. Build and run your own container image that contains all your projects and configuration.

See our example configurations on GitHub for NGINX and HAProxy on how to setup an Axon Ivy Engine Cluster with docker-compose.

Restrictions

The following restrictions have to be considered when running Axon Ivy Engine Cluster:

  1. Each node must use the same system database.

  2. Each node must use the same external Elasticsearch server.

  3. Each node must use the same service configurations.

  4. Configuration changes are only applied to the local cluster node where the change is done.

  5. Deployment during runtime is not supported and does not work.

Most of the restrictions can be solved by using a containerized environment with an own container image.