2014-12-31 11 views

risposta

8

Un modo è chiamando il cluster con http://<localhost_ip_address>:8500/v1/status/leader

Ciò restituirà l'attuale leader. Quindi basta controllare l'indirizzo IP restituito rispetto all'indirizzo IP locale.

+1

//, Questo è il modo in cui i programmi esterni sanno chi è l'attuale leader. Ma non dice come questa istanza di console sa che è l'attuale leader. –

+0

@NathanBasanese Non credo che AlexandreSantos si preoccupi di quale sia la risposta corretta. – jeremyjjbrown

11

Il leader del Console viene eletto tramite un'implementazione dello Raft Protocol tra il Quorum di Console Server. Solo le istanze di Consul che sono configurate come server partecipano alla comunicazione del protocollo raft. Il Consul Agent (il daemon) può essere avviato come Client o Server. Solo un server può essere il leader di un Datacenter.

Il Raft Protocol è stato creato da Diego Ongaro e John Ousterhout della Stanford University in risposta alla complessità dei protocolli di consenso esistenti come Paxos. Raft elegge un leader tramite l'uso di timer randomizzati. L'algoritmo è dettagliato in Ongaro and Ousterhout's paper.

Le istanze di console che sono configurate come client comunicano con il cluster tramite Gossip Protocol che si basa su Serf. La comunicazione Serf è alla fine coerente. Il cluster Serf non ha un server centrale, ogni nodo è considerato uguale. Tutti i nodi (clienti e server) che partecipano al protocollo Gossip/Serf diffondono messaggi ai loro vicini, che a loro volta diffondono messaggi ai loro vicini finché il messaggio non si è propagato all'intero cluster. Un po 'come il percorso di infezione di un'apocalisse zombi. Questo viene fatto per ridurre notevolmente il sovraccarico della comunicazione nel cluster mentre si adatta a potenzialmente decine di migliaia di nodi.

I client di console possono inoltrare messaggi a qualsiasi Console Server che inoltrerà il messaggio al Leader. I Consul Client non devono preoccuparsi di quale Console Server sia il Leader. Solo i server devono preoccuparsene.

Il Consul HTTP API in esecuzione su qualsiasi Console Server ti dirà quale Server è il leader su $ANY_CONSUL_SERVER/v1/status/leader. Tuttavia, questo non ha nulla a che fare con il modo in cui gli agenti Consul fanno le elezioni dei leader.

+0

Odio chiudere una risposta, ma le prime 5 frasi non hanno nulla a che fare con la domanda, mentre solo la sesta contiene la stessa risposta fornita in precedenza. –

+3

Hai chiesto come un agente sa che è il leader del cluster. Il tipo di agente ha tutto a che fare col restringere chi può essere il leader. – jeremyjjbrown

Problemi correlati