The idea behind Redis Sentinel is a high availability approach. A configured quorum is taken as the number of Sentinel processes, which have to detect that the Master Node is not available anymore. During an election process the majority (or the configured quorum if its value is higher than the majority) of Sentinel processes is required to vote for a new master.
This idea seems to work for installations with at least 3 Sentinels.
What is with small installations on two nodes that like to be high available?
A setup could be to run a Redis MASTER on one box and a Redis SLAVE on the other box. The high availability results by running Redis Sentinel on both boxes, setting the quorum to 1 and monitoring both Redis instances via each sentinel instance. When the master box goes down (of course including the sentinel process) the other box could be able to decide on its own that the master is not available anymore and could elect (without any other sentinel) itself as the new master. What does argue against such behavior?
This approach does not work because Redis sentinel insists on the majority for an election. In our case we need 2 sentinel instances, but have only one up and running. In result you get an “-failover-abort-not-elected master” error and the not available MASTER stays master. Your application stops to work. Bye Bye high availability with Redis :(
I did not get the point why Redis sentinel makes a difference between the configured quorum and the majority that is required for a successful reelection. Especially in case of two Sentinel instances this behavior seems strange to me.
Is there no possibility to run Redis on two nodes with a high availability configuration?
A single process/server could have a bias view of the network.