분산 배포
분산 배포 (Distributed Deployment)
Qdrant v0.8.0부터 사용 가능
Qdrant는 분산 배포 모드(distributed deployment mode) 를 지원해요.
이 모드에서는 여러 Qdrant 서비스가 서로 통신하며 피어(peer)들 사이에 데이터를 분산해서 저장 용량을 확장하고 안정성을 높여요.
Qdrant Cloud에서 분산 모드 활성화하기
최상의 결과를 위해서는 클러스터가 Qdrant v1.7.4 이상에서 실행 중인지 먼저 확인하세요. 더 오래된 Qdrant 버전도 분산 모드를 지원하지만, v1.7.4의 개선 사항 덕분에 분산 클러스터가 장애 중에 더 회복력이 좋아요.
분산 모드를 활성화하려면 Qdrant Cloud 콘솔에서 "Scale Cluster"를 클릭하고 원하는 노드 개수를 선택하세요.
추가로 Qdrant Cloud는 컬렉션을 자동으로 리밸런싱하고 리샤딩(reshard)하는 기능을 제공하는데, 이는 셀프호스팅 Qdrant에서는 사용할 수 없어요. 자세한 내용은 Resharding과 Shard Rebalancing 섹션을 참고하세요.
새 분산 Qdrant 클러스터 활용하기
- 각 노드에 충분한 샤드가 이미 있고 데이터가 이미 복제된 상태라면, 샤드를 이동(move)해서 데이터를 (복제 없이) 새 노드로 옮길 수 있어요.
샤딩 (Sharding)
Qdrant는 컬렉션의 포인트를 샤드들 사이에 분산해서 수평 확장을 해요. 샤딩의 개념에 대해서는 Horizontal Scaling의 Sharding 부분을 참고하세요.
올바른 샤드 개수 고르기
import { QdrantClient } from "@qdrant/js-client-rest";
client.createCollection("{collection_name}", {
vectors: { size: 300, distance: "Cosine" },
shard_number: 6,
});
리샤딩 (Resharding)
Cloud에서 v1.13.0부터 사용 가능
대규모 컬렉션의 리샤딩은 오래 걸릴 수 있어요. 컬렉션을 만들 때 원하는 샤드 개수를 설정하는 게 더 좋아요.
자세한 내용은 클라우드 문서의 Resharding 섹션을 참고하세요.
사용자 정의 샤딩 (User-Defined Sharding)
멀티테넌시 (Multitenancy)
테넌트 중심의 워크스루는 Multitenancy 가이드의 사용자 정의 샤딩을 참고하세요.
카디널리티가 큰 키(cardinality keys)는 대신 payload로 파티셔닝을 사용하는 걸 권장해요.
이제 커스텀 샤드를 만들어야 해요 (API reference).
샤드 전송 방식 (Shard Transfer Method)
stream_records— (기본값) 레코드를 대상 노드로 배치 단위로 스트리밍해서 전송.snapshot— 스냅샷을 자동으로 활용해 인덱스와 양자화된 데이터까지 포함해서 전송.wal_delta— (자동 복구 기본값) WAL 차이를 해결해, 놓쳤던 연산들만 전송.
샤드 전송 방식을 선택하려면 method를 지정해요:
POST /collections/{collection_name}/cluster
{
"move_shard": {
"shard_id": 0,
"from_peer_id": 381894127,
"to_peer_id": 467122995,
"method": "snapshot"
}
}
wal_delta 전송 방식은 두 샤드 사이의 차이만 전송해요. 더 정확히 말하면, 대상 샤드에 놓친 연산들을 모두 전송해요. 두 샤드의 WAL을 사용해 이를 해결해요. 두 가지 이점이 있어요: (1) 전송량이 적고, (2) 자동 복구 시 빠릅니다.
리스너 모드 (Listener Mode)
리스너 모드를 활성화하려면 config 파일에서 node_type을 Listener로 설정해요:
storage:
node_type: "Listener"
리스너 노드는 검색 연산에는 참여하지 않지만, 쓰기 연산은 받아들이고 데이터를 로컬 스토리지에 저장해요.