MongoDB Ops Manager は、エンタープライズ MongoDB 配置に必要なコンポーネントです。MongoDB Ops Manager は、MongoDB データベースの自動化、モニター、バックアップを実行します。MongoDBOpsManager カスタム リソースは、次の 3 つのコンポーネントを定義します。
MongoDB Ops Managerアプリケーション — メインの MongoDB Ops Managerコンポーネントとフロントエンド UI。
アプリケーションデータベース — MongoDB Ops Manager のバッキング MongoDB データベースです。
バックアップデーモン — バックアップおよび復元プロセスで MongoDB Ops Manager アプリケーションをサポートします。
Kubernetes Operator は、MongoDBOpsManager リソースの仕様をマネージドします。仕様が変更されると、Kubernetes 演算子が変更を検証し、MongoDB Ops Manager コンポーネントを配置する各 Kubernetes クラスターで適切な更新を適用します。
次の図は、単一の Kubernetes クラスター上の MongoDB Ops Manager 配置のアーキテクチャを示しています。
アプリケーション データベース
アプリケーションデータベースの場合、Kubernetes Operator はMongoDBレプリカセットをステートフルセットとして配置します。各ポッドには次のコンテナがあります。
mongod — データベース プロセス。
MongoDB Agent —
mongodライフサイクルを管理します。MongoDB Agent のバージョンは、$AGENT_IMAGE環境変数または Helm チャートのagent.versionを使用して上書きできます。モニタリングエージェント — モニタリングデータをMongoDB Ops Managerに送信します。バージョンは後方互換性のために自動的に選択されるため、上書きすることはできません。
Kubernetes 演算子は、各 Pod にマウントされた Secret (<om_resource_name>-db-config) を介してエージェントにアプリケーションデータベース構成を渡します。
Kubernetes はノードごとに 1 つの Pod を作成します。各 MongoDB Agent は mongod を起動し、レプリカセットに追加します。Kubernetes 演算子 は各 Pod の PersistentVolumeClaims を作成します。これらは spec.applicationDatabase.podSpec.persistence を使用してカスタマイズできます。
Kubernetes 演算子は、内部接続のためにヘッドレスサービスを作成します。マルチクラスター配置では、Kubernetes 演算子は、個別の mongod アドレス可能性のために、Pod (<om_resource_name>-db-N-svc)ごとに 1 つのサービスも作成します。
アプリケーションデータベースのトポロジーに関する考慮事項
プライマリを選出するには、アプリケーションデータベース レプリカセットのノードの過半数が使用可能である必要があります。可能であれば、奇数のノード Kubernetes クラスターを使用し、ノードをデータセンター、ゾーン、またはクラスターに分散します。
次の配布例を参照してください。
5 ノードのアプリケーションデータベース、2 クラスター: 3 ノードをクラスター 1 に配置し、2 ノードをクラスター 2 に配置します。クラスター 2 が失敗した場合、クラスター 1 には過半数があります。クラスター 1 が失敗した場合、クラスター 2 には過半数がありません。
5ノードのアプリケーションデータベース、3つのクラスター: クラスター1と2にそれぞれ2ノードを配置し、クラスター3に1ノードを配置します。クラスターが1つ失敗しても、過半数のノードが残ります。
7ノードのアプリケーションデータベース、2クラスター: 4をクラスター1に、3をクラスター2に配置します。クラスター2の損失のみが過半数を維持します。
詳細については、「 レプリカセット配置アーキテクチャ および「 MongoDB Ops Managerと AppDB リソースの障害復旧 を参照してください。
Ops Managerアプリケーションリソース
アプリケーション データベースが実行状態に達すると、 Kubernetes Operator によってMongoDB Ops Managerアプリケーションの配置が開始されます。
Kubernetes Operator は、メンバー Kubernetes クラスターの各ノードに StatefulSet を構成します。
Kubernetes は、MongoDB Ops Manager レプリカごとに 1 つの Pod を作成します。
各ポッドには 1 つのMongoDB Ops Managerアプリケーション プロセスが含まれています。
単一クラスター配置で Pod の障害に対する強韌性を高めるには、spec.replicas を増やします。複数クラスター配置でデータセンター障害に対する強韌性を高めるには、spec.topology を MultiCluster に設定し、Kubernetes クラスター間にインスタンスを分散させます。
バックアップデーモンリソース
spec.backup.enabled が true の場合、Kubernetes Operator は MongoDB Ops Manager アプリケーションが実行状態に達した後にバックアップデーモンを起動します。Kubernetes 演算子は、各ノードクラスター上のバックアップデーモンに対してStatefulSetを配置します。Kubernetesは、spec.backup.membersで指定された数だけバックアップデーモンPodを作成します。
バックアップが有効になっている場合、Kubernetes 演算子は各ノードクラスター上のバックアップデーモンのヘッドデータベース用の PersistentVolumeClaim を作成します。spec.backup.headDB を介してヘッドデータベースを構成します。
Kubernetes 演算子 はMongoDB Ops Manager API を呼び出して、MongoDB Ops Managerアプリケーションのバックアップ構成がカスタム リソース定義と一致することを確認します。oplog ストア、ブロックストア、または S3 スナップショット ストアをクラスターごとではなく、グローバル spec.backup レベルで構成します。
バックアップジョブを暗号化 することもできますが、同じ Kubernetes Operator インスタンスが MongoDBOpsManager と MongoDB の両方のカスタムリソースを管理していない場合は、制限 が適用されます。
MongoDB Ops Manager の調整
次の図は、Kubernetes 演算子が MongoDBOpsManager CRD への変更を調整する方法を説明したものです。
調整は次の手順で進められます。
作成または更新します
<om_resource_name>-db-configMongoDB Agent がアプリケーション データベース レプリカセットを起動するために使用する構成を含むシークレット。作成または更新します
<om_resource_name>-dbアプリケーションデータベース用の StatefulSet。この StatefulSet には少なくとも 3 つのポッドが含まれています。各ポッドは 1 つの MongoDB Agent を実行し、ポッドでmongodを起動します。構成 Secret は各ポッドにマウントされます。複数のクラスター配置では、StatefulSet の名前は
<om_resource_name>-db-<cluster-idx>(例:om-db-1) です。作成または更新します
<om_resource_name>Ops Manager アプリケーションの StatefulSet。各レプリカはアプリケーションデータベースに接続します。変更の多くはローリングアップグレードをトリガーします。アプリケーションデータベースで TLS を有効にすると、接続文字列が変更されるため、ローリング再起動もトリガーされます。spec.backupへの変更によってローリングアップグレードが trigger されることはありません。複数のクラスター配置では、StatefulSet の名前は
<om_resource_name>-<cluster-idx>(例:om-1) です。MongoDB Ops Manager API を介して管理者ユーザーを作成し、認証情報を
<om_resource_name>-admin-keyシークレットに保存します。この手順は初回の配置のみで行われます。モニタリングを有効にするには、アプリケーションデータベース StatefulSet のローリングアップグレードを実行します。これは初期配置のみでも発生します。
spec.backup.enabledがtrueの場合は、バックアップデーモンを配置します。StatefulSet の名前は<om_resource_name>-backup-daemon(マルチクラスター配置の場合は<om_resource_name>-backup-daemon-<cluster-idx>) です。MongoDB Ops Manager API を介してバックアップを構成します。これにより、バックアップ構成がカスタム リソース定義と一致することが保証されます。