Como eleger um nó mestre entre os nós em execução em um cluster?

Estou escrevendo uma pilha de nuvem gerenciada (em cima de provedores de nuvem em nível de hardware como o EC2), e um problema que enfrentarei em breve é:

Como vários nós idênticos decidem qual deles se torna um mestre? (Ou seja, pense em 5 servidores em execução no EC2. Um deles precisa se tornar um mestre e outros precisam se tornar escravos.)

Eu li uma descrição deo algoritmo usado pelo MongoDB, e parece bastante complicado e também depende de um conceito de votos - ou seja, dois nós deixados em paz não poderão decidir nada. Além disso, sua abordagem tem um atraso significativo antes de produzir os resultados.

Gostaria de saber se existem abordagens menos complicadas e menos complicadas. Eles são amplamente utilizados ou são arriscados a serem adotados?

Suponha que já tenhamos uma lista de servidores. Em seguida, podemos apenas eleger o que está ativo e tem o menor endereço IP numericamente. Quais são as desvantagens dessa abordagem?

Por que o algoritmo do MongoDB é tão complicado?

Esta é uma duplicata deComo eleger um novo Master em Cluster?, que fornece menos detalhes e não tem sido respondida por seis meses, por isso considero apropriado iniciar uma nova pergunta.

(A pilha em que estou trabalhando é de código aberto, mas está em um estágio muito inicial de desenvolvimento, portanto não fornece um link aqui.)

UPDATE: com base nas respostas, eu criei um algoritmo de consenso simples, você pode encontrar uma implementação JavaScript (CoffeeScript) no GitHub:major.js.

questionAnswers(1)

yourAnswerToTheQuestion