Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자
/ / /

멀티 클러스터 아키텍처 다이어그램: MongoDB Ops Manager 및 애플리케이션 데이터베이스

다음 다이어그램은 MongoDB Ops Manager 애플리케이션, 애플리케이션 데이터베이스, 백업 데몬 및 해당 영구 볼륨 을 Kubernetes 보여줍니다. 여러 클러스터에 배포됩니다.

여러 Kubernetes 클러스터에 MongoDB Ops Manager, 해당 UI 애플리케이션, 애플리케이션 데이터베이스, 백업 데몬을 간략하게 배포하는 것을 보여주는 다이어그램입니다. 이 다이어그램은 구성 요소 간의 네트워크 연결도 보여줍니다.
클릭하여 확대

이 다이어그램에서는 다음을 수행합니다.

  1. Member Cluster 0 은(는) Kubernetes Operator를 설치하기 때문에 '운영자 클러스터'이기도 합니다. 또한 "멤버 클러스터"이며 모든 멀티 클러스터 사용자 지정 리소스를 호스팅할 수 있습니다.

  2. 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 클러스터에 애플리케이션과 애플리케이션 데이터베이스를 배포 합니다.

  3. 또한 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가 전체 멤버 클러스터 를 잃은 후 재해 복구의 일부로 복제본 세트 를 올바르게 확장하다 하거나 재구성할 수 있습니다.

  4. MongoDBOpsManager 리소스의 구성은 멀티 클러스터 MongoDB Ops Manager 배포서버 를 설명하기 위해 사용자가 생성하는 파일 입니다. Kubernetes Operator는 이 파일 을 사용하여 MongoDB Ops Manager 구성 요소를 배포 합니다.

    다음 예제는 이 다이어그램에 설명된 MongoDB Ops Manager 구성 요소를 배포하는 Kubernetes Operator로 이어지는 구성을 보여줍니다. 이 예에서는 이 다이어그램과 관련이 없는 일부 설정(예: TLS 구성)을 생략합니다.

    1apiVersion: mongodb.com/v1
    2kind: MongoDBOpsManager
    3metadata:
    4 name: om
    5 namespace: om-ns
    6spec:
    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.
  5. 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 인스턴스 의 호스트 이름일 수 있습니다. 학습 내용은 네트워킹 개요를 참조하세요.

  6. 두 개의 멤버 클러스터는 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.membersspec.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 라는 외부 Kubernetes LoadBalancer유형 서비스도 생성합니다. 각 클러스터 에서 spec.clusterSpecList.externalConnectivity 을(를) 사용하여 이 외부 서비스에 대한 자체 구성을 지정할 수 있습니다. 예를 예시 서비스 유형을 변경하거나 주석을 정의할 수 있습니다.

  7. 애플리케이션 데이터베이스. 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 1om-db-1-0 파드에서 실행 중인 mongod 프로세스가 Member Cluster 2om-db-2-1 파드에서 실행 중인 mongod 에 연결되면, 첫 번째 mongod 프로세스는 자동화 의 호스트 이름을 사용합니다. 구성, om-db-2-1-svc.om-ns.svc.cluster.local:27017 및 서비스 메시는 이 요청을 Member Cluster 2 om-db-2-1-svc 서비스로 라우팅합니다. 서비스 메시가 없으면 Kubernetes Member Cluster 1Member 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을 사용하여 구성됩니다.

  8. Kubernetes Operator는 spec.backup.enabledtrue 로 설정한 경우 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 복제본 세트를 형성함을 나타냅니다.

돌아가기

여러 Kubernetes 클러스터에 배포