멀티 클러스터 아키텍처 다이어그램: MongoDB Ops Manager 및 애플리케이션 데이터베이스
MongoDB Ops Manager 다음 다이어그램은 여러 Kubernetes Kubernetes 클러스터에 배포된 MongoDB Ops Manager 애플리케이션, 애플리케이션 데이터베이스, 백업 디먼 및 해당 영구 볼륨 을 보여줍니다.
이 다이어그램에서는 다음을 수행합니다.
Member Cluster 0
은(는) Kubernetes Operator를 설치하기 때문에 '운영자 클러스터'이기도 합니다. 또한 "멤버 클러스터"이며 모든 멀티 클러스터 사용자 지정 리소스를 호스팅할 수 있습니다.은
Member Cluster 0
kubeconfig 파일을 저장합니다. ,Kubernetes 구성 을 설명합니다. 멤버 클러스터, 사용자 및 컨텍스트에 대한kubectl mongodb
플러그인을 사용하여 멀티 클러스터 배포를 위해 Kubernetes Operator를 구성하면 다음 리소스 가 생성됩니다.Kubernetes Operator가 관리할 모든 Kubernetes 클러스터에 대한 자격 증명이 포함된
mongodb-enterprise-operator-multi-cluster-kubeconfig
시크릿. 연산자 클러스터를 멤버 클러스터로 사용하려는 경우, 이 시크릿에는 Kubernetes 연산자를 설치한 클러스터와 동일한 클러스터에 대한 자격 증명이 포함될 수 있습니다.
Kubernetes Operator가 멀티 클러스터 모드 에서 실행되는 경우, ConfigMaps 및 관리 하려는 클러스터에 대한 시크릿과 같이 필요한 리소스를 저장합니다. 이러한 리소스는 Kubernetes Operator와 동일한 네임스페이스 에 속합니다. Kubernetes Operator는 이러한 리소스를 사용하여 MongoDB Ops Manager 여러 Kubernetes 클러스터에 애플리케이션과 애플리케이션 데이터베이스를 배포 합니다.
또한 Kubernetes Operator는 관리하는 각 MongoDB Ops Manager 애플리케이션 및 애플리케이션 데이터베이스 배포서버 에 대해 몇 가지 추가 멀티 클러스터 배포서버 상태 ConfigMap을 생성하고 유지 관리합니다.
Member Cluster 0
는 다음 ConfigMap을 포함하여 이 구성을 저장합니다.<om_resource_name>-cluster-mapping
ConfigMap에는spec.clusterSpecList
에 나열된 멤버 클러스터 이름과 이 문서에서cluster_index
로 참조된 클러스터 인덱스(예:Cluster 0
또는Cluster 1
)에 대한 매핑이 포함되어 있습니다. Kubernetes Operator는 이러한 인덱스를 각 클러스터 이름에 할당합니다.<om_resource_name>-db-cluster-mapping
ConfigMap에는spec.applicationDatabase.clusterSpecList
에 나열된 멤버 클러스터 이름과 클러스터 인덱스 간의 매핑이 포함되어 있습니다.<om_resource_name>-db-member-spec
ConfigMap에는 각 멤버 클러스터 에 대해 구성된 애플리케이션 데이터베이스 복제본 수가 포함되어 있습니다. 이 정보가 있으면 Kubernetes Operator가 전체 멤버 클러스터 를 잃은 후 재해 복구의 일부로 복제본 세트 를 올바르게 확장하다 하거나 재구성할 수 있습니다.
MongoDBOpsManager
리소스의 구성은 멀티 클러스터 MongoDB Ops Manager 배포서버 를 설명하기 위해 사용자가 생성하는 파일 입니다. Kubernetes Operator는 이 파일 을 사용하여 MongoDB Ops Manager 구성 요소를 배포 합니다.다음 예제는 이 다이어그램에 설명된 MongoDB Ops Manager 구성 요소를 배포하는 Kubernetes Operator로 이어지는 구성을 보여줍니다. 이 예에서는 이 다이어그램과 관련이 없는 일부 설정(예: TLS 구성)을 생략합니다.
1 apiVersion: mongodb.com/v1 2 kind: MongoDBOpsManager 3 metadata: 4 name: om 5 namespace: om-ns 6 spec: 7 replicas: 1 # You can set this value and use it as a global or default 8 # setting for all clusters. The spec.clusterSpecList.members 9 # setting overrides this setting. 10 topology: MultiCluster 11 version: 6.0.22 12 adminCredentials: om-admin-secret 13 clusterSpecList: 14 - clusterName: "Member Cluster 1" # Ops Manager settings for "Member Cluster 1" 15 members: 2 16 backup: # Backup settings for "Member Cluster 1" 17 members: 2 # Overrides spec.backup.members 18 - clusterName: "Member Cluster 2" # Ops Manager settings for "Member Cluster 2" 19 members: 1 20 backup: # Backup settings for "Member Cluster 2" 21 members: 2 # Overrides spec.backup.members 22 applicationDatabase: # Global {+appdb+} settings 23 topology: MultiCluster 24 version: 6.0.5-ent 25 members: 3 # In multi-cluster mode, the Operator ignores this field. 26 # The Operator sets the number of members for the Application 27 # Database in spec.applicationDatabase.clusterSpecList.members. 28 clusterSpecList: 29 - clusterName: "Member Cluster 1" 30 members: 3 31 - clusterName: "Member Cluster 2" 32 members: 2 33 backup: # Global settings for the Backup Daemon 34 enabled: true 35 members: 1 # Set this value and use it as a global or default setting. 36 # To override this value, set the value for 37 # spec.clusterSpecList.backup.members. 38 # The Backup Daemon's configuration for each cluster isn't 39 # stored here. Use the Ops Manager's spec.clusterSpecList.backup to 40 # specify the Backup Daemon configuration for each member cluster. Kubernetes Operator는 다음 중 하나를 참조하여 MongoDB Ops Manager 인스턴스에 연결합니다.
리소스 에 대해 생성하는 서비스의 기본값 FQDN MongoDB Ops Manager
<om_resource_name>-svc.<namespace>.svc.cluster.local
또는spec.opsManagerURL
에 지정하는 URL 입니다. Kubernetes Operator를 설치한 클러스터 가 서비스 메시에 연결되지 않은 경우와 같은 일부 배포에서는 기본값 서비스 FQDN 에 연결하지 못할 수 있습니다. 이 경우 Kubernetes Operator는MongoDBOpsManager
리소스 상태를 연결 오류를 나타내는Failed
로 보고합니다. 이러한 경우를 URL 고려하려면 MongoDB Ops Manager 에서spec.opsManagerURL
의 을 제공하세요. 이 URL 은 외부에 노출된 MongoDB Ops Manager 인스턴스 의 호스트 이름일 수 있습니다. 학습 내용은 네트워킹 개요를 참조하세요.
두 개의 멤버 클러스터는 MongoDB Ops Manager 애플리케이션 을 호스팅하다 합니다. 각 클러스터 에서 Kubernetes Operator는
<om_resource_name>-<cluster_index>
이라는 StatefulSet를 배포합니다.StatefulSet는
Member Cluster 1
에 MongoDB Ops Manager 애플리케이션의 인스턴스 2개를 배포하고Member Cluster 2
에 인스턴스 1개를 배포합니다.spec.clusterSpecList.members
의 인스턴스 수를 정의합니다. 이 클러스터 가 MongoDB Ops Manager 애플리케이션 인스턴스를 배포 하지 않도록 인스턴스 수를 0으로 설정하다 수 있습니다. 이는 예시 백업 디먼 인스턴스만 호스팅하는 데 이 클러스터 를 사용하려는 경우에 유용합니다.spec.clusterSpecList
에서 클러스터 를 제거 하는 경우, 이는spec.clusterSpecList.members
및spec.clusterSpecList[*].backup.members
에 0개의 멤버를 지정하는 것과 동일합니다.각 클러스터 의 각 StatefulSet에 대해 Kubernetes Operator는 서비스를 구성합니다. 라는 이름의 유형으로,
ClusterIP
<om_resource_name>-svc
클러스터의 엔드포인트 목록에 있는 모든 파드를 포함합니다. 이 서비스의 FQDN인<om_resource_name>-svc.<namespace>.svc.cluster.local
은 Kubernetes Operator가 MongoDB Ops Manager 애플리케이션의 배포된 엔드포인트에 액세스 하는 데 사용하는 기본값 호스트 이름입니다.spec.externalConnectivity
를 지정하는 경우, Kubernetes Operator는 각 클러스터 에 대해<om_resource_name>-svc-ext
라는 외부 KubernetesLoadBalancer
유형 서비스도 생성합니다. 각 클러스터 에서spec.clusterSpecList.externalConnectivity
을(를) 사용하여 이 외부 서비스에 대한 자체 구성을 지정할 수 있습니다. 예를 예시 서비스 유형을 변경하거나 주석을 정의할 수 있습니다.
애플리케이션 데이터베이스. Kubernetes Operator는 두 클러스터에 애플리케이션 데이터베이스를 배포합니다.
Member Cluster 1
에는 애플리케이션 데이터베이스에 대한mongod
프로세스 3개가 포함되어 있고,Member Cluster 2
에는mongod
프로세스 2개가 포함되어 있습니다.spec.applicationDatabase
설정을 사용하여 애플리케이션 데이터베이스 구성을 정의합니다. 각 멤버 클러스터 에서 Kubernetes Operator 는spec.applicationDatabase.clusterSpecList.members
에 정의된 멤버 클러스터 수를 사용하여<om_resource_name>-db-<cluster_index>
이라는 StatefulSet 을 생성합니다. 멀티 클러스터 모드 에서 Kubernetes Operator는spec.applicationDatabase.members
필드 에 설정하다 한 값을 무시합니다. Kubernetes Operator는 모든 멤버 클러스터에 배포된mongod
프로세스로 구성된 하나의 복제본 세트 를 구성합니다.이라는
<statefulset_name>-<pod_index>
이름의 MongoDB 프로세스<om_resource_name>-db-<cluster_index>-<pod_index>
를 호스팅하는ClusterIP
의 각 파드에 대해mongod
Kubernetes Operator는 해당 FQDN 로 개별 프로세스에 액세스하기 위한 Kubernetes 유형 서비스를 생성합니다.<om_resource_name>-db-<cluster_index>-<pod_index>-svc
복제본 세트 의 각mongod
프로세스 는 고유하게 주소를 지정할 수 있어야 합니다.복제본 세트 구성의 프로세스에는 해당 Pod 서비스의 FQDN:
<om_resource_name>-db-<cluster_index>-<pod_index>-svc.<namespace>.svc.cluster.local
로 구성된 프로세스 호스트 이름이 있어야 합니다.각 Pod에는 Persistent Volume Claim 을 통해 연결된 영구 볼륨이 있습니다. Kubernetes Operator가 생성합니다.
모든
mongod
프로세스에서 복제본 세트 를 구성하려면 각 프로세스 가 복제 목적으로 서로 연결되어야 프로세스 . 이를 달성하려면 애플리케이션 데이터베이스를 배포 하는 모든 멤버 클러스터를 동일한 서비스 메시 구성에 포함합니다.서비스 메시는 클러스터 간 DNS 쿼리를 처리하고 이에 따라 트래픽을 라우팅합니다. 서비스 메시는 모든 클러스터에서 각 Pod 서비스의 FQDN
<om_resource_name>-db-<cluster_index>-<pod-index>-svc.<namespace>.svc.cluster.local
를 확인하는 데 도움이 되며 노출된mongod
포트(기본적으로 27017 )에서 연결을 허용합니다.예를 들어,
Member Cluster 1
의om-db-1-0
파드에서 실행 중인mongod
프로세스가Member Cluster 2
의om-db-2-1
파드에서 실행 중인mongod
에 연결되면, 첫 번째mongod
프로세스는 자동화 의 호스트 이름을 사용합니다. 구성,om-db-2-1-svc.om-ns.svc.cluster.local:27017
및 서비스 메시는 이 요청을Member Cluster 2
om-db-2-1-svc
서비스로 라우팅합니다. 서비스 메시가 없으면 KubernetesMember Cluster 1
에Member Cluster 2
에 배포된om-db-2-1-svc
서비스에 대한 정보가 없으므로om-db-2-1-svc.om-ns.svc.cluster.local
의 DNS 확인이 실패합니다.애플리케이션 데이터베이스 및 MongoDB Ops Manager 애플리케이션 인스턴스가
Running
상태 인 경우, Kubernetes Operator는 애플리케이션 데이터베이스 StatefulSet에 모니터링 컨테이너 를 추가합니다. 이로 인해 모든 클러스터의 모든 애플리케이션 데이터베이스 파드가 롤링 재시작 됩니다. Kubernetes Operator는 모든 클러스터에서 StatefulSet를 순차적으로 업데이트하여 롤링 재시작 프로세스 중에 각 클러스터 에서 하나의 복제본 세트 멤버만 일시적으로 사용할 수 없게 됩니다.모니터링 MongoDB Ops Manager MongoDB Ops Manager 에이전트 는 서비스의 FQDN
<om_resource_name>-svc.<namespace>.svc.cluster.local
또는 지정한 경우 의spec.opsManagerURL
값을 사용하여 애플리케이션 인스턴스에 연결합니다.MongoDB Ops Manager 애플리케이션과 백업 디먼 은 항상 모든 복제본 세트 멤버가 포함된 애플리케이션 데이터베이스에 대한 연결 string 을 사용합니다. 연결 string 은 항상 pod별 서비스 FQDN을 사용하여 구성됩니다.
Kubernetes Operator는
spec.backup.enabled
를true
로 설정한 경우 Backup Daemon StatefulSets를 배포합니다.spec.clusterSpecList
에 나열된 각 멤버 클러스터에서 Kubernetes Operator는 백업 데몬 인스턴스 수가spec.backup.members
로 설정된<om_resource_name>-backup-daemon-<cluster_index>
이라는 이름의 백업 데몬 StatefulSet를 생성합니다.또는
spec.clusterSpecList[*].backup.members
에서 각 클러스터 의 백업 디먼 인스턴스 수를 구성할 수 있습니다.백업 데몬 인스턴스는 MongoDB Ops Manager 애플리케이션 인스턴스와 동일한 연결 string 을 사용하여 애플리케이션 데이터베이스 복제본 세트에만 연결합니다.
또한 이 다이어그램에서는 서비스 메시와 구성 요소 간의 네트워킹 연결을 관찰할 수 있습니다.
다이어그램을 둘러싼 점선은 모든 클러스터에 대한 네트워킹 구성을 포함하는 단일 서비스 메시를 보여줍니다.
멤버 클러스터 전체에서 MongoDB Ops Manager 애플리케이션을 둘러싼 점선은 이러한 인스턴스가 상태를 저장하지 않으며 라운드 로빈 로드 밸런서 를 예시 하는 등 트래픽을 모든 인스턴스에 균등하게 분산된 할 수 있음을 나타냅니다.
멤버 클러스터에서 애플리케이션 데이터베이스를 둘러싼 점선은 이러한 인스턴스가 서로 통신하여 단일 MongoDB 복제본 세트를 형성함을 나타냅니다.