次の図は、MongoDB Ops Managerアプリケーション、アプリケーションデータベース、バックアップデーモン、および複数のKubernetesクラスターに配置された対応する永続ボリュームを示しています。
この図では、次のことが行われます。
には
Member Cluster 0kubernetes 構成ファイル が保存されています。このファイルは、ノード クラスター、ユーザー、コンテキストのKubernetes構成を記述します。kubectl mongodbプラグインを使用してKubernetes Operator をマルチクラスター配置用に構成すると、次のリソースが作成されます。mongodb-enterprise-operator-multi-cluster-kubeconfigシークレット。Kubernetes 演算子 がマネージドするすべての Kubernetes クラスターの認証情報が含まれています。中央クラスターをノードクラスターとして使用する場合、このシークレットには、Kubernetes 演算子をインストールするのと同じクラスターの認証情報が含まれる可能性があります。
Kubernetes Operator がマルチクラスター モードで実行されると、ConfigMap や管理するクラスターに関するシークレットなど、必要なリソースが保存されます。 これらのリソースは、Kubernetes Operator と同じ名前空間に属します。 Kubernetes Operator はこれらのリソースを使用して、 MongoDB Ops Managerアプリケーションとアプリケーション データベースを複数のKubernetesクラスターに配置します。
Kubernetes Operator は、管理対象のMongoDB Ops Managerアプリケーションおよびアプリケーション データベース配置ごとに、追加のマルチクラスター配置状態 ConfigMap を作成して維持します。
Member Cluster 0は、次の ConfigMap を含むこの構成を保存します。<om_resource_name>-cluster-mappingConfigMap には、spec.clusterSpecListにリストされているメンバークラスター名と、このドキュメントではcluster_indexとして参照されているクラスター インデックス(Cluster 0やCluster 1など)へのマッピングが含まれています。 Kubernetes Operator はこれらのインデックスを各クラスター名に割り当てます。<om_resource_name>-db-cluster-mappingConfigMap には、spec.applicationDatabase.clusterSpecListにリストされているノードクラスター名とクラスター インデックスへのマッピングが含まれています。<om_resource_name>-db-member-specConfigMap には、各ノード クラスターに対して構成されたアプリケーション データベースのレプリカの数が含まれています。 この情報を取得することで、Kubernetes Operator は、ノード クラスター全体が失われた後など、障害復旧の一環としてレプリカセットを正しくスケーリングまたは再構成することができます。
MongoDBOpsManagerリソースの構成は、マルチクラスターのMongoDB Ops Manager配置を説明するユーザーが作成するファイルです。 Kubernetes Operator はこのファイルを使用してMongoDB Ops Managerコンポーネントを配置します。次の例は、この図で説明されているKubernetes MongoDB Ops Managerコンポーネントを 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: 8.0.0 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: 8.0.0 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インスタンスに接続します。
MongoDB Ops Manager リソースのために作成するサービスのデフォルトの FQDN 、
<om_resource_name>-svc.<namespace>.svc.cluster.local、またはspec.opsManagerURLで指定した URL。配置によっては、Kubernetes 演算子をインストールしたクラスターがサービス メッシュに接続されていない場合など、デフォルトのサービス FQDN にアクセスできない場合があります。この場合、Kubernetes 演算子はMongoDBOpsManagerリソースのステータスをFailedとして報告し、接続エラーを示しています。このような場合を考慮して、spec.opsManagerURLで Ops Manager への URL を提供します。この URL は、外部に公開されている Ops Manager インスタンスのホスト名である可能性があります。詳細を学ぶには、「ネットワーキングの概要」を参照してください。
Two member clusters host the Ops Manager Application. In each cluster, the Kubernetes Operator deploys a StatefulSet named
<om_resource_name>-<cluster_index>.ステートフルセットは、 MongoDB Ops Managerアプリケーションの 2 つのインスタンスを
Member Cluster 1に、1 つのインスタンスをMember Cluster 2に配置します。インスタンスの数を
spec.clusterSpecList.membersで定義します。 このクラスターは MongoDB Ops Manager アプリケーション インスタンスを配置しないように、 インスタンスの数を 0 に設定することができます。 これは、たとえばこのクラスターをバックアップデーモン インスタンスのみのホストに使用する場合に便利です。spec.clusterSpecListからクラスターを削除する場合、これはspec.clusterSpecList.membersとspec.clusterSpecList[*].backup.membersで 0 のメンバーを指定するのと同じになります。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 は、アプリケーション データベースを 2 つのクラスターに配置します。
You define the Application Database configuration using the
spec.applicationDatabasesettings. On each member cluster, the Kubernetes Operator creates a StatefulSet named<om_resource_name>-db-<cluster_index>with the number of member clusters defined inspec.applicationDatabase.clusterSpecList.members. In multi-cluster mode, the Kubernetes Operator ignores values that you set for thespec.applicationDatabase.membersfield. The Kubernetes Operator configures one replica set formed frommongodprocesses deployed across all member clusters.For each Pod in
<statefulset_name>-<pod_index>hosting a MongoDB process named<om_resource_name>-db-<cluster_index>-<pod_index>, the Kubernetes Operator creates a KubernetesClusterIP-type service for accessing the individualmongodprocesses by its FQDN,<om_resource_name>-db-<cluster_index>-<pod_index>-svc. Eachmongodprocess in the replica set must be uniquely addressable.レプリカセット構成のプロセスは、その Pod サービスの FQDN にプロセスホスト名を設定する必要があります:
<om_resource_name>-db-<cluster_index>-<pod_index>-svc.<namespace>.svc.cluster.local。To form a replica set from all
mongodprocesses, each process must connect to each other process for replication purposes. To achieve this, include all member clusters on which you deploy the Application Database into the same service mesh configuration.サービス メトリクスはクロスクラスター DNS クエリを処理し、それに応じてトラフィックをルーティングします。サービス メトリクスは、すべてのクラスターにわたって各 ポッド サービスの FQDN
<om_resource_name>-db-<cluster_index>-<pod-index>-svc.<namespace>.svc.cluster.localの解決を支援し、公開されたmongodポート(デフォルトでは27017 )での接続を可能にします。For example, when a
mongodprocess running in theom-db-1-0Pod inMember Cluster 1connects to amongodrunning in theom-db-2-1Pod inMember Cluster 2, the firstmongodprocess uses its hostname from the Automation Configuration,om-db-2-1-svc.om-ns.svc.cluster.local:27017, and the service mesh routes this request toMember Cluster 2to theom-db-2-1-svcservice. Without the service mesh, the KubernetesMember Cluster 1has no information about theom-db-2-1-svcservice deployed in theMember Cluster 2and the DNS resolution ofom-db-2-1-svc.om-ns.svc.cluster.localwould fail.アプリケーション データベースとMongoDB Ops Managerのアプリケーション インスタンスが
Running状態にある場合、 Kubernetes演算子はアプリケーション データベースのステートメントに追加の監視コンテナを追加します。 これにより、すべてのクラスター内のすべてのアプリケーション データベース ポッドがローリング再起動されます。 Kubernetes Operator は、すべてのクラスターのステートメントを順番に更新するため、ローリング再起動プロセス中に各クラスターで 1 つのレプリカセットのノードのみが一時的に使用できなくなります。モニタリングエージェントは MongoDB Ops Manager アプリケーション インスタンスに、MongoDB Ops Manager サービスの FQDN、
<om_resource_name>-svc.<namespace>.svc.cluster.local、または指定した場合はspec.opsManagerURLの値を使用して接続します。MongoDB Ops Managerアプリケーションとバックアップデーモンは、すべてのレプリカセット ノードを含むアプリケーションデータベースへの接続stringを常に使用します。 接続stringは常に、サービスごとの FQDN を使用して構築されます。
spec.backup.enabledをtrueに設定すると、Kubernetes 演算子はバックアップデーモンのステートメントを配置します。spec.clusterSpecListにリストされている各ノードクラスター上に、Kubernetes Operator は 1 つのバックアップデーモンのステートメントセットを作成し、バックアップデーモンのインスタンス数を<om_resource_name>-backup-daemon-<cluster_index>spec.backup.membersに設定します。あるいは、
spec.clusterSpecList[*].backup.membersで各クラスターのバックアップデーモン インスタンスの数を構成することもできます。バックアップデーモン インスタンスは、 アプリケーション インスタンスと同じ接続 を使用して、アプリケーションstring データベースMongoDB Ops Manager レプリカセットにのみ接続します。
さらに、この図では、サービス メトリクスとコンポーネント間のネットワーク接続を確認できます。
図を囲むドットラインは、すべてのクラスターのネットワーク構成を含む単一のサービス メトリクスを示しています。
ノードクラスター全体でMongoDB Ops Managerアプリケーションを囲むドットラインは、これらのインスタンスがステートレスであり、トラフィックはすべてのインスタンスに均等に分散できることを示しています(例: ラウンドロギングのロード バランサーを使用する場合など)。
ノードクラスターにわたってアプリケーションデータベースを囲むドットラインは、これらのインスタンスが相互に通信し、単一の MongoDB レプリカセットを形成することを示します。