2014-12-31 1 views

답변

8

한 가지 방법은 현재 선두를 반환합니다 http://<localhost_ip_address>:8500/v1/status/leader

이와 클러스터를 호출하는 것입니다. 그런 다음 로컬 IP 주소와 비교하여 반환 된 IP 주소를 확인하십시오.

+1

// 이것은 외부 프로그램이 누가 현재의 리더인지 알 수있는 방법입니다. 그러나 그것은 영사의 그 자체가 그것이 현재의 지도자라는 것을 어떻게 알고 있는지를 말하지 않습니다. –

+0

@ NathanBasanese 알렉산드레 산토스가 정답을 염려하지 않는다고 생각합니다. – jeremyjjbrown

11

영사 리더는 영사 서버 정족수 중 Raft Protocol 구현을 통해 선출됩니다. 서버로 구성된 영사 인스턴스 만 뗏목 프로토콜 통신에 참여합니다. Consul Agent (데몬)은 Client 또는 Server으로 시작할 수 있습니다. 서버 만 데이터 센터의 리더가 될 수 있습니다.

뗏목 프로토콜은 Paxos과 같은 기존 합의 프로토콜의 복잡성에 대한 응답으로 스탠포드 대학의 Diego Ongaro 및 John Ousterhout에 의해 작성되었습니다. 뗏목은 무작위 타이머의 사용을 통해 지도자를 선출합니다. 알고리즘은 Ongaro and Ousterhout's paper에 자세히 설명되어 있습니다.

클라이언트로 구성된 영사 인스턴스는 Serf을 기반으로하는 Gossip Protocol을 통해 클러스터와 통신합니다. 서프 커뮤니케이션은 결국 일관성이있다. Serf 클러스터에는 중앙 서버가 없으며 각 노드는 동일한 것으로 간주됩니다. Gossip/Serf Protocol에 참여하는 모든 노드 (클라이언트 및 서버)는 인접 라우터에 메시지를 전파하고 메시지가 전체 클러스터로 전파 될 때까지 이웃 노드로 메시지를 전파합니다. 좀비 종말의 감염 경로와 비슷합니다. 이는 잠재적으로 수만개의 노드로 확장되므로 클러스터의 통신 오버 헤드를 크게 줄이기 위해 수행됩니다.

영사 클라이언트는 모든 영사 서버로 메시지를 전달할 수 있습니다. 그러면 영사는 메시지를 리더에게 전달할 수 있습니다. 영사 클라이언트는 어떤 영사 서버가 지도자인지 신경 쓸 필요가 없습니다. 서버 만 신경 써야합니다.

모든 영사 서버에서 실행되는 Consul HTTP API은 어느 서버가 선두에 있는지 알려주므로 $ANY_CONSUL_SERVER/v1/status/leader에 있습니다. 그러나 이것은 영사 대리인이 지도자 선거를하는 방식과 아무런 관련이 없습니다.

+0

답변을 종료하는 것은 싫지만 첫 번째 5 문장은 질문과는 아무런 관련이 없으며 여섯 번째 문장에는 이전에 제공된 것과 동일한 답변이 포함되어 있습니다. –

+3

상담원이 클러스터의 리더임을 알리는 방법을 물었습니다. 에이전트의 유형은 누가 리더가 될 수 있는지를 좁히는 것과 관련이 있습니다. – jeremyjjbrown

관련 문제