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

멀티 클러스터 아키텍처

Kubernetes Operator는 여러 Kubernetes 클러스터에 MongoDB 데이터베이스 리소스와 MongoDB Ops Manager 리소스를 모두 배포하는 것을 지원합니다. 이는 지리적 이중화, 재해 복구 역량 및 회복 탄력성 향상을 제공합니다.

중요

기존 MongoDB Ops Manager 배포서버를 단일 클러스터 토폴로지에서 다중 클러스터 토폴로지로 변환할 수 없습니다. 단일 클러스터 모드에서 시작하는 경우 처음부터 다시 시작하고 다시 배포해야 합니다. 초기 배포서버 전에 토폴로지를 계획하세요.

Kubernetes 연산자를 사용하여 다음 설정으로 MongoDB 리소스를 배포하는 모드를 제어할 수 있습니다.

  • spec.topology — MongoDB Ops Manager 애플리케이션의 모드를 제어합니다.

  • spec.applicationDatabase.topology — 애플리케이션 데이터베이스의 모드를 제어합니다.

spec.topologyspec.applicationDatabase.topology 을 모두 MultiCluster로 설정하면 다음 예시에 표시된 것추럼 Ops Manager 리소스 및 애플리케이션 데이터베이스에 대한 다중 클러스터 모드가 활성화됩니다.

spec:
topology: MultiCluster
applicationDatabase:
topology: MultiCluster

다중 클러스터 모드에서는 단일 노드 클러스터로 시작하여 필요에 따라 확장할 수 있습니다. 구체적으로 다음과 같습니다.

  • 단일 노드 클러스터 시작: 배포서버는 하나의 노드 클러스터로 시작할 수 있습니다.

  • 최소 애플리케이션 데이터베이스 복제본 세트: 최소 3노드 애플리케이션 데이터베이스 복제본 세트는 단일 노드 클러스터에서 실행한 다음 클러스터로 확장할 수 있습니다.

  • 단일 |application| 인스턴스: 단일 MongoDB Ops Manager 애플리케이션 인스턴스는 하나의 클러스터에서 실행될 수 있으며, 추가 클러스터는 나중에 추가될 수 있습니다.

단일 클러스터 모드(기본값)에서는 토폴로지 설정을 생략하거나 SingleCluster으로 설정합니다.

다중 클러스터 배포에는 다음과 같은 제한 사항이 적용됩니다.

  • Ops Manager 5.0.7 이상의 버전을 사용하세요.

  • 시크릿 저장에는 시크릿 만 사용하세요. HashiCorp Vault 는 지원되지 않습니다.

  • Kubernetes Operator가 MongoDBOpsManagerMongoDB 리소스 모두를 관리하지 않는 배포서버의 경우 Ops Manager에서 KMIP 백업 암호화 설정을 수동으로 구성해야 합니다.

  • MongoDBMultiCluster 리소스에 ServiceMonitor를 추가하지 마세요. Prometheus 통합은 지원되지 않습니다.

  • 기존 단일 클러스터 MongoDB 리소스를 다중 클러스터 리소스로 마이그레이션할 수 없습니다.

기능 또는 요구 사항
단일 클러스터
멀티 클러스터

연산자는 MongoDB Ops Manager 및 애플리케이션 데이터베이스와 동일한 클러스터에 있어야 합니다.

No

MongoDB Ops Manager 및 애플리케이션 데이터베이스 클러스터에 필요한 서비스 메시

No

No

지원되는 모든 백업 메커니즘

아니오. S3호환 oplog/스냅샷만 지원됩니다.

KMIP 암호화

제한이 있습니다.

서비스 메시가 있거나 없는 다중 클러스터 MongoDB 배포서버를 만들 수 있습니다.

두 경우 모두 Kubernetes 연산자는 다음과 같은 작업을 수행합니다.

  • 연산자 클러스터에서 MongoDBMultiCluster 사양을 관찰합니다.

  • 마운트된 kubeconfig 을(를) 사용하여 노드 클러스터와 통신합니다.

  • 각 노드 클러스터에 ConfigMaps, Secrets, Services 및 StatefulSets를 만듭합니다.

  • MongoDB 복제본 세트 노드를 해당 클러스터에 배포합니다.

  • 연산자 클러스터 및 노드 클러스터 이벤트를 모니터링합니다.

  • 리소스를 조정하여 원하는 상태를 확인합니다.

Kubernetes Operator용 MongoDB 컨트롤러를 사용하는 다중 Kubernetes 클러스터 MongoDB deployment는 Kubernetes에서 하나의 연산자 클러스터 와 하나 이상의 멤버 클러스터 로 구성됩니다.

  • 연산자 클러스터 의 역할은 다음과 같습니다.

    • Kubernetes Operator용 MongoDB 컨트롤러 호스팅

    • 다중 Kubernetes 클러스터 MongoDB 배포를 위한 컨트롤 플레인 역할을 합니다.

    • MongoDB 복제본 세트에 대한 MongoDBMultiCluster 리소스 사양을 호스팅합니다.

    • Kubernetes Operator로 Ops Manager를 배포하는 경우 Ops Manager를 호스팅합니다.

    • MongoDB 복제본 세트의 멤버를 호스팅할 수도 있습니다.

    중요

    중앙 클러스터는 연산자 클러스터라고도 합니다. 향후 릴리스에서는 중앙 클러스터에 대한 참조의 이름이 연산자 클러스터를 참조하도록 변경될 수 있습니다.

  • cluster 는 MongoDB 복제본 세트를 호스팅합니다.

참고

연산자 클러스터에 장애가 발생하면 액세스를 복원하거나 Kubernetes 연산자를 다른 클러스터에 재배포할 때까지 Kubernetes 연산자를 사용하여 배포서버를 변경할 수 없습니다. See 재해 복구.

서비스 매시 포함

서비스 메시는 클러스터 간 MongoDB 노드 발견을 관리하고 노드 간 통신을 처리합니다. 다음 다이어그램은 서비스 메시가 있는 다중 클러스터 배포에 대해 설명합니다.

다이어그램: 서비스 메시를 사용한 멀티 클러스터 배포서버
클릭하여 확대

서비스 메시 미포함

외부 도메인과 DNS 구역은 클러스터 간 통신을 처리합니다. 외부 도메인 및 DNS 구역을 통한 외부 연결 활성화를 참조하세요. 다음 다이어그램은 서비스 메시가 없는 다중 클러스터 배포를 나타냅니다.

서비스 메시가 없는 다이어그램을 통해 다중 클러스터 배포서버를 표시합니다.
클릭하여 확대

다음 다이어그램은 여러 Kubernetes 클러스터에 배포된 MongoDB Ops Manager 애플리케이션, 애플리케이션 데이터베이스 및 백업 디먼을 보여줍니다.

다중 클러스터 MongoDB Ops Manager 배포서버를 보여주는 다이어그램

다중 클러스터 MongoDB Ops Manager 배포의 주요 요소:

  1. 연산자 클러스터 (예: 노드 클러스터 0)에는 모든 노드 클러스터를 관리하는 데 사용되는 kubeconfig 시크릿(mongodb-enterprise-operator-multi-cluster-kubeconfig)과 클러스터 매핑 ConfigMap이 저장됩니다.

  2. 클러스터 매핑 ConfigMaps 는 클러스터 이름과 인덱스 간의 관계를 추적합니다.

    • <om_resource_name>-cluster-mappingspec.clusterSpecList 개의 엔트리를 클러스터 인덱스에 매핑합니다.

    • <om_resource_name>-db-cluster-mappingspec.applicationDatabase.clusterSpecList 개의 엔트리를 클러스터 인덱스에 매핑합니다.

    • <om_resource_name>-db-member-spec — 재해 복구를 위해 클러스터별 복제본 수를 기록합니다.

  3. 애플리케이션 StatefulSet 은 각 클러스터에서 <om_resource_name>-<cluster_index> 이라는 이름을 가집니다. 연산자는 모든 로컬 Pod가 포함된 ClusterIP 서비스(<om_resource_name>-svc)와 외부 액세스를 위한 선택 사항인 LoadBalancer 서비스(<om_resource_name>-svc-ext)를 만듭합니다.

  4. 애플리케이션 데이터베이스 StatefulSet<om_resource_name>-db-<cluster_index>이라고 명명됩니다. 팝 별 서비스(<om_resource_name>-db-<cluster_index>-<pod_index>-svc)를 사용하면 서비스 메시에서 개별 mongod 주소 지정이 가능합니다.

  5. 백업 디먼 StatefulSets<om_resource_name>-backup-daemon-<cluster_index>이며, spec.backup.enabledtrue이면 생성됩니다.

다음 표에서는 다중 클러스터 배포에서 MongoDB Ops Manager 애플리케이션에 연결하는 클라이언트 및 서비스 유형과 사용하는 URL을 설명합니다.

출처
목적
URL
쿠버네티스 오퍼레이터

Ops Manager 구성, 모니터링 활성화

기본 FQDN <om_resource_name>-svc.<namespace>.svc.cluster.local 또는 spec.opsManagerURL

쿠버네티스 오퍼레이터

특정 MongoDB 배포서버 구성

애플리케이션 데이터베이스의 MongoDB Agent

MongoDB Ops Manager에서 자동화 구성을 수신합니다.

헤드리스 모드(MongoDB Ops Manager 연결 필요 없음)

애플리케이션 데이터베이스의 모니터링 에이전트

MongoDB Ops Manager로 모니터링 데이터 전송

기본 FQDN 또는 spec.opsManagerURL

MongoDB 리소스의 MongoDB Agent

백업 및 복원 지침을 포함하여 Ops Manager에서 자동화 구성을 수신합니다.

프로젝트 ConfigMap

사용자

Ops Manager UI 또는 API 에 액세스

외부 도메인 경유 spec.externalConnectivity

멀티 클러스터 MongoDB Ops Manager 배포서버의 경우 애플리케이션 데이터베이스 및 MongoDB Ops Manager 애플리케이션을 호스팅하는 Kubernetes 클러스터를 동일한 서비스 메시로 추가합니다. 이를 통해 다음을 수행할 수 있습니다.

  • 클러스터 간의 배포된 구성 요소 간의 네트워크 연결입니다.

  • Pod 별 서비스 FQDN에 대한 클러스터 간 DNS 확인.

또한 연산자 클러스터를 동일한 서비스 메시에 추가하는 것도 권장합니다. 이렇게 하면 Ops Manager 애플리케이션과 애플리케이션 데이터베이스 인스턴스를 직접 호스팅할 수 있습니다.

다음 클러스터에 대한 서비스 매시를 구성합니다.

  • 연산자 클러스터(Kubernetes Operator를 설치하는 곳)

  • MongoDB Ops Manager 애플리케이션 인스턴스를 호스팅하는 모든 노드 Kubernetes 클러스터

  • 애플리케이션 데이터베이스 인스턴스를 호스팅하는 모든 노드 Kubernetes 클러스터

서비스 메시를 통해 각 Ops Manager 인스턴스가 클러스터 간에서도 모든 애플리케이션 데이터베이스 인스턴스에 연결할 수 있습니다. 배포 후 각 MongoDB Ops Manager API 엔드포인트는 모든 애플리케이션 데이터베이스 노드에 직접 연결할 수 있어야 합니다.

다중 클러스터 MongoDB Ops Manager 배포의 경우, 각 클러스터는 LoadBalancer유형의 서비스를 사용하여 MongoDB Ops Manager 애플리케이션 파드를 개별적으로 노출할 수 있습니다. spec.externalConnectivity 을(를) 사용하여 이 서비스를 생성하고 외부 도메인을 해당 외부 IP 주소로 연결하십시오. 다중 클러스터 배포서버에서 로드 밸런싱을 구성하는 방법에 대해 자세히 알아보려면 다중 클러스터 MongoDB Ops Manager 배포서버를 위한 서비스 메쉬 요구 사항을 참조하세요.

Kubernetes 연산자는 클러스터 간 부하 밸랑을 기본적으로 지원하지 않으므로 부하 밸랑을 외부에서 구성해야 합니다. MongoDB Ops Manager 배포서버의 클러스터 간 부하 밸랑을 활성화하는 방법은 다음과 같습니다.

  • 외부 로드 밸런서: MongoDB Ops Manager 애플리케이션을 호스팅하는 모든 클러스터에 대한 외부 네트워크 로드 밸런서(패스스루 프록시) 구성합니다. 로드 밸런서는 라운드 로빈 방식으로 각 클러스터의 LoadBalancer 서비스로 트래픽을 전송합니다. 다음 다이어그램은 이러한 접근 방식을 보여줍니다.
외부 로드 밸런서가 있는 다중 클러스터 배포입니다.
클릭하여 확대
  • 프록시가 있는 서비스 매시: 서비스 매시의 클러스터 간 부하 밸랑을 사용합니다. 하나의 클러스터에 프록시(Nginx 또는 HAProxy 등)를 배포하고 외부에 노출한 다음 TCP 패스스루를 <om_resource_name>-svc.<namespace>.svc.cluster.local으로 구성합니다. 다음 다이어그램은 이러한 접근 방식을 보여줍니다.
서비스 매시 로드 밸랜싱이 적용된 다중 클러스터 배포서버
클릭하여 확대

애플리케이션 데이터베이스와 MongoDB Ops Manager 인스턴스의 지리적 분포는 MongoDB Ops Manager 애플리케이션 및 백업/복원 프로세스의 성능에 영향을 줄 수 있습니다. 멀티 리전 배포의 성능을 참조하세요.

다중 클러스터 회복 탄력성 및 가용성의 장점을 최대화하려면 가능한 경우 모든 구성 요소를 동일한 지역에 배포하세요.

성능 저하의 원인은 다음과 같습니다.

  • MongoDB Ops Manager 애플리케이션과 프라이머리 애플리케이션 데이터베이스 노드 간의 네트워크 지연 시간이 증가했습니다.

  • MongoDB 데이터베이스 노드와 백업 작업을 수행하는 MongoDB Ops Manager 애플리케이션 간의 지연 시간이 증가했습니다.

지리적으로 먼리 떨어진 배포서버를 계획하는 경우 지원을 받으려면 MongoDB 지원팀 에 문의하세요.

다음 다중 클러스터 기능은 단일 클러스터 배포와 동일한 절차를 사용합니다.

  • DNS SRV 기록으로 연결: Kubernetes 연산자가 만든 시크릿 에서 connectionString.standardSrv DNS 시드 목록 연결 문자열을 사용합니다. Kubernetes 내부에서 MongoDB 데이터베이스 리소스에 연결하기 를 참조하고 Using the Kubernetes Secret 탭을 선택합니다.

  • 데이터베이스 사용자를 위한 보안 관리: 다음 예외 사항이 있는 단일 클러스터 배포서버와 동일한 LDAP, SCRAM, X.509 및 OIDC 인증 절차를 사용합니다.

    • 다중 클러스터 절차는 복제본 세트에만 적용됩니다(샤딩된 클러스터는 지원되지 않습니다).

    • mongodbResourceRef에서 다중 클러스터 복제본 세트 이름을 지정합니다.

  • 쿼리 가능 백업(단일 클러스터 |onprem| 만): MongoDB Ops Manager가 단일 클러스터에 배포된 경우 쿼리 가능 백업을 구성할 수 있습니다. 다중 클러스터 MongoDB Ops Manager 배포에서는 쿼리 가능 백업이 지원되지 않습니다.