It depends on a number of cluster nodes and High Availability configuration.
Basic limitations are:
~ Nomad (as ABIS service manager consist of 3 server nodes) - 2 Nomad server nodes must be up and running minimally.
> Very same situation may appear for other ABIS versions with ZooKeeper
~ N/2 +1 rule - At least half of the cluster nodes must be available to start the ABIS ( In the case that ABIS is stopped - after shutdown or reboot for example). It depends on the configuration, but this is a minimum requirement.
~ ABIS management services - There must be at least 1 of each running (Depends on the ABIS version, it may be one of each: message-processor, dispatcher, AMQ, data-service, integration-service, etc.) to keep the ABIS working.
~ Mirroring / Partitioning (Applicants DB may be divided between matcher nodes.) - Mirror nodes may go down, but ALL the partitions must be available.
EXAMPLES:
~ Nomad:
Scenario 1: Cluster of 120 ABIS nodes, 3 Nomad server nodes
-120 ABIS nodes are up, 2 Nomad server nodes are down -> Entire ABIS cluster is going down (Nomad HA cluster is down: 1 of 3 servers cannot vote himself as a cluster leader)
Scenario 2: Cluster of 120 ABIS nodes, 5 Nomad server nodes.
- 120 ABIS nodes are up, 2 Nomad server nodes are down -> ABIS cluster is working (Nomad cluster is up: 3 of 5 servers can vote cluster leader)
- 120 ABIS nodes are up, 3 Nomad server nodes are down -> ABIS cluster is NOT working (Nomad cluster is down: 2 of 5 servers cannot vote a cluster leader)
Nomad:
Nomad high-availability
ZooKeeper:
https://zookeeper.apache.org/
~ N/2 +1 rule:
Scenario 1: Cluster of 120 nodes was rebooted.
- All server are successfully rebooted -> ABIS cluster start to load templates
- 55 nodes remains offline -> 65 nodes of ABIS cluster start to load templates and provide service (must be allowed by a configuration)
- 65 nodes remains offline -> ABIS cluster will not start
~ ABIS management services:
Scenario 1: Cluster of 12 nodes with 1 AMQ, 1 manager and 11 matcher nodes
- Manager and AMQ services are at the same node and this node has been rebooted -> ABIS cluster stop working
Scenario 2: Cluster of 12 nodes with 3 AMQ, 3 manager and 11 matcher nodes
- 2 Manager/AMQ nodes went offline -> ABIS cluster is up (all partitions must be available)
~ Mirroring / Partitioning:
Scenario 1: Cluster of 12 nodes, 1 mirror, 12 partitions: 1 partition per node. (No HA cluster)
- 1 node went down -> ABIS cluster stop working (DB is not complete because 1 partition is not available)
Scenario 2: Cluster of 12 nodes, 2 mirrors, 6 partitions: 1 partition mirrored at 2 nodes.
- 6 nodes went down (nodes are at the same mirror) -> ABIS is working with 1 mirror (all 6 partitions are up).
Scenario 3: Cluster of 6 nodes, 3 mirrors, 2 partitions: 1 partition mirrored at 3 nodes.
- 4 nodes went down -> ABIS is working with 1 mirror (all 2 partitions are up). Example:
initial state:
Server name | AMQ | Manager | Extractor | Dispatcher | Matcher | |
Node 1 | ACTIVE | ACTIVE | ACTIVE | ACTIVE | PARTITION 1 | MIRROR 1 |
Node 2 | BACKUP | BACKUP | BACKUP | PARTITION 2 | MIRROR 1 | |
Node 3 | BACKUP | PARTITION 1 | MIRROR 2 | |||
Node 4 | PARTITION 2 | MIRROR 2 | ||||
Node 5 | PARTITION 1 | MIRROR 3 | ||||
Node 6 | BACKUP | BACKUP | BACKUP | BACKUP | PARTITION 2 | MIRROR 3 |
4 nodes down in 2 mirrors. DB is complete in 1 mirror (all partitions [PARTITION 1 and PARTITION 2] are available ). ABIS is working if configured properly:
Server name | AMQ | Manager | Extractor | Dispatcher | Matcher | |
Node 1 | ACTIVE | ACTIVE | ACTIVE | ACTIVE | PARTITION 1 | MIRROR 1 |
Node 2 | BACKUP | BACKUP | BACKUP | PARTITION 2 | MIRROR 1 | |
Node 3 | GONE | GONE1 | GONE 2 | |||
Node 4 | GONE2 | GONE 2 | ||||
Node 5 | GONE1 | GONE 3 | ||||
Node 6 | GONE | GONE | GONE | GONE | GONE 2 | GONE 3 |
3 partitions example:
Fully operational ABIS Cluster (All partitions up (3), two full database mirrors) | |
Functional HA | Non-functional HA (missing database partitions) |
ABIS 8 Documentation: https://abis.innovatrics.com/public/docu/index.html
Relevant ABIS version: Any