AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

マルチクラスター アーキテクチャ

Kubernetes Operator は、複数の Kubernetes クラスターにわたって MongoDB データベース リソースと MongoDB Ops Manager リソースの両方を配置することをサポートしています。これにより、地理的な多重化、障害復旧機能、および固有の回復力が向上します。

重要

既存の MongoDB Ops Manager 配置を単一クラスタートポロジーから複数クラスタートポロジーに変換することはできません。単一クラスターモードで開始する場合は、一からやり直して再配置する必要があります。初期配置の前にトポロジーを計画します。

Kubernetes 演算子を使用して MongoDB リソースを配置するモードは、次の設定で制御できます。

  • spec.topology — MongoDB Ops Managerアプリケーションのモードを制御します。

  • spec.applicationDatabase.topology — アプリケーションデータベースのモードを制御します。

spec.topologyspec.applicationDatabase.topologyの両方をMultiClusterに設定すると、次の例に示すように、MongoDB Ops Managerリソースとそのアプリケーションデータベースのマルチクラスターモードが有効になります。

spec:
topology: MultiCluster
applicationDatabase:
topology: MultiCluster

マルチクラスター モードでは、単一のノード クラスターから開始し、必要に応じて増やすことができます。具体的な説明は以下の通りです。

  • 単一ノード クラスターの開始: 配置は、1 つのノード クラスターで開始できます。

  • 最小アプリケーションデータベースレプリカセット: 最小 3 ノードのアプリケーションデータベースレプリカセットは単一ノードクラスターで実行でき、後でクラスター間で拡張できます。

  • 単一アプリケーションインスタンス: 単一の Ops Managerアプリケーションインスタンスは1つのクラスターで実行するでき、後で追加のクラスターを追加できます。

単一クラスター モード (デフォルト)では、トポロジ設定を省略するか、SingleClusterに設定します。

マルチクラスター配置には次の制限が適用されます。

  • MongoDB Ops Managerバージョン 5.0.7 以降を使用します。

  • シークレットのストレージには、シークレットのみを使用します。HashiCorp Vault はサポートされていません。

  • Kubernetes Operator が MongoDBOpsManager リソースと MongoDB リソースの両方を管理しない配置の場合は、MongoDB Ops Manager で KMIP バックアップ暗号化設定を手動で構成する必要があります。

  • MongoDBMultiCluster リソースに ServiceMonitor を追加しないでください。Prometheus 統合はサポートされていません。

  • 既存の単一クラスター MongoDB リソースをマルチクラスター リソースに移行することはできません。

機能または要件
シングルクラスター
マルチクラスター

演算子は、MongoDB Ops Managerおよびアプリケーションデータベースと同じクラスターにある必要があります

はい

No

Ops Manager およびアプリケーションデータベースクラスターに必要なサービスメッシュ

No

はい

HashiCorp Vault のサポート

はい

No

すべてのバックアップ メカニズムがサポートされています

はい

いいえ。S3互換のoplog/スナップショットのみ。

KMIP暗号化

はい

制限付き

サービスメッシュの有無にかかわらず、複数のクラスターで MongoDB を配置できます。

いずれの場合も、Kubernetes 演算子は、

  • 演算子クラスター上の MongoDBMultiCluster 仕様を監視します。

  • マウントされたkubeconfigを使用してノードクラスターと通信します。

  • 各ノードクラスターに ConfigMaps、Secrets、Services、および StatefulSets を作成します。

  • MongoDB レプリカセットのノードを適切なクラスターに配置します。

  • 演算子クラスターとノードクラスターのイベントを監視します。

  • リソースを調整して、期待される状態を確認します。

MongoDB Controls for Kubernetes Operator を使用する複数の Kubernetes クラスター MongoDBデプロイは、 Kubernetesの 1 つの演算子クラスターと 1 つ以上のノード クラスターで構成されます。

  • 演算子クラスターには、次のロールがあります。

    • Kubernetes Operator 用のMongoDB Controls のホスト

    • MongoDB のマルチ Kubernetes クラスター配置のコントロール プレーンとして機能

    • MongoDB レプリカセットのMongoDBMultiClusterリソース仕様をホストします

    • を 演算子とともに配置する場合、 をホストしますMongoDB Ops ManagerMongoDB Ops ManagerKubernetes

    • MongoDB レプリカセット のノードもホストできます

    重要

    中央クラスターは、 演算子クラスター とも呼ばれます。 将来のリリースでは、中央クラスターへの参照は演算子クラスターを参照するように名前が変更される可能性があります。

  • メンバークラスターは MongoDB レプリカセットをホストします。

注意

演算子クラスターが失敗した場合、アクセスを復元するか、Kubernetes Operator を別のクラスターに再配置するまで、Kubernetes Operator を使用して配置を変更することはできません。See 障害復旧.

サービス メッシュの使用

サービスメッシュは、クラスター間の MongoDB ノードの検出を管理し、ノード間の通信を取り扱います。次の図は、サービスメッシュを使用したマルチクラスタ配置を示しています。

サービス メッシュを使用したマルチクラスター配置を示す図
クリックして拡大します

サービス メッシュなし

外部ドメインと DNS ゾーンは、クラスター間の通信を取り扱います。外部ドメインと DNS ゾーンによる外部接続の有効化を参照してください。次の図は、サービス メッシュを使用しないマルチクラスター配置を示しています。

サービス メッシュを使用しないマルチクラスター配置を示す図
クリックして拡大します

次の図は、複数の Kubernetes クラスターに配置された MongoDB Ops Manager アプリケーション、アプリケーションデータベース、バックアップデーモンを示しています。

マルチクラスター MongoDB Ops Manager 配置を示す図

複数のクラスターでの Ops Manager 配置の主な要素:

  1. 演算子クラスター (例:ノードクラスター 0) は、すべてのノードクラスターの管理に使用される kubeconfig シークレット (mongodb-enterprise-operator-multi-cluster-kubeconfig) とクラスターマッピング ConfigMap を保存します。

  2. クラスターマッピング ConfigMaps は、クラスター名とインデックスの間の関係を追跡します。

    • <om_resource_name>-cluster-mappingspec.clusterSpecList エントリをクラスター インデックスにマップします。

    • <om_resource_name>-db-cluster-mappingspec.applicationDatabase.clusterSpecList エントリをクラスター インデックスにマップします。

    • <om_resource_name>-db-member-spec — 障害復旧のためにクラスターごとのレプリカ数を記録します。

  3. アプリケーション StatefulSets は、各クラスターで <om_resource_name>-<cluster_index> と呼ばれます。演算子は、すべてのローカル Pod を含む ClusterIP サービス (<om_resource_name>-svc)と、外部アクセス用の任意の LoadBalancer サービス (<om_resource_name>-svc-ext)を作成します。

  4. アプリケーションデータベース StatefulSets の名前は <om_resource_name>-db-<cluster_index> です。ポッドごとのサービス (<om_resource_name>-db-<cluster_index>-<pod_index>-svc) により、サービス メッシュ全体で個別の mongod のアドレス指定が可能になります。

  5. バックアップデーモン StatefulSets<om_resource_name>-backup-daemon-<cluster_index> と呼ばれ、spec.backup.enabledtrue の場合に作成されます。

次の表は、マルチクラスター配置で MongoDB Ops Manager アプリケーションに接続するクライアントとサービスの種類と、それらが使用する URL を説明します。

オリジン
目的
URL
Kubernetes 演算子

Ops Managerを構成し、モニタリングを有効にします

デフォルト FQDN <om_resource_name>-svc.<namespace>.svc.cluster.local または spec.opsManagerURL

Kubernetes 演算子

特定の MongoDB 配置を構成します

アプリケーションデータベース内のMongoDB Agent

MongoDB Ops Managerからオートメーション構成を受信します

ヘッドレス モード(MongoDB Ops Manager の接続は不要)

アプリケーションデータベースのモニタリングエージェント

モニタリング データを MongoDB Ops Manager に送信する

デフォルトの FQDN または spec.opsManagerURL

MongoDBリソースの MongoDB Agent

バックアップと復元の指示を含むオートメーション構成を MongoDB Ops Manager から受信する

プロジェクト ConfigMap

user

MongoDB Ops Manager UI または API にアクセスします

外部ドメインを介して spec.externalConnectivity

複数のクラスターでの Ops Manager 配置の場合は、アプリケーションデータベースと Ops Manager アプリケーションをホストする Kubernetes クラスターを同じサービス メッシュに追加します。これにより、次のことが可能になります。

  • クラスター間の配置されたコンポーネント間のネットワーク接続。

  • Pod ごとのサービス FQDN のクロスクラスター DNS 解決。

さらに、演算子クラスターを同じサービス メッシュに追加することもお勧めします。これにより、Ops Manager アプリケーションとアプリケーションデータベース インスタンスを直接ホストできるようになります。

次のクラスターのサービス メッシュを構成します。

  • 演算子クラスター(Kubernetes Operator をインストールする場所)

  • MongoDB Ops Manager アプリケーション インスタンスをホストするすべてのノード Kubernetes クラスター

  • アプリケーションデータベースインスタンスをホストするすべてのノードKubernetesクラスター

サービス メッシュにより、各 MongoDB Ops Manager インスタンスは、クラスター間でもすべてのアプリケーションデータベース インスタンスに接続できます。配置後、各 MongoDB Ops Manager API エンドポイントは、すべてのアプリケーションデータベース ノードに直接接続できる必要があります。

マルチクラスターの MongoDB Ops Manager 配置では、各クラスターは LoadBalancer タイプのサービスを使用して、MongoDB Ops Manager アプリケーションをホストするポッドを個別に公開できます。spec.externalConnectivity を使用してこのサービスを作成し、外部ドメインを外部 IP アドレスに指定します。マルチクラスター配置でのロードバランシングの構成について詳しくは、「マルチクラスター MongoDB Ops Manager 配置のサービス メッシュ要件」を参照してください。

Kubernetes Operator はクロスクラスターロードバランシングをネイティブでサポートしていないため、外部でロードバランシングを構成する必要があります。Ops Manager 配置のクロスクラスターロードバランシングを有効にするためのアプローチには、次のものがあります。

  • 外部ロード バランサー: MongoDB Ops Manager アプリケーションをホストするすべてのクラスターに外部ネットワーク ロード バランサー (パススルー プロキシ) を構成します。ロード バランサーは、ラウンドロビン方式で各クラスターの LoadBalancer サービスにトラフィックを転送します。次の図は、このアプローチを示しています。
外部ロード バランサーを使用したマルチクラスター配置
クリックして拡大します
  • プロキシを使用したサービス メッシュ: サービス メッシュのクロスクラスターロード バランシングを使用します。1 つのクラスターにプロキシ(Nginx や HAProxy など)を配置し、外部に公開し、TCP パススルーを <om_resource_name>-svc.<namespace>.svc.cluster.local に構成します。次の図は、このアプローチを示しています。
サービス メッシュ ロード バランシングを使用したマルチクラスター配置
クリックして拡大します

アプリケーションデータベース と MongoDB Ops Manager のインスタンスの地理的分散は、MongoDB Ops Manager アプリケーション のパフォーマンスとバックアップ/復元プロセスに影響を与える可能性があります。マルチリージョン配置 でのパフォーマンス を参照してください。

可能な場合は、マルチクラスターの回復力と可用性の利点を最大限に活用するため、すべてのコンポーネントを同じ地域に配置します。

パフォーマンス低下の可能性のある要因としては、次のものがあります。

  • MongoDB Ops Manager アプリケーションとプライマリアプリケーションデータベースノード間のネットワークレイテンシが増加しました。

  • MongoDB データベース ノードとバックアップ ジョブを実行する MongoDB Ops Manager アプリケーションの間のレイテンシが増加します。

地理的に離れた配置を計画している場合は、MongoDB サポート にお問い合わせください。

次のマルチクラスター機能では、単一クラスター配置と同じ手順が使用されます。

  • DNS SRVレコードで接続:Kubernetes Operatorが作成するシークレットから、connectionString.standardSrv DNSシードリスト接続文字列を使用してください。Kubernetes内からMongoDBデータベース リソースに接続するを参照し、Using the Kubernetes Secretタブを選択します。

  • データベースユーザーのセキュリティを管理する: 単一クラスター配置と同じ LDAP、SCRAM、X.509、OIDC 認証手順を使用します。ただし、以下の例外があります。

    • 複数のクラスターでの手順は、レプリカセットにのみ適用されます(シャーディングされたクラスターはサポートされません)。

    • mongodbResourceRef で、マルチクラスターレプリカセット名を指定します。

  • クエリ可能なバックアップ (単一クラスターのみのオンプレミス): MongoDB Ops Managerが単一のクラスターに配置されている場合は、クエリ可能なバックアップを構成できます。クエリ可能なバックアップは、複数のクラスターに配置されたMongoDB Ops Managerではサポートされていません。