리더가 둘이었다 · 진짜 구현에서 다시 본다 · 퀴즈
퀴즈: etcd 에서 확인하기
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
5노드 etcd 클러스터에서 세 대가 동시에 내려갔다. 남은 두 대는?
- 읽기만 계속 처리하고 쓰기는 막는다
- 둘 중 하나가 리더가 되어 정상 동작한다
- 쓰기도 기본 읽기도 처리하지 못한다
- 자동으로 2노드 클러스터로 재구성된다
etcd 의 기본 읽기가 과반을 필요로 하는 이유는?
- 데이터가 팔로워에게만 저장되어 있기 때문
- 선형화 읽기가 Raft 합의 과정을 거치기 때문
- 리더가 읽기 요청을 팔로워에게 나눠 보내기 때문
- 읽기마다 새 리비전을 만들어 기록하기 때문
낡은 값을 받아들일 수 있다면 과반 없이도 읽는 방법은?
- 요청의 일관성 모드를 serializable 로 둔다
- 엔드포인트를 리더로만 지정한다
- 읽기 전에 defrag 를 돌린다
- --initial-cluster-state 를 existing 으로 바꾼다
`etcdctl move-leader` 를 쓸 때 지켜야 할 것은?
- 모든 멤버를 먼저 멈춰야 한다
- 넘겨받을 멤버의 엔드포인트에 보내야 한다
- 지금 리더인 엔드포인트에 보내야 한다
- 클러스터 토큰을 함께 넘겨야 한다
3노드 etcd 에서 한 대만 멈춘 상태의 쓰기는?
- 막힌다 — 모든 멤버의 확인이 필요하다
- 막힌다 — 멤버가 하나라도 빠지면 쓰기가 잠긴다
- 처리되지만 멈춘 멤버가 돌아오면 되돌려진다
- 정상적으로 처리된다 — 남은 둘이 과반이다
일시적인 네트워크 분할로 정족수를 잃었을 때 문서가 안내하는 태도는?
- 즉시 남은 멤버를 단일 노드 클러스터로 재구성한다
- 네트워크가 돌아오면 자동으로 안전하게 재개되므로 기다린다
- 스냅샷으로 곧바로 새 클러스터를 만든다
- 모든 멤버의 데이터 디렉터리를 지우고 다시 부트스트랩한다