AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

MongoDB Search 및 Vector Search 배포

Kubernetes 클러스터에 MongoDB Search 및 벡터 검색을 배포하여 애플리케이션 내에서 직접 강력한 검색 환경을 빌드할 수 있습니다. MongoDB Search와 벡터 검색을 사용하면 온프레미스 MongoDB 데이터베이스와 자동으로 동기화되는 기존 텍스트 검색 및 AI 기반 벡터 검색 역량을 법릴 수 있습니다. 이 방법을 사용하면 고급 검색 기능을 제공하면서 별도 시스템을 동기화할 필요가 없습니다. 자세한 내용은 다음을 참조하세요.

온프레미스 배포에서 전체 텍스트 및 시맨틱 검색 과 같은 검색 기능을 활성화 하려면 MongoDB Search 및 벡터 검색 프로세스 (mongot)를 배포 하고 이를 MongoDB 데이터베이스 배포 (mongod)에 연결해야 합니다. mongot 배포는 선택 사항이며, 제공하는 검색 기능을 사용하려는 경우에만 필요합니다.

MongoDB 데이터베이스 프로세스(mongod)는 mongot에 대한 모든 검색 쿼리의 프록시 역할을 합니다. mongod 는 쿼리를 처리하는 mongot에 쿼리를 전송합니다. mongot 는 쿼리 결과를 mongod에 반환하고, 는 그 결과를 사용자에게 전송합니다. mongot와 직접 상호 작용하지 않습니다.

각 mongot 프로세스 에는 데이터베이스 또는 다른 검색 노드와 공유되지 않는 자체 영구 볼륨이 있습니다. 저장소는 데이터베이스 에서 지속적으로 제공되는 데이터로 구축된 인덱스를 유지 관리하는 데 사용됩니다. 인덱스 정의(메타데이터)는 데이터베이스 자체에 저장됩니다.

mongot 는 다음 조치를 수행합니다.

  • 인덱스 관리합니다.

    mongot 는 데이터베이스 의 인덱스 정의를 업데이트하는 역할을 합니다.

  • 데이터베이스 에서 데이터를 가져옵니다.

    mongot 노드는 실시간으로 데이터베이스에 대한 영구 연결을 설정합니다.

  • 검색 쿼리를 처리합니다.

    When mongod receives a $search, $searchMeta, or $vectorSearch query, it directs the query to one of the mongot nodes. The mongot that receives the query processes the query, aggregates the data, and returns the results to mongod, which it forwards to the user.

mongot 구성 요소는 단일 MongoDB 복제본 세트 와 긴밀하게 결합되어 있으며 여러 데이터베이스 또는 복제본 세트에서 공유할 수 없습니다. 복제본 세트 배포서버 의 경우 전용 검색 노드 그룹 한 개가 복제본 세트 제공 . 샤딩된 클러스터 의 경우 각 샤드 자체 mongot 노드 그룹 유지 관리합니다. 샤드는 mongot 인스턴스를 주식 하지 않습니다.

mongot 와 mongod 간의 네트워크 연결은 양방향으로 진행됩니다.

  • mongot 인덱스를 빌드 하고 쿼리를 실행 데 사용되는 데이터를 소싱하기 위해 복제본 세트 에 대한 연결을 설정합니다.

  • mongod mongot 에 연결하여 인덱스 관리 및 데이터 쿼리와 같은 검색 관련 작업을 전달합니다.

spec.clusters[].replicas 필드 Kubernetes Operator가 배포하는 mongot 인스턴스 수를 제어합니다. 복제본 세트 소스의 경우 spec.clusters[].replicas 는 mongot 의 총 파드 수를 설정합니다. 샤딩된 클러스터 소스의 경우 spec.clusters[].replicas 은(는) 샤드 당 mongot 개의 파드 수를 설정합니다.

spec.clusters[].replicas 를 1보다 큰 값으로 설정하다 경우, mongod 와 mongot 파드 사이에 L7 로드 밸런서 배치해야 합니다. mongod 프로세스 mongot에 대한 단일 장기 TCP 연결을 열므로 L4 로드 밸런서 쿼리를 여러 mongot 인스턴스에 분산할 수 없으며 모든 트래픽은 해당 연결 하나를 통해 흐릅니다. L7 로드 밸런서 HTTP /2 및 gRPC를 이해하므로 쿼리 커서 지속되는 동안 각 스트림 단일 mongot 에 고정하는 동시에 mongot 파드에 개별 gRPC 스트림을 분산할 수 있습니다.

Kubernetes Operator의 유무에 관계없이 검색 배포서버 아키텍처는 거의 차이가 없습니다. Kubernetes Operator는 완전히 작동하는 검색 노드를 배포하는 데 필요한 단계를 간소화합니다. 특히 데이터베이스도 Kubernetes Operator에 의해 managed 되는 경우에 그러하습니다.

배포 하려면 Kubernetes Operator가 선택하여 mongot 파드 배포를 시작하고 spec에 지정된 영구 저장 요청하는 MongoDBSearch 사용자 지정 리소스(CR)를 적용 . Kubernetes 연산자를 통해 배포된 MongoDB Search 및 Vector Search는 동일한 Kubernetes 클러스터 내부에 있는 Kubernetes 연산자가 배포한 MongoDB 복제본 세트 또는 샤딩된 클러스터 또는 완전히 독립적인 외부 MongoDB 배포서버 (복제본 세트 또는 샤딩된 클러스터)를 대상으로 할 수 있습니다. 사용할 mongot 를 배포 하고 구성하는 방법을 학습 :

MongoDB Search 및 Vector Search를 사용하려면 다음을 수행하세요.

  • MongoDB Community 배포서버, 완전히 작동하는 MongoDB 8.2 이상의 복제본 세트 또는 샤딩된 클러스터 Kubernetes Operator를 사용하여 Kubernetes 클러스터 내에 배포되어 있어야 합니다.

  • MongoDB Enterprise deployment, 다음 방법 중 하나로 완전히 작동하는 MongoDB 8.2 복제본 세트 또는 샤딩된 클러스터 배포되어 있어야 합니다.

    • Kubernetes Operator를 사용하는 Kubernetes 클러스터 내부

    • Kubernetes 클러스터 외부

  • Cloud Manager 또는 MongoDB Ops Manager 인스턴스

시작하기 전에 다음 사항을 고려하세요.

다음 표는 Kubernetes Operator가 자동으로 수행하는 구성 작업과 Kubernetes 에서 MongoDB Search 및 Vector Search를 성공적으로 배포 하고 Kubernetes 또는 외부 MongoDB deployment 의 MongoDB 복제본 세트 또는 샤딩된 클러스터 에 연결하기 위해 수행해야 하는 조치를 보여줍니다.

작업
(Kubernetes 내부)
수행자
(외부 MongoDB)
수행자

Deploy Ops Manager inside Kubernetes

쿠버네티스 오퍼레이터

쿠버네티스 오퍼레이터

Kubernetes 외부에 Cloud Manager 또는 MongoDB Ops Manager 배포

you

you

MongoDB 복제본 세트 또는 샤딩된 클러스터 배포

쿠버네티스 오퍼레이터

you

MongoDBSearch 사용자 지정 리소스 만들기

you

you

MongoDB deployment 에 연결 문자열 제공

쿠버네티스 오퍼레이터

you

mongot 구성 YAML만들기

쿠버네티스 오퍼레이터

쿠버네티스 오퍼레이터

각 mongod 프로세스 에서 필요한 복제본 세트 매개변수를 설정합니다.

쿠버네티스 오퍼레이터

you

searchCoordinator 역할 로 mongot 에 대한 사용자 만들기

MongoDBUser 리소스 적용하여 Kubernetes Operator와 사용자

you

검색 쿼리 데 필요한 권한이 있는 사용자로 MongoDB 복제본 세트 구성합니다.

you

you

MongoDB Search 및 Vector Search 인덱스 생성

you

you

각 mongod 노드 에서 연결할 수 있도록 검색 파드 또는 로드 밸런서 외부에 노출합니다.

필요하지 않음

you

mongot 노드에서 연결할 수 있도록 mongod pod를 외부에 노출합니다.

필요하지 않음

you

managed 로드 밸런서 구성(spec.clusters[].replicas 이 1보다 큰 경우)

쿠버네티스 오퍼레이터

쿠버네티스 오퍼레이터

관리되지 않는 로드 밸런서 구성(spec.clusters[].replicas 이 1보다 큰 경우)

you

you

샤드별 TLS 인증서 프로비저닝(TLS를 사용하는 샤딩된 클러스터)

you

you

로드 밸런서 외부에 노출(외부 MongoDB + managed LB)

필요하지 않음

you

다음 그림은 mongot 프로세스에 대한 보안 구성을 보여줍니다. Kubernetes 클러스터 내부에 MongoDB 배포서버가 있는 경우, Kubernetes 연산자가 MongoDB Search와 벡터 검색을 위해 키 파일 인증을 자동으로 설정합니다. MongoDB 배포서버가 외부인 경우, 복제본 세트의 키 파일 자격 증명을 포함하는 Kubernetes 시크릿을 생성한 후 MongoDBSearch CR에서 이를 참조해야 합니다.

검색 위한 키 파일 인증 및 TLS 구성을 보여주는 다이어그램입니다.
클릭하여 확대

mongot 프로세스는 mTLS를 사용하여 mongod 연결을 인증합니다. TLS를 활성화하면 mongot 프로세스는 MongoDB 배포서버의 TLS 인증서를 인증용 클라이언트 인증서로 사용합니다. 이 인증서는 mongot 에 구성된 CA 인증서에 대해 검증됩니다. 인증이 정상적으로 작동하도록 하려면 TLS가 활성화된 mongot 와 mongod 를 모두 구성해야 합니다.

동일한 Kubernetes 클러스터 내에서 MongoDB 리소스 인덱스 하도록 구성된 경우, Kubernetes 연산자는 mongod CA 인증서를 mongot 에 자동으로 전파하고 MongoDB 및 MongoDBSearch 리소스가 모두 TLS에 대해 구성된 경우 검색 쿼리 연결에 mTLS를 활성화합니다. MongoDB 복제본 세트 Kubernetes 외부에 배포된 경우 복제본 세트의 CA 인증서가 포함된 Kubernetes 시크릿을 생성하고 이를 MongoDBSearch.spec.source.external.tls.ca 필드 에서 참조하여 검색 쿼리 요청에 대해 mTLS 인증 활성화 해야 합니다.

MongoDBSearch는 TLS를 사용하여 전송 중인 데이터 및 자격 증명을 보호할 수 있습니다. 인덱스 관리 명령 및 검색 쿼리를 사용하려면 spec.security.tls 필드를 설정하고 TLS 인증서를 제공합니다. 이 필드를 빈 객체({})로 설정하여 기본값 설정으로 TLS를 활성화할 수 있습니다.

1.8.0 버전부터 더 이상 사용되지 않습니다. spec.security.tls.certificateKeySecretRef 더 이상 사용되지 않습니다. 복제본 세트 배포서버의 경우, Kubernetes 연산자는 여전히 certificateKeySecretRef을(를) 지원하지만 spec.security.tls.certsSecretPrefix(으)로 마이그레이션해야 합니다. 샤딩된 클러스터 배포서버의 경우, Kubernetes 연산자가 각 샤드에 대해 별도의 mongot 서버 인증서 보안을 읽기 때문에 certificateKeySecretRef를 사용할 수 없습니다.

spec.security.tls.certsSecretPrefix 는 선택적 필드 입니다. 이를 지정하면 Kubernetes Operator는 읽는 모든 인증서 시크릿 이름 앞에 <certsSecretPrefix>- 을(를) 추가합니다. Kubernetes Operator는 다음 인증서 시크릿을 읽습니다.

클러스터 토폴로지
mongot 인증서

복제본 세트

[<certsSecretPrefix>-]<name>-search-cert

샤딩된 클러스터

[<certsSecretPrefix>-]<name>-search-0-<shardName>-cert (per shard)

spec.clusters[].loadBalancer.managed를 설정하다 경우 로드 밸런서 클라이언트 인증서는 [<certsSecretPrefix>-]<name>-search-lb-0-client-cert입니다. 다음 표에는 로드 밸런서 서버 인증서가 나와 있습니다.

클러스터 토폴로지
인증서

복제본 세트

[<certsSecretPrefix>-]<name>-search-lb-0-cert

샤딩된 클러스터

[<certsSecretPrefix>-]<name>-search-lb-0-<shardName>-cert

TLS 인증서는 MongoDB 복제본 세트 사용하는 CA 인증서를 발급한 동일한 CA에서 발급하고 서명해야 합니다.

MongoDBSearch와 MongoDB 가 모두 Kubernetes 연산자에 의해 배포된 경우, 기본 mongot 및 mongod 구성은 대부분 Kubernetes 연산자 자체에서 처리됩니다. Kubernetes 클러스터 외부에 MongoDB 복제본 세트 배포 경우:

  • .spec.source.external.tls 필드 mongod 구성에 사용한 것과 동일한 CA 인증서가 포함된 쿠버네티스 시크릿으로 채워야 합니다.

  • searchTLSMode 매개변수를 mongod 구성에서 requireTLS (으)로 설정하다 해야 합니다.

로드 밸런서 없이 mongod 는 mTLS를 사용하여 mongot 에 직접 연결합니다. mongod 는 자체 클라이언트 인증서를 제공하고 mongot 는 신뢰할 수 있는 CA에 대해 인증서의 유효성을 검사합니다.

managed 로드 밸런서 (spec.clusters[].loadBalancer.managed)를 구성하는 경우 Envoy 프록시는 mongod 에서 mTLS 연결을 종료하고 mongot에 대한 새 mTLS 연결을 설정합니다. 로드 밸런서 연결을 종료하고 다시 설정하기 때문에 mongot에 연결할 때 원래의 mongod 인증서가 아닌 자체 클라이언트 인증서를 사용합니다. mongot CA는 로드 밸런서의 클라이언트 인증서를 발급한 인증 기관을 신뢰해야 합니다. Kubernetes Operator는 Envoy TLS 구성을 자동으로 관리합니다. 다음 인증서가 필요합니다.

  • 서버 인증서 는 mongod 이(가) 연결되는 Envoy 프록시의 것입니다. 로드 밸런서 이 인증서를 사용하여 수신 mTLS 연결을 종료합니다.

  • 업스트림 mTLS 연결을 설정할 때 로드 밸런서 mongot 에 제공하는 Envoy 프록시에 대한 클라이언트 인증서입니다.

spec.security.tls.certsSecretPrefix 에서 정의한 명명 규칙에 따라 이러한 인증서를 Kubernetes 시크릿으로 프로비저닝합니다. 전체 이름 지정 패턴은 MongoDB Search 및 벡터 검색 설정 을 참조하세요.

각 mongot 포드는 포드 내의 /mongot/data/diagnostic.data/에 FTDC 파일을 지속적으로 쓰기 (write)합니다. FTDC는 세부적인 mongot 내부 상태를 캡처하는 바이너리 진단 스트림이며, MongoDB 지원팀이 Search 문제 진단에 사용하는 프라이머리 유물입니다. FTDC는 기본적으로 활성화되어 있습니다. 지원 사례를 위해 FTDC 파일을 복사하는 방법을 학습하려면, mongot 배포서버 문제 해결을 참조하십시오.

Kubernetes PersistentVolumeClaim mongot 연산자는 /mongot/data 을(를) 사용하여 volumeClaimTemplate search StatefulSet의 각 pod에 을(를) 마운트하며,mongot 은(는) /mongot/data/diagnostic.data/ 해당 볼륨의 에 FTDC 파일을 씁니다. 데이터가 PersistentVolumeClaim에 상주하기 때문에 포드가 다시 시작되거나 재스케줄링되어도 데이터는 유지됩니다. StatefulSet이 포드를 교체할 때 동일한 PersistentVolumeClaim을 다시 연결합니다. spec.클러스터[].persistence 를 사용하여 이 볼륨을 구성합니다. MongoDBSearch 리소스의 설정.