https://yoongrammer.tistory.com/50
etcd의 알고리즘에 대해서 알아보자.
ETCD의 리더 선출 알고리즘은 "분산 합의 알고리즘" 이라고 부른다.
여기서 합의란 클러스터 내부의 노드들이 데이터를 공유하는 상태 ( 동기화 ) 가 되는 것을 의미한다.
클러스터 내부에 노드들은 3가지 형태를 가진다.
1. Follower ( 팔로워 ) : leader로부터 AppendEntry메시지를 받아 처리하는 상태
2. candidate ( 후보 ) : leader로 선출될 수 있는 후보군
3. Leader ( 리더 ) : leader로 선출된 상태
리더 선출 과정
- 모든 노드는 follower 상태에서 시작
- election timeout이 시작하고, election timeout이 지난 노드들의 상태는 candidate 상태가 됨.
- election timeout - 팔로워가 후보자가 될 때까지 기다리는 시간(150ms~ 300ms)
- Candidate 노드는 자신에게 투표하고 RequestVotes RPC를 follower에게 보냅니다.
- Follower가 현재 term내에 투표한 적이 없다면 곧바로 투표 요청을 Candidate에게 응답(Vote)을 합니다.
- 모든 노드는 term당 한번의 투표만 할 수 있습니다.
- 응답을 한 Follower는 election timeout을 초기화합니다.
- 과반수 이상의 투표를 받은 Candidate는 Leader가 됩니다.
>> election timeout이 빠른 노드가 리더가 된다.
-- 리더가 죽는 경우에는?
3개였으면 하나가 죽고 2개의 노드끼리 위의 선출과정을 함.
# AppendEntry 메시지
Leader가 Log를 Follower에 전파하고 동기화가 되어 있지 않은 경우 동기화 시점을 찾기 위해서 사용
# RPC ( Remote Procedure Call )
프로그램이 다른 프로그램 API를 호출하는 것.
'쿠버네티스,도커' 카테고리의 다른 글
컨테이너 기술, 쿠버네티스, 도커 (0) | 2022.11.21 |
---|---|
pv, pvc, po, svc (0) | 2022.10.12 |
쿠버네티스 정리중 (0) | 2022.10.10 |
쿠버네티스 kubeadm을 사용한 설치 시작부터 끝까지. (2) | 2022.10.08 |
쿠버네티스 kubeadm 설치 과정 정리. (0) | 2022.10.07 |