개요
사전 프로덕션 또는 프로덕션 환경의 요구 사항을 충족하기 위해 다양한 배포서버 유형, cloud 제공자, 클러스터 계층으로 클러스터 구성할 수 있습니다. 이러한 권장 사항을 사용하여 벡터 검색 수행하기 위한 배포서버 유형, cloud 제공자 및 리전, 클러스터 및 검색 계층을 선택합니다.
환경 | 배포 유형 | 클러스터 계층 | 클라우드 제공자 리전 | 노드 아키텍처 |
|---|---|---|---|---|
쿼리 테스트 | Flex or dedicated cluster Local deployment | M0, Flex, or higher tierN/A | All N/A | MongoDB 및 Atlas Search 프로세스는 동일한 노드에서 실행됩니다. |
프로토타입 애플리케이션 | 전용 클러스터, 샤딩 또는 비샤딩 |
| 모두 | MongoDB 및 Atlas Search 프로세스는 동일한 노드에서 실행됩니다. |
프로덕션 | 별도의 검색 노드가 있는 전용 클러스터, 샤딩 또는 비샤딩 |
| MongoDB 와 Atlas Search 프로세스는 서로 다른 노드에서 실행됩니다. |
다음 섹션에서는 각 환경을 설명합니다.
테스트 및 프로토타입 제작 환경
검색 쿼리를 테스트하고 애플리케이션을 프로토타입을 만드는 데는 다음 섹션에 설명된 배포 유형 및 노드 아키텍처가 권장됩니다.
이 구성은 다음과 같은 사용 사례에 가장 적합합니다.
인덱스 할 총 문서 2M 미만
10GB 미만의 인덱싱된 데이터
7일 동안 10,000건 미만의 쿼리
사용량이 명시된 값을 초과하면 전용 검색 노드로 마이그레이션하세요.
다음 섹션에서 이 노드 아키텍처를 더 자세히 설명합니다.
- 배포 유형
cloud 의 클러스터에서 MongoDB Search 쿼리를 테스트하려면 Flex 또는 전용 클러스터 배포 하면 됩니다.
로컬에서 MongoDB Search 쿼리를 테스트하려면 Atlas CLI 사용하여 로컬 Atlas 배포서버 만듭니다. 이는 로컬 컴퓨터에서 호스팅되는 단일 노드 복제본 세트 일 수 있습니다. 로컬 배포는 로컬 머신의 CPU, 메모리 및 저장 리소스에 의해 제한을 받습니다. 애플리케이션 프로덕션할 준비가 되면 로컬 Atlas 배포서버 프로덕션 환경으로 마이그레이션 .
- Cluster Tiers
MongoDB Search 쿼리를 테스트하려면 무료(
M0) 및 Flex 클러스터를 사용하세요.애플리케이션 프로토타입을 제작하려면 전용
M10,M20및 상위 계층 클러스터를 사용하거나 워크로드 격리를 위한 전용 검색 노드 를 배포. 애플리케이션 프로덕션 환경에서 대규모 데이터 세트를 처리하다 할 준비가 되면 상위 계층으로 업그레이드 .- 클라우드 제공자 및 리전
지원되는 클라우드 공급자 리전을 사용하세요.
선택한 cloud 제공자 및 리전에 따라 클러스터 계층에 사용할 수 있는 구성 옵션과 클러스터 실행 비용에 영향을 미칩니다.
노드 아키텍처
테스트 및 프로토타입 환경의 경우, MongoDB 프로세스와 MongoDB Search 프로세스가 동일한 노드 에서 실행 노드 아키텍처를 권장합니다. 이 배포서버 모델의 다음 다이어그램에서 MongoDB Search mongot 프로세스 Atlas cluster 의 각 노드 에서 mongod 와 함께 실행되며 동일한 리소스를 주식 .

기본값 으로 Atlas 첫 번째 MongoDB Search 인덱스 생성할 때 mongod 프로세스 실행하는 동일한 노드 에서 MongoDB Search mongot 프로세스 활성화합니다.
쿼리 실행 때 MongoDB Search는 구성된 읽기 설정 (read preference) 사용하여 쿼리 실행 노드 식별합니다. 쿼리 먼저 복제본 세트 클러스터 의 경우 mongod, 샤딩된 클러스터 의 경우 mongos 인 MongoDB 프로세스 로 이동합니다.
복제본 세트 클러스터 의 경우 mongod 프로세스 쿼리 를 동일한 노드 의 mongot 로 라우팅합니다. 샤딩된 클러스터의 경우, 클러스터 데이터는 mongod 인스턴스(샤드)로 분할되며 각 mongot 프로세스 동일한 노드 의 mongod 인스턴스 에 있는 데이터에만 액세스 할 수 있습니다. 따라서 특정 샤드 대상으로 하는 MongoDB Search 쿼리를 실행 수 없습니다. mongos 는 쿼리 모든 샤드로 라우팅하여 이러한 분산 수집 쿼리를 만듭니다. 구역을 사용하여 클러스터 의 샤드 하위 집합에 샤딩된 컬렉션 배포하는 경우, MongoDB Search는 쿼리 중인 컬렉션 의 샤드가 포함된 구역 으로 쿼리 $search 를 라우팅하고 쿼리를 샤드에 대해서만 실행합니다. 컬렉션 이 위치합니다.
쿼리 MongoDB Search mongot 프로세스 로 라우팅된 후 mongot 프로세스 검색 및 점수 산정을 수행하고 일치하는 결과에 대한 문서 ID 및 기타 검색 메타데이터 해당 mongod 프로세스 에 반환합니다. 그런 다음 mongod 프로세스 일치하는 결과에 대해 암시적으로 전체 문서 조회를 수행하고 결과를 클라이언트 에 반환합니다. 쿼리 에 $search 동시 옵션을 사용하는 경우 MongoDB Search는 쿼리 내 병렬 처리를 활성화합니다. 자세히 학습 세그먼트 간 쿼리 실행 병렬 처리를 참조하세요.
mongot 프로세스에 대해 자세히 알아보려면 쿼리 처리를 참조하세요.
MongoDB Search 인덱스 에 저장된 소스 필드를 정의하여 mongot 프로세스 mongot에 지정된 필드를 저장 수 있도록 할 수 있습니다. 그런 다음 데이터베이스 에서 전체 문서 조회를 수행하는 대신 MongoDB Search 쿼리 에서 returnStoredSource 옵션 을 사용하여 일치하는 문서에 대한 저장된 필드를 mongot 에서 직접 조회 할 수 있습니다.
혜택
MongoDB Search를 활성화 데이터베이스 와 자동으로 동기화되는 완전 managed 통합 검색 엔진 을 통해 데이터 위에 검색 쉽게 빌드 할 수 있습니다. MongoDB Search는 다른 MongoDB 집계 파이프라인 단계 및 점수 기반 결과 순위와 함께 전체 텍스트 검색에는 $search 및 $searchMeta, 시맨틱 검색에는 $vectorSearch 와 같은 MongoDB 집계 파이프라인 단계 단계를 사용하는 풍부한 쿼리 언어를 제공합니다.
클러스터 에 프로비저닝된 리소스에 따라 동일한 노드 에 두 프로세스를 배포하는 것이 별도의 전용 노드 에서 검색 프로세스 실행 보다 비용 효율적일 수 있습니다.
제한 사항
데이터베이스 mongod와 검색 mongot 프로세스 간에 리소스 경합이 발생할 수 있습니다. 이는 인덱스 성능과 쿼리의 지연 시간에 부정적인 영향을 미칠 수 있습니다. 프로덕션에 즉시 사용할 수 있는 애플리케이션과 해당 검색 워크로드를 지원하려면 전용 검색 노드로 마이그레이션하세요.
비용
클러스터 에서 MongoDB Search를 활성화 하면 추가 요금이나 요금이 부과되지 않습니다. 그러나 대규모 인덱싱된 컬렉션 또는 인덱스 정의의 경우 클러스터 의 리소스 사용률이 증가할 수 있습니다.
고려 사항
mongod 및 mongot 프로세스가 모두 동일한 노드 에서 실행 특정 상황에서는 mongot 을(를) 사용하지 못할 수 있습니다. 다음 표에서는 잠재적인 원인에 대해 설명합니다.
원인 | 설명 |
|---|---|
클러스터 계층 확장 - 네트워크 스토리지 | 클러스터 확장하다 또는 축소하면 Atlas 새 인스턴스 프로비저닝합니다. 인스턴스 준비되면 Atlas 네트워크 저장 연결하고 새 노드에서
|
클러스터 계층 확장 - 로컬 SSD | 로컬 SSD 사용하여 Atlas cluster 확장하다 경우 저장 유지했다가 새 노드에 다시 연결할 수 없습니다. 따라서 Atlas 초기 동기화 수행하여 검색 인덱스를 다시 작성합니다. 초기 동기화 완료될 때까지 검색 쿼리가 실패합니다. |
루센 다운그레이드 | 드문 경우지만 루센 다운그레이드해야 하는 경우 최신 루센 인덱스 형식을 읽지 못할 수도 있습니다. |
스토리지 조정 | Atlas cluster 노드에 연결된 네트워크 저장 유지할 수 있습니다. 이를 통해 그러나 클러스터 로컬 NVMe 디스크를 사용하는 특정 리전 또는 기타 드문 상황에서는 네트워크 저장 유지하지 못할 수 있습니다. 이러한 경우 Atlas 초기 동기화 수행하며 초기 동기화 완료될 때까지 검색 쿼리가 실패합니다. |
|
|
새 | 클러스터 에 새 노드 추가하면 Atlas 초기 동기화 수행하여 검색 인덱스를 생성합니다. 새 |
인스턴스 재부팅 또는 교체 |
|
|
|
프로덕션 환경
프로덕션 준비가 완료된 애플리케이션의 경우, 다음 섹션에 설명된 배포 유형 및 노드 아키텍처를 사용하는 것이 좋습니다.
이 구성은 다음과 같은 사용 사례에 가장 적합합니다.
기존 테스트 환경을 프로덕션으로 마이그레이션 로 선택한 경우, 클러스터 에 전용 검색 노드를 추가하세요. 자세히 학습 전용 검색 노드로 마이그레이션을 참조하세요.
새 프로덕션 배포서버 처음부터 만드는 경우 MongoDB Search를 사용할 수 있는 리전 및 구역에서 MongoDB Search를 지원
M10이상의 계층 클러스터를 사용해야 하며 환경에 전용 검색 노드를 추가합니다. 자세히 학습 전용 검색 노드 추가를 참조하세요.
- 배포 유형
프로덕션 준비가 완료된 애플리케이션의 경우
M10,M20및 상위 전용 클러스터 계층을 사용하세요. 이러한 더 높은 계층의 클러스터는 대용량 데이터 세트와 프로덕션 워크로드를 처리할 수 있습니다.전용 검색 노드도 배포 것이 좋습니다. 검색 요구 사항이 증가하는 경우, MongoDB 노드 확장 과 독립적으로 검색 배포서버 확장하다 할 수 있습니다.
- 클라우드 제공자 및 리전
모든 Google Cloud 리전과 일부 AWS 및 Azure 리전에서 검색 노드를 사용합니다. 검색 노드를 배포에 사용할 수 있는 클라우드 공급자와 리전을 반드시 선택해야 합니다.
모든 클러스터 계층은 지원되는 클라우드 공급자 리전에서 사용할 수 있습니다. 선택한 클라우드 공급자와 리전은 클러스터에 사용할 수 있는 구성 옵션 및 검색 계층과 클러스터 실행 비용에 영향을 줍니다.
노드 아키텍처
프로덕션 환경의 경우, MongoDB 프로세스와 MongoDB Search 프로세스가 별도의 노드에서 실행 노드 아키텍처를 권장합니다. 별도의 검색 노드를 배포 하려면 전용 검색 노드로 마이그레이션을참조하세요.
이 배포서버 모델의 다음 다이어그램에서 MongoDB Search mongot 프로세스 mongod 프로세스 실행되는 클러스터 노드와는 별도의 전용 검색 노드에서 실행됩니다.

Atlas는 각 클러스터 또는 클러스터의 각 샤드에 대해 검색 노드를 배포합니다. 예를 들어 샤드가 3개인 클러스터에 검색 노드 2개를 배포하면, Atlas는 검색 노드를 6개(샤드당 2개) 배포합니다. 또한 검색 노드 수와 각 검색 노드에 프로비저닝된 리소스의 양을 구성할 수도 있습니다.
별도의 검색 노드를 배포 경우 Atlas 인덱싱 위해 각 mongot 에 대해 mongod 를 자동으로 할당합니다. mongot 는 mongod 와 동기화 저장하는 인덱스에 대한 인덱스 변경 사항을 수신하고 동기화합니다. MongoDB Search는 mongod 및 mongot 프로세스가 모두 동일한 노드 에서 실행 배포서버 와 유사하게 쿼리를 인덱싱하고 처리합니다. 자세한 학습은 지원되는 클라이언트 와 쿼리 및 인덱스를 참조하세요. 검색 노드를 별도로 배포하는 방법에 대해 자세히 학습하려면 워크로드 격리를 위한 검색 노드를 참조하세요.
검색 노드로 마이그레이션할 때, Atlas는 검색 노드를 배포하지만 검색 노드에서 클러스터의 모든 인덱스를 성공적으로 구축할 때까지 해당 노드에서 쿼리를 제공하지 않습니다. Atlas가 새로운 노드에서 인덱스를 구축하는 동안 클러스터 노드에 있는 인덱스를 사용하여 계속해서 쿼리를 제공합니다. Atlas는 검색 노드에서 인덱스를 성공적으로 구축하고 클러스터 노드에서 인덱스를 제거한 후에만 검색 노드에서 쿼리를 제공하기 시작합니다.
참고
검색 노드를 추가하거나 검색 계층 변경하여 클러스터 확장하면 전체 MongoDB Search 인덱스 의 재구축이 트리거됩니다. 그러나 AWS의 클러스터 에 고객 키 관리를 사용한 미사용 데이터 암호화를 활성화하지 않은 전용 검색 노드가 있는 경우, Atlas 다음과 같은 최적화를 제공합니다.
검색 노드를 확장하다 때 Atlas 새 노드 에서 전체 MongoDB Search 인덱스 다시 작성하는 대신 S 에 있는 인덱스 의 최근 복사본을 사용합니다.3
기존 노드의 경우 Atlas 주기적으로 인덱스 파일의 새로운 증분 목록을 가져와 업로드합니다. Atlas 최대 14(14)일 동안 인덱스 파일을 보관합니다.
Google Cloud 또는 Azure 에 전용 검색 노드가 있는 클러스터에서는 아직 이 기능을 사용할 수 없습니다.
쿼리를 실행하면 쿼리가 구성된 읽기 설정에 따라 mongod로 라우팅됩니다. mongod 프로세스는 동일한 노드의 로드 밸런서를 통해 검색 쿼리를 라우팅하며, 로드 밸런서는 mongot 프로세스 전체에 요청을 분산합니다.
MongoDB Search mongot 프로세스 검색 및 점수 산정을 수행하고 일치하는 결과에 대한 문서 ID 및 메타데이터 mongod에 반환합니다. 그런 다음 mongod 는 일치하는 결과에 대해 전체 문서 조회를 수행하고 결과를 클라이언트 에 반환합니다. $search 쿼리 에 동시 옵션을 사용하는 경우 MongoDB Search는 쿼리 내 병렬 처리를 활성화합니다. 자세히 학습 세그먼트 간 쿼리 실행 병렬 처리를 참조하세요.
클러스터 의 모든 검색 노드를 삭제 하면 검색 쿼리 결과 처리 중단됩니다. 자세히 학습 클러스터 수정을 참조하세요. Atlas cluster 삭제 하면 Atlas 일시 중지된 후 연결된 모든 MongoDB Search 배포(mongot 프로세스)를 삭제합니다.
MongoDB Search 인덱스 에 저장된 소스 필드를 정의하여 mongot 프로세스 mongot에 지정된 필드를 저장 수 있도록 할 수 있습니다. 그런 다음 데이터베이스 에서 전체 문서 조회를 수행하는 대신 MongoDB Search 쿼리 에서 returnStoredSource 옵션 을 사용하여 일치하는 문서에 대한 저장된 필드를 mongot 에서 직접 조회 할 수 있습니다.
혜택
별도의 검색 노드를 배포하면 다음과 같은 이점이 있습니다.
- 고가용성
- 별도의 검색 노드를 배포할 때 Atlas는 장애나 중단 시 최소한의 다운타임으로 작업 부하가 계속 작동하도록 최소 두 개의 검색 노드를 작용합니다.
- 확장성
별도의 검색 노드를 배포하면 MongoDB 클러스터와 독립적으로 스토리지와 컴퓨팅을 확장할 수 있습니다. 이를 통해 쿼리 부하를 MongoDB와 독립적으로 확장할 수도 있습니다.
검색 노드를 수평으로 확장하다 하려면 검색 노드 수를 늘리거나 줄입니다. 최소 2 개에서 최대 32 개의 검색 노드까지 프로비저닝할 수 있습니다. 쿼리 로드의 균형을 맞추기 위해 MongoDB Search는 사용 가능한 모든 검색 노드에 검색 쿼리를 분산합니다.
검색 노드를 수직으로 확장하려면, 전체 텍스트 워크로드를 지원하는 다양한 검색 계층, CPU, RAM 및 스토리지 구성을 선택하세요.
- 성능
전용 검색 노드를 배포하면
mongod및mongot프로세스 모두에 대한 성능 및 리소스 사용률이 향상되고 이러한 프로세스 간의 리소스 경합이 제거됩니다.전용 검색 노드는 MongoDB Search가 여러 인덱스 세그먼트를 동시에 검색 할 수 있는 동시 세그먼트 검색 지원 . 경우에 따라 동시 세그먼트 검색 사용하면 쿼리 응답 시간이 향상됩니다.
검색 노드 크기 조정 및 확장 팁
검색 노드의 메모리 요구 사항을 확인하려면 다음 Atlas 지표를 사용하세요.
검색 인덱스의 크기
검색 노드의 총 RAM
검색 노드에 10GB 검색 인덱스와 총 4GB RAM이 있는 애플리케이션을 가정해 보겠습니다. 이 경우 다른 프로세스에서 1GB의 RAM을 사용하고 인덱스 데이터에 3GB만 사용할 수 있다면, 인덱스 데이터의 나머지 7GB(10GB - 3GB = 7GB)는 필요에 따라 디스크에서 페이징됩니다. 디스크에서 페이징이 빈번하게 이루어지면 페이지 오류, 디스크 I/O, CPU IOWait가 증가하여 성능 저하가 초래됩니다.
RAM이 더 많은 상위 검색 클러스터 계층(예: 8GB 이상)을 사용하면, Atlas가 메모리에서 검색 인덱스의 데이터를 대부분 제공하여 디스크 읽기와 페이지 오류를 최소화하고 성능을 개선할 수 있습니다.
참고
검색 노드에 사용되는 로컬 SSD는 인덱스 작업을 지원하기 위해 20% 스토리지 오버헤드가 필요합니다.
검색 노드 비용
MongoDB는 전용 (M10 이상) 클러스터에서 별도의 검색 노드를 지원합니다. 검색 노드는 컴퓨팅 집약적인 NVMe 인스턴스에 배포됩니다. 노드는 두 개 이상 배포해야 합니다. 노드마다 매일 시간당 리소스 사용에 대한 요금이 청구됩니다. 자세한 사항은 검색 노드 비용을 참조하세요.
미사용 데이터 암호화 활성화
기본값으로 MongoDB와 검색 프로세스 는 동일한 노드에서 실행. 이 아키텍처에서는 고객 관리 암호화 데이터베이스 데이터에 적용되지만 검색 인덱스에는 적용 되지 않습니다.
전용 검색 노드를 활성화 하면 검색 프로세스가 별도의 노드에서 실행 . 이를 통해 검색 노드 데이터 암호화를 활성화 할 수 있으므로 동일한 고객 관리 키로 데이터베이스 데이터와 검색 인덱스를 모두 암호화하여 포괄적인 암호화 적용 범위를 확보할 수 있습니다.
자세한 내용은 검색 노드에 대한 고객 키 관리 활성화를 참조하세요.
참고
이 기능은 KMS 제공자 전반에서 사용할 수 있지만 검색 노드는 AWS에 있어야 합니다.
전용 검색 노드 추가
새 클러스터에 전용 검색 노드를 추가하면 다음을 수행할 수 있습니다.
클러스터와 독립적으로 검색 배포의 크기와 규모를 변경합니다.
동일한 노드에서 MongoDB 데이터베이스와 검색 프로세스를 모두 실행하는 클러스터에서 발생할 수 있는 리소스 경합을 제거합니다.
전용 검색 노드를 추가하려면:
노드 격리를 지원하는 클라우드 공급자 및 리전에서
M10이상 계층으로 클러스터를 생성합니다. 자세한 내용은 클러스터 생성을 참조하세요.전용 검색 노드는
M10이상 클러스터 계층 및 노드 격리를 지원하는 cloud 제공자 리전에서만 지원됩니다.Search Nodes for workload isolation 을 활성화하고 검색 노드를 구성합니다.
전용 Atlas Search 노드로 마이그레이션
스테이징에서 프로덕션으로 마이그레이션 하고 전용 검색 노드를 추가하려면 기존 스테이징 및 프로토타입 배포서버 를 다음과 같이 변경합니다.
배포 환경에서 Flex 클러스터를 사용하는 경우 클러스터 계층을 더 높은 계층으로 변경하세요. 전용 검색 노드는
M10이상 클러스터 계층에서만 지원됩니다.검색 노드를 사용할 수 있는 리전에 클러스터를 배포합니다. 전용 검색 노드는 일부 AWS 및 Azure 리전과 지원되는 모든 Google Cloud 리전에서 사용할 수 있습니다. 검색 노드를 사용할 수 없는 리전에 기존 클러스터가 호스팅된 경우 클러스터를 검색 노드를 사용할 수 있는 리전으로 마이그레이션하세요. 자세한 내용은 노드 격리를 지원하는 클라우드 공급자 리전을 참조하세요.
Search Nodes for workload isolation을 활성화하고 검색 노드를 구성합니다. 자세한 내용은 검색 노드 추가를 참조하세요.
전용 검색 노드를 배포 하면 다음과 같은 일련의 작업이 수행됩니다.
Atlas는 검색 노드에서 검색 인덱스를 생성하고 클러스터 노드에서 검색 인덱스를 제거합니다.
Atlas는 검색 쿼리를 검색 노드로 라우팅합니다.
MongoDB Search는 검색 인덱스를 사용하여 클러스터 에 대한 쿼리를 제공 .
배포 문제 해결
Failed to Execute search Command 오류
mongot를 mongod와 함께 실행하도록 배포하고 검색 노드를 구성하지 않으면, 다음 이벤트 중 하나에서 mongot가 종료되고 Failed to Execute search Command 오류를 반환할 수 있습니다.
클러스터 확장
노드 페일오버
업그레이드 중
mongot
전용 검색 노드에 mongot를 배포하면, mongod는 프록시를 사용하여 mongot 프로세스가 활성화된 정상 노드로만 검색 쿼리를 라우팅합니다.