리더 선출 (leader election)

컴퓨터과학·AI
한 줄 정의: 분산 시스템의 여러 노드 중 조정 역할을 맡을 하나를 합의로 정하는 절차입니다.

쉽게 풀면

여러 서버가 대등하게 일하다가도, 누가 최종 결정을 내릴지 한 명은 정해야 하는 상황이 생깁니다. 리더 선출은 서로 통신해 그 한 대를 정하는 절차이며, 리더가 죽으면 남은 노드들이 알아서 새 리더를 뽑습니다. 이 과정에서 두 개의 리더가 동시에 생기지 않도록 하는 것이 가장 어려운 부분입니다.

왜 중요한가

쓰기를 한 곳으로 모아 순서를 정하면 분산 환경의 일관성 문제가 크게 단순해지기 때문에, 복제 데이터베이스·작업 스케줄러·분산 락 등 수많은 시스템이 리더를 둡니다. 동시에 리더는 단일 장애점이 되므로 빠르고 안전한 재선출이 가용성을 좌우합니다. Raft 합의 알고리즘처럼 현대 합의 프로토콜은 아예 리더 선출을 설계의 중심에 둡니다.

논문에서는 이렇게 쓰입니다

"리더 선출 시간 초과값을 무작위화하여 동시 후보 발생으로 인한 선거 반복을 완화하였다."

여러 노드가 동시에 후보로 나서 선거가 계속 실패하는 문제를 대기 시간을 흩어 해결했다는 뜻입니다.

조금 더 깊게 보면

보통 임기 번호를 붙여 진행하며, 리더의 심장박동이 일정 시간 오지 않으면 후보가 되어 임기 번호를 올리고 표를 요청합니다. 한 노드는 한 임기에 한 표만 주고 과반수를 얻어야 리더가 되므로, 같은 임기에 두 리더가 나올 수 없습니다. 네트워크 분단으로 옛 리더가 자신이 여전히 리더라 믿는 상황을 막기 위해 임기 번호 비교, 임차 기반 리더십, 펜싱 토큰 같은 장치를 함께 씁니다.

주의할 점

과반수 정족수를 얻지 못하는 쪽은 스스로 물러나야 하며, 그렇지 않으면 리더가 둘이 되는 분단 뇌 상태가 발생합니다. 합의 알고리즘 전체가 리더 선출과 같은 말은 아니며, 선출은 그 안의 한 단계이고 로그 복제와 안전성 보장이 별도로 필요합니다.

관련 용어