3장. 안정적인 etcd 성능 및 확장성 보장
etcd를 사용하여 최적의 성능을 얻으려면 노드 스케일링, 리더 선택, 로그 복제, 튜닝, 대기 시간, 네트워크 지터, 피어 라운드 트립 시간, 데이터베이스 크기, Kubernetes API 트랜잭션 속도 등 성능에 영향을 미치는 조건을 이해하는 것이 중요합니다.
3.1. etcd의 리더 선택 및 로그 복제 링크 복사링크가 클립보드에 복사되었습니다!
etcd는 복제된 노드 클러스터로 작동하는 일관된 분산 키-값 저장소입니다. Raft 알고리즘에 따라 etcd는 하나의 노드를 리더로 선택하고 다른 노드를 팔로우로 선택하여 작동합니다. 리더는 시스템의 현재 상태를 유지하고 유망이 최신 상태인지 확인합니다.
리더 노드는 로그 복제를 담당합니다. 클라이언트에서 들어오는 쓰기 트랜잭션을 처리하고 팔로우에게 브로드캐스트한 Raft 로그 항목을 작성합니다.
kube-apiserver
와 같은 etcd 클라이언트가 쿼럼이 필요한 작업을 요청하는 etcd 멤버(예: etcd 멤버가 후속자인 경우)에 연결하면 트랜잭션을 리더로 보내야 함을 나타내는 메시지를 반환합니다.
etcd 클라이언트가 리더의 쿼럼이 필요한 작업을 요청하면 리더는 로컬 Raft 로그를 쓰는 동안 클라이언트 연결을 열린 상태로 유지하고, 팔로우에게 로그를 브로드캐스트하고, 대다수가 실패 없이 로그를 커밋하도록 승인할 때까지 기다립니다. 그러면 리더만 etcd 클라이언트에 승인을 보내고 세션을 종료합니다. 실패 알림은 미용사로부터 수신되고 대다수가 합의에 도달하지 못하면 리더는 클라이언트에게 오류 메시지를 반환하고 세션을 종료합니다.