Maintaining Admin Process Quorum

To avoid a "split-brain" scenario, NuoDB processes will automatically shutdown if they determine that they don’t form a majority quorum.

A quorum needs to be maintained for both Admin Processes (APs) and Transaction Engines (TEs).

For symmetrical configurations, for example where two data centres have the same number APs and TEs, neither data centre forms a majority quorum in the event of either a complete data centre outage or a network partition (interruption) between the two data centres.

To manage this scenario, it is typical to set up a third arbitrating site that hosts tiebreaker APs and TEs to ensure the surviving production site remains in a majority. The tiebreaker site simply serves to maintain the quorum to determine which of the production data centres is unreachable.

However, it is common that you would not want TEs on the arbitrating APs to service your production SQL applications. For this reason you can denylist those TEs to remove them from candidacy, that is, denylist those TEs from being selected to service a SQL application.

Denylisting TEs is supported via the use of assigning database process labels.

1. Register a load balancer filter that excludes the transaction engines with a label that denotes them as denylisted, e.g. region=tiebreaker :

nuocmd set load-balancer-config --is-global \
  --prefilter 'not(label(region tiebreaker))'

2. For all TEs in the tiebreaker region, be sure to set the process label that denotes them as denylisted, as follows:

nuocmd start process --engine-type TE \
  --labels region tiebreaker