복원력
복원력 (Resilience)
Qdrant의 내결함성(fault tolerance) 은 복제(replication)와 노드 수(node count)에 의해 결정돼요. 이 둘이 함께, 노드 하나가 사라져도 데이터가 살아남는지, 그리고 노드 하나가 다운됐을 때 클러스터가 요청을 계속 처리하는지를 좌우해요.
복원력은 크게 세 갈래로 나눠 볼 수 있어요:
- 데이터 읽기·쓰기 가용성 — 노드가 다운된 동안에도 검색과 쓰기 요청이 계속 성공하는지. 노드가 다운됐을 때 서로 다르게 구성된 클러스터가 어떻게 동작하는지에 대한 자세한 내용은 "일시적 노드 장애"를 참고하세요.
- 클러스터 전역 연산 가용성 — 노드가 다운된 동안에도 컬렉션을 만들고, 수정하고, 삭제할 수 있는지. 복제 팩터와 무관하게 노드 과반수(majority)가 정상이어야 해요. 클러스터 크기별 동작은 Qdrant 노드를 몇 개 실행해야 할까를 참고하세요.
- 데이터 무결성 — 노드가 영구적으로 사져도 데이터가 살아남는지.
복원력 있는 Qdrant 클러스터 세팅하기
- 복제 팩터 (Replication factor) 는 각 샤드의 복사본 개수를 결정해요. 복사본이 많을수록 더 많은 노드 손실을 견뎌내요.
- 노드 수 (Node count) 는 그 복사본들을 얼마나 많은 독립 머신에 펼칠 수 있는지, 그리고 컬렉션을 관리하는 Raft consensus에서 몇 개 노드가 투표할 수 있는지를 결정해요.
주의할 점 몇 가지:
- 단일 노드 클러스터에서 높은 복제 팩터는 의미가 없어요. Qdrant는 같은 샤드의 복사본 여러 개를 한 노드에 할당하지 않거든요. 더 중요하게, 단일 장애 지점(single point of failure) 이 남아요. 노드가 실패하면 클러스터는 사용 불가능해지고, 노드가 복구 불가능하면 데이터를 잃어요.
- 복제 팩터가 1인데 노드 수가 많은 경우, 노드 하나가 실패하면 그 노드에 샤드를 가진 모든 컬렉션이 사용 불가가 돼요. 노드를 복구할 수 없다면 그 노드가 보유한 데이터는 (나머지 클러스터가 계속 돌아가도) 영구 소실돼요.
일시적 노드 장애 (Temporary Node Failure)
분산 모드로 Qdrant를 실행하면 노드 하나가 일시적으로 실패해도 클러스터가 장애에 저항하게 돼요. 서로 다르게 구성된 Qdrant 클러스터의 응답은 다음과 같아요:
- 1-노드 클러스터 — 디스크에서 재시작하고 데이터를 로드하는 데 걸리는 시간에 따라 모든 연산이 최대 몇 분 동안 타임아웃되거나 실패.
- 샤드가 복제되지 않은 2-노드 클러스터 — 재시작하고 로드하는 시간에 따라 모든 연산이 최대 몇 분 동안 타임아웃되거나 실패.
- 모든 샤드가 양쪽 노드에 복제된 2-노드 클러스터 — 컬렉션 관련 연산을 제외한 모든 요청이 장애 중에도 계속 동작.
- 모든 샤드가 최소 2개 노드에 복제된 3+ 노드 클러스터 — 모든 요청이 장애 중에도 계속 동작.
멀티-AZ 배포 (Multi-AZ Deployments)
가용 영역(AZ, Availability Zone) 은 클라우드 제공자의 인프라에서 격리된 구역이에요. 보통 리전 안의 별도 데이터 센터 또는 데이터 센터 그룹으로, 자체 전력과 네트워킹을 갖춰요.
복제가 포함된 다중 노드 클러스터를 만들어도 레플리카가 자동으로 AZ에 분산되지는 않아요. 모든 레플리카가 같은 영역에 위치할 수 있으므로, 복제 팩터가 2 이상이어도 단일 영역 장애가 샤드의 모든 레플리카를 한꺼번에 쓰러뜨릴 수 있어요.
Qdrant Cloud 프리미엄 티어에서는 클러스터 생성 시 Multi AZ 체크박스를 선택하면 Qdrant가 zone-aware가 되어, 각 샤드가 다른 영역에 레플리카를 갖도록 샤드를 AZ에 자동으로 분산하고 영역 사이의 트래픽을 라우팅해요.
셀프호스팅 Qdrant 클러스터는 zone-awareness가 없어서 레플리카를 AZ에 자동 분산하지 않아요. 직접 노드를 여러 영역에 펼친 다음, 각 샤드가 서로 다른 영역에 레플리카를 최소 하나 갖도록 레플리카를 이동해야 해요.
장애 조치 모범 사례 (Failover Best Practices)
이 모든 것은 복제된 데이터가 여러 노드에 펼쳐져 있는 것에 의존해요.
- 영역 수준 장애로부터 보호가 필요하면 Multi-AZ를 활성화하세요. 복제만으로는 노드(따라서 레플리카)가 서로 다른 가용 영역에 펼쳐진다고 보장하지 못해요.
- Qdrant Cloud(Managed, Hybrid, Private)는 복제 위에 자동 장애 조치를 더해줘요. 클러스터가 손실을 견딜 충분한 레플리카를 갖고 있다면, 수동 개입 없이 실패한 노드를 감지하고 교체해 줘요.
다음으로 갈 곳
- Distributed Deployment — 분산 모드 활성화, 샤딩, 복제, 노드 장애 복구 등 실전 구성.