문서 메뉴
문서 홈
/
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 구성 을 설명합니다. 멤버 클러스터, 사용자 및 컨텍스트에 대한 플러그인을 사용하여 멀티 클러스터 배포를 위해 Kubernetes Operator를 구성하면 kubectl mongodb 다음 리소스가 생성됩니다.

    • Kubernetes Operator가 관리할 모든 Kubernetes 클러스터에 대한 자격 증명이 포함된 mongodb-enterprise-operator-multi-cluster-kubeconfig 시크릿. 연산자 클러스터를 멤버 클러스터로 사용하려는 경우, 이 시크릿에는 Kubernetes 연산자를 설치한 클러스터와 동일한 클러스터에 대한 자격 증명이 포함될 수 있습니다.

    Kubernetes Operator가 멀티 클러스터 모드 에서 실행되는 경우, 관리하려는 클러스터에 대한 시크릿 및 ConfigMap과 같이 필요한 리소스를 저장합니다. 이러한 리소스는 Kubernetes Operator와 동일한 네임스페이스에 속합니다. Kubernetes Operator는 이러한 리소스를 사용하여 여러 Kubernetes 클러스터에 Ops Manager 애플리케이션과 애플리케이션 데이터베이스를 배포합니다.

  3. 또한 Kubernetes Operator는 관리하는 각 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 리소스의 구성은 멀티 클러스터 Ops Manager 배포를 설명하는 사용자가 생성하는 파일입니다. Kubernetes Operator는 이 파일을 사용하여 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 인스턴스에 연결합니다.

    • Ops Manager 리소스에 대해 생성하는 서비스의 기본 FQDN<om_resource_name>-svc.<namespace>.svc.cluster.local 또는

    • spec.opsManagerURL 에 지정하는 URL입니다. Kubernetes Operator를 설치한 클러스터가 서비스 메시에 연결되지 않은 경우와 같은 일부 배포에서는 기본 서비스 FQDN 에 연결하지 못할 수 있습니다. 이 경우 Kubernetes Operator는 MongoDBOpsManager 리소스 상태를 연결 오류를 나타내는 Failed 로 보고합니다. 이러한 경우를 고려하려면 spec.opsManagerURL 의 Ops Manager에 대한 URL을 제공하세요. 이 URL은 외부에 노출된 Ops Manager 인스턴스의 호스트 이름일 수 있습니다. 자세한 내용은 네트워킹 개요를 참조하세요.

  6. 두 개의 멤버 클러스터는 Ops Manager 애플리케이션 을 호스팅합니다. 각 클러스터에서 Kubernetes Operator는 <om_resource_name>-<cluster_index> 이라는 StatefulSet를 배포합니다.

    • StatefulSet는 Member Cluster 1 에 두 개의 Ops Manager 애플리케이션 인스턴스를 배포하고 Member Cluster 2 에 하나의 인스턴스를 배포합니다.

    • spec.clusterSpecList.members 의 인스턴스 수를 정의합니다. 이 클러스터가 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가 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 확인이 실패합니다.

    • 애플리케이션 데이터베이스 및 Ops Manager 애플리케이션 인스턴스가 Running 상태인 경우 Kubernetes Operator는 애플리케이션 데이터베이스 StatefulSet에 모니터링 컨테이너를 추가합니다. 이로 인해 모든 클러스터의 모든 애플리케이션 데이터베이스 파드가 롤링 재시작됩니다. Kubernetes Operator는 모든 클러스터에서 StatefulSets를 순차적으로 업데이트하여 롤링 재시작 프로세스 중에 각 클러스터에서 하나의 복제본 세트 멤버만 일시적으로 사용할 수 없게 됩니다.

    • 모니터링 에이전트는 Ops Manager 서비스의 FQDN, <om_resource_name>-svc.<namespace>.svc.cluster.local 또는 spec.opsManagerURL 의 값(지정한 경우)을 사용하여 Ops Manager 애플리케이션 인스턴스에 연결합니다.

      Ops Manager 애플리케이션과 백업 데몬은 항상 모든 복제본 세트 멤버가 포함된 애플리케이션 데이터베이스에 대한 연결 문자열을 사용합니다. 연결 문자열은 항상 pod별 서비스 FQDN을 사용하여 구성됩니다.

  8. Kubernetes Operator는 spec.backup.enabledtrue 로 설정한 경우 Backup Daemon StatefulSets를 배포합니다.

또한 이 다이어그램에서는 서비스 메시와 구성 요소 간의 네트워킹 연결을 관찰할 수 있습니다.

  • 다이어그램을 둘러싼 점선은 모든 클러스터에 대한 네트워킹 구성을 포함하는 단일 서비스 메시를 보여줍니다.

  • 멤버 클러스터에서 Ops Manager 애플리케이션을 둘러싼 점선은 이러한 인스턴스가 상태를 저장하지 않으며, 예를 들어 라운드 로빈 로드 밸런서를 사용하여 트래픽을 모든 인스턴스에 균등하게 분산할 수 있음을 나타냅니다.

  • 멤버 클러스터에서 애플리케이션 데이터베이스를 둘러싼 점선은 이러한 인스턴스가 서로 통신하여 단일 MongoDB 복제본 세트를 형성함을 나타냅니다.

돌아가기

여러 Kubernetes 클러스터에 배포

다음

네트워킹, 로드 밸런싱, 서비스 메시