Quorum algorithm examples


The CLUSTER option for Status Computation uses the QUORUM impact function, which is described as follows:

When you create a quorum type of StatusModel, you can specify a percentage, called the quorum percentage. The quorum value is given by the quorum slot of the BMC_STATUS_COMPUTATION instance.

The impact_status is the highest propagated_status that a quorum percentage of provider agrees on.

An easy computation of the quorum status can be performed as follows:

  • There are n providers with propagated_status different from NONE: let i be the lowest integer that is greater than or equal to quorum* n /100.
  • Consider the array of propagated_status ordered from highest to lowest status.
  • The impact_status is the status corresponding to the element i of this array.
Example

CASE A website 1 (quorum-based component status computation)
host1
host2
Example A1

QUORUM=50, host1=OK, host2=IMPACTED

50*2/100 = 1 => i = 1
array = [IMPACTED, OK]
The percentage of hosts that are not AVAILABLE is 50%, which breaches the quorum threshold, so the status of website 1 is IMPACTED.
Example A2

QUORUM=51, host1=OK, host2=IMPACTED 

1 < 51*2/100 < 2 => q = 2
array = [IMPACTED, OK]
The percentage of hosts that are not OK is 50%, which does not breach the quorum threshold, so the status of website 1 is OK.
Example A3

QUORUM=51, host1=MINOR, host2=IMPACTED

1 < 51*2/100 < 2 => q=2
array = [IMPACTED, MINOR]
There is indeed at least 51% of the providers (actually 100%) that state a severity at least MINOR, so the status of website 1 = MINOR
CASE B website 2 (quorum-driven, impact-based component status computation)
host1
host2
host3
host4
Example B1

quorum_percent=30, host1=OK, host2=OK, host3=OK, host4=Minor

1<30*4/100<2=>q=2
array = [MINOR, OK, OK, OK]
The percent of hosts that are not UNAVAILABLE is 25%, which is less than 30%, so the status of website2 is OK.
Example B2

quorum_percent=30, host1=OK, host2=OK, host3=UNAVAILABLE, host4=MINOR

1 < 30*4/100 < 2 => q = 2
array = [UNAVAILABLE, MINOR, OK, OK]
There is at least 30% (actually 50%) of the providers that state a severity of at least MINOR, so the status of website 2 is MINOR.
Example B3

quorum_percent=60, host1=MINOR, host2=OK, host3=UNAVAILABLE, host4=UNAVAILABLE

2 < 60*4/100 < 3 => q=3
array = [UNAVAILABLE, UNAVAILABLE, MINOR, OK]
There is at least 60% (actually 75%) of the providers that state a severity at least MINOR, so the status of website 2 = MINOR

 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*