본문 바로가기
쿠버네티스,도커

RAFT 리더 선출 알고리즘

by 흰색남자 2022. 10. 11.

https://yoongrammer.tistory.com/50

 

 

etcd의 알고리즘에 대해서 알아보자.

ETCD의 리더 선출 알고리즘은 "분산 합의 알고리즘" 이라고 부른다.

여기서 합의란 클러스터 내부의 노드들이 데이터를 공유하는 상태 ( 동기화 ) 가 되는 것을 의미한다.

 

클러스터 내부에 노드들은 3가지 형태를 가진다.

1. Follower ( 팔로워 ) :   leader로부터 AppendEntry메시지를 받아 처리하는 상태

2. candidate ( 후보 ) : leader로 선출될 수 있는 후보군

3. Leader ( 리더 ) :  leader로 선출된 상태

 

 

 

리더 선출 과정

  1. 모든 노드는 follower 상태에서 시작
  2. election timeout이 시작하고, election timeout이 지난 노드들의 상태는 candidate 상태가 됨. 
    • election timeout - 팔로워가 후보자가 될 때까지 기다리는 시간(150ms~ 300ms)
  3. Candidate 노드는 자신에게 투표하고 RequestVotes RPC를 follower에게 보냅니다.
  4. Follower가 현재 term내에 투표한 적이 없다면 곧바로 투표 요청을 Candidate에게 응답(Vote)을 합니다.
    • 모든 노드는 term당 한번의 투표만 할 수 있습니다.
    • 응답을 한 Follower는 election timeout을 초기화합니다.
  5. 과반수 이상의 투표를 받은 Candidate는 Leader가 됩니다.

>> election timeout이 빠른 노드가 리더가 된다.

-- 리더가 죽는 경우에는?

3개였으면 하나가 죽고 2개의 노드끼리 위의 선출과정을 함.

 

 

 

# AppendEntry 메시지

Leader가 Log를 Follower에 전파하고 동기화가 되어 있지 않은 경우 동기화 시점을 찾기 위해서 사용

# RPC ( Remote Procedure Call )

프로그램이 다른 프로그램 API를 호출하는 것.