Kubernetes Operator는 여러 Kubernetes 클러스터에 MongoDB 데이터베이스 리소스와 MongoDB Ops Manager 리소스를 모두 배포하는 것을 지원합니다. 이는 지리적 이중화, 재해 복구 역량 및 회복 탄력성 향상을 제공합니다.
중요
기존 MongoDB Ops Manager 배포서버를 단일 클러스터 토폴로지에서 다중 클러스터 토폴로지로 변환할 수 없습니다. 단일 클러스터 모드에서 시작하는 경우 처음부터 다시 시작하고 다시 배포해야 합니다. 초기 배포서버 전에 토폴로지를 계획하세요.
단일 및 다중 클러스터 모드
Kubernetes 연산자를 사용하여 다음 설정으로 MongoDB 리소스를 배포하는 모드를 제어할 수 있습니다.
spec.topology— MongoDB Ops Manager 애플리케이션의 모드를 제어합니다.spec.applicationDatabase.topology— 애플리케이션 데이터베이스의 모드를 제어합니다.
spec.topology 과 spec.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가
MongoDBOpsManager및MongoDB리소스 모두를 관리하지 않는 배포서버의 경우 Ops Manager에서 KMIP 백업 암호화 설정을 수동으로 구성해야 합니다.MongoDBMultiCluster리소스에 ServiceMonitor를 추가하지 마세요. Prometheus 통합은 지원되지 않습니다.기존 단일 클러스터 MongoDB 리소스를 다중 클러스터 리소스로 마이그레이션할 수 없습니다.
단일 클러스터 배포와 멀티 클러스터 배포의 차이점
기능 또는 요구 사항 | 단일 클러스터 | 멀티 클러스터 |
|---|---|---|
연산자는 MongoDB Ops Manager 및 애플리케이션 데이터베이스와 동일한 클러스터에 있어야 합니다. | 예 | No |
MongoDB Ops Manager 및 애플리케이션 데이터베이스 클러스터에 필요한 서비스 메시 | No | 예 |
예 | No | |
지원되는 모든 백업 메커니즘 | 예 | 아니오. S3호환 oplog/스냅샷만 지원됩니다. |
KMIP 암호화 | 예 | 제한이 있습니다. |
다중 클러스터 MongoDB 데이터베이스 리소스 배포 다이어그램
서비스 메시가 있거나 없는 다중 클러스터 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 구역을 통한 외부 연결 활성화를 참조하세요. 다음 다이어그램은 서비스 메시가 없는 다중 클러스터 배포를 나타냅니다.
다중 클러스터 Ops Manager 리소스 배포 다이어그램
다음 다이어그램은 여러 Kubernetes 클러스터에 배포된 MongoDB Ops Manager 애플리케이션, 애플리케이션 데이터베이스 및 백업 디먼을 보여줍니다.
다중 클러스터 MongoDB Ops Manager 배포의 주요 요소:
연산자 클러스터 (예: 노드 클러스터 0)에는 모든 노드 클러스터를 관리하는 데 사용되는
kubeconfig시크릿(mongodb-enterprise-operator-multi-cluster-kubeconfig)과 클러스터 매핑 ConfigMap이 저장됩니다.클러스터 매핑 ConfigMaps 는 클러스터 이름과 인덱스 간의 관계를 추적합니다.
<om_resource_name>-cluster-mapping—spec.clusterSpecList개의 엔트리를 클러스터 인덱스에 매핑합니다.<om_resource_name>-db-cluster-mapping—spec.applicationDatabase.clusterSpecList개의 엔트리를 클러스터 인덱스에 매핑합니다.<om_resource_name>-db-member-spec— 재해 복구를 위해 클러스터별 복제본 수를 기록합니다.
애플리케이션 StatefulSet 은 각 클러스터에서
<om_resource_name>-<cluster_index>이라는 이름을 가집니다. 연산자는 모든 로컬 Pod가 포함된ClusterIP서비스(<om_resource_name>-svc)와 외부 액세스를 위한 선택 사항인LoadBalancer서비스(<om_resource_name>-svc-ext)를 만듭합니다.애플리케이션 데이터베이스 StatefulSet 은
<om_resource_name>-db-<cluster_index>이라고 명명됩니다. 팝 별 서비스(<om_resource_name>-db-<cluster_index>-<pod_index>-svc)를 사용하면 서비스 메시에서 개별mongod주소 지정이 가능합니다.백업 디먼 StatefulSets 은
<om_resource_name>-backup-daemon-<cluster_index>이며,spec.backup.enabled이true이면 생성됩니다.
멀티 클러스터 네트워킹
다중 클러스터 배포에 대한 네트워킹 개요
다음 표에서는 다중 클러스터 배포에서 MongoDB Ops Manager 애플리케이션에 연결하는 클라이언트 및 서비스 유형과 사용하는 URL을 설명합니다.
출처 | 목적 | URL |
|---|---|---|
쿠버네티스 오퍼레이터 | Ops Manager 구성, 모니터링 활성화 | 기본 FQDN |
쿠버네티스 오퍼레이터 | 특정 MongoDB 배포서버 구성 | 프로젝트 ConfigMap(ConfigMap을 사용하여 MongoDB 배포서버당 1개의 프로젝트 생성) |
애플리케이션 데이터베이스의 MongoDB Agent | MongoDB Ops Manager에서 자동화 구성을 수신합니다. | 헤드리스 모드(MongoDB Ops Manager 연결 필요 없음) |
애플리케이션 데이터베이스의 모니터링 에이전트 | MongoDB Ops Manager로 모니터링 데이터 전송 | 기본 FQDN 또는 |
| 백업 및 복원 지침을 포함하여 Ops Manager에서 자동화 구성을 수신합니다. | 프로젝트 ConfigMap |
사용자 | Ops Manager UI 또는 API 에 액세스 | 외부 도메인 경유 |
다중 클러스터 MongoDB Ops Manager 배포서버에 대한 서비스 메시 요구 사항
멀티 클러스터 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 배포서버의 부하 배분
다중 클러스터 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 Ops Manager 애플리케이션과 프라이머리 애플리케이션 데이터베이스 노드 간의 네트워크 지연 시간이 증가했습니다.
MongoDB 데이터베이스 노드와 백업 작업을 수행하는 MongoDB Ops Manager 애플리케이션 간의 지연 시간이 증가했습니다.
지리적으로 먼리 떨어진 배포서버를 계획하는 경우 지원을 받으려면 MongoDB 지원팀 에 문의하세요.
다중 클러스터 MongoDB 데이터베이스 리소스 역량
다음 다중 클러스터 기능은 단일 클러스터 배포와 동일한 절차를 사용합니다.
DNS SRV 기록으로 연결: Kubernetes 연산자가 만든 시크릿 에서
connectionString.standardSrvDNS 시드 목록 연결 문자열을 사용합니다. Kubernetes 내부에서 MongoDB 데이터베이스 리소스에 연결하기 를 참조하고 Using the Kubernetes Secret 탭을 선택합니다.데이터베이스 사용자를 위한 보안 관리: 다음 예외 사항이 있는 단일 클러스터 배포서버와 동일한 LDAP, SCRAM, X.509 및 OIDC 인증 절차를 사용합니다.
다중 클러스터 절차는 복제본 세트에만 적용됩니다(샤딩된 클러스터는 지원되지 않습니다).
mongodbResourceRef에서 다중 클러스터 복제본 세트 이름을 지정합니다.
쿼리 가능 백업(단일 클러스터 |onprem| 만): MongoDB Ops Manager가 단일 클러스터에 배포된 경우 쿼리 가능 백업을 구성할 수 있습니다. 다중 클러스터 MongoDB Ops Manager 배포에서는 쿼리 가능 백업이 지원되지 않습니다.