MongoDB Ops Managerのリソースを計画する
項目一覧
MongoDB MongoDB Ops Managerは、 MongoDBの配置を管理、バックアップ、モニターするエンタープライズ アプリケーションです。 MongoDB Ops Managerを使用すると、 MongoDBのスケーリングとアップグレード、クエリの最適化、ポイントインタイム復元の実行、パフォーマンス アラートの受信、配置のモニターが可能です。 MongoDB Ops Managerとその基礎となるデータベースを管理および維持するには、 MongoDB Enterprise Kubernetes Operatorを使用して、 MongoDB Ops ManagerをKubernetesのコンテナに配置されたリソースとして実行します。
MongoDB Ops Managerのリソースは、次のいずれかの方法で配置できます。
単一 Kubernetes クラスター モード。 MongoDB Ops ManagerKubernetes単一のMongoDB インスタンスを配置して、 リソースの単一の クラスター配置をサポートできます。
複数の Kubernetes クラスター モード。 複数のMongoDB Ops Managerとアプリケーション データベースのインスタンスを複数のKubernetesクラスターに配置できます。 このモードでは、{0
Ops Manager
リソースのマルチクラスターは、複数のMongoDB Ops Manager Kubernetesクラスターでの アプリケーションと アプリケーション データベースの配置をサポートします。
MongoDB Ops Manager単一または複数のKubernetes クラスターに リソースを配置する前に、MongoDB Ops Manager Kubernetesの アーキテクチャ と 考慮事項 を確認し、 前提条件を完了してください。
アーキテクチャ
MongoDB Ops Managerリソース アーキテクチャの詳細については、以下を参照してください。
Kubernetesリソースの単一MongoDB Ops Manager クラスター配置:MongoDB Ops Manager の アーキテクチャKubernetes 。
Kubernetesリソースの複数のMongoDB Ops Manager クラスター配置: マルチクラスターMongoDB Ops Manager アーキテクチャ。
Considerations
暗号化のキー
KubernetesKubernetes Operator は、MongoDB Ops Manager MongoDB Ops Manager Application Database 内の機密情報を保護するための暗号化のキーを生成します。KubernetesKubernetes Operator は、このキーをMongoDB Ops Managerリソースと同じ名前空間のシークレットMongoDB Ops Manager に保存します。Kubernetes Operator はシークレットに <om-resource-name>-gen-key
という名前を付けます。
注意
単一クラスターの Kubernetes 配置でシークレットが保存されないようにするには、すべての シークレット を移行します シークレット ストレージ ツール に渡す追加オプション。複数の Kubernetes クラスターでの配置では、 HashiCorp Vault などのシークレット ストレージ ツールへのシークレットの保存はサポートされていません。 。
MongoDB Ops Managerリソースを削除しても、キーはKubernetesクラスターの シークレット に保存されたままになります。 アプリケーション データベースを 永続的なボリューム に保存した場合 と同じ名前で別の MongoDB Ops Managerリソースを作成すると、Kubernetes Operator はシークレットを再利用します。別の名前でMongoDB Ops Managerリソースを作成すると、 Kubernetes Operator によって新しいシークレットとアプリケーション データベースが作成され、古いシークレットは再利用されません。
アプリケーション データベース
トポロジー
MongoDB Ops ManagerKubernetes単一のKubernetes クラスターで Operator を使用して のインスタンスを作成すると、 はOps Manager Application Database レプリカセット として配置されます。アプリケーション データベースをスタンドアロンデータベース またはシャーディングされたクラスターとして構成することはできません。 アプリケーション データベースのパフォーマンスやサイズ要件について心配な場合は、 MongoDB サポートにお問い合わせください。
MongoDB Ops ManagerKubernetesマルチクラスター モードで OperatorKubernetes を介して のインスタンスを作成すると、 Operator は複数のノードクラスターでOps Manager Application Database を構成できます。詳細については、「マルチクラスターMongoDB Ops Managerのアーキテクチャ 」を参照してください。
モニタリング
Kubernetes Operator は、 MongoDB Ops Managerアプリケーションをサポートするアプリケーションデータベースを監視するようにMongoDB Ops Managerを自動的に構成します。 Kubernetes Operator は、アプリケーション データベースの配置を監視するための<ops-manager-deployment-name>-db
という名前のプロジェクトを作成します。
MongoDB Ops Managerはアプリケーション データベースの配置を監視しますが、 MongoDB Ops Managerはそれを管理しません。 MongoDB Ops Manager Application では、アプリケーション データベースの構成を変更できません。
重要
<ops-manager-deployment-name>-db
プロジェクトで、アプリケーション データベースのエージェントが古くなっていることを示す警告が MongoDB Ops Manager UI に表示される場合がある。 これらの警告を無視しても問題ありません。
認証
Kubernetes Operator は、アプリケーション データベースに対してSCRAM-SHA-256
認証を強制します。
Kubernetes Operator は、 MongoDB Ops Managerがアプリケーションデータベースに接続するために使用するデータベースユーザーを作成します。 このデータベースユーザーには次の属性があります。
ユーザー名 | mongodb-ops-manager |
認証データベース | admin |
ロール |
MongoDB Ops Manager データベースユーザーの名前とロールを変更することはできません。 データベースユーザーのパスワードを設定するためのシークレットを作成します。 シークレットを編集してパスワードを更新します。 シークレットを作成したり、既存のシークレットを削除したりしない場合、Kubernetes Operator はパスワードを生成し、それを保存します。
シークレット ストレージのその他のオプションの詳細については、「シークレット ストレージの構成 」を参照してください。 マルチクラスター配置では、 HashiCorp Vault でのシークレットの保存はサポートされていません 。
オフライン配置
KubernetesOperator では、オフライン配置を含むMongoDB Enterprise リソースの任意の配置を有効にするには、 アプリケーション データベース イメージに バージョンMongoDB Ops Manager を指定する必要があります。
効率化された構成
MongoDB Ops Managerを配置した後、それを構成する必要があります。 通常の手順では、MongoDB Ops Manager 構成ウィザード を使用して を設定します。配置する前にオブジェクト仕様にいくつかの重要な設定を設定すると、構成ウィザードをバイパスできます。
spec.configuration
MongoDB Ops Managerオブジェクト仕様の ブロックでは、次の操作を行う必要があります。
mms.ignoreInitialUiSetupを追加し、
true
に設定します。インスタンスがエラーなく起動できるようにするために、 最小構成設定 を追加します。MongoDB Ops Manager
例
MongoDB Ops Manager構成ウィザードを無効にするには、 spec.configuration
ブロックで次の設定を構成します。
1 spec: 2 configuration: 3 mms.ignoreInitialUiSetup: "true" 4 automation.versions.source: "remote" 5 mms.adminEmailAddr: cloud-manager-support@mongodb.com 6 mms.fromEmailAddr: cloud-manager-support@mongodb.com 7 mms.mail.hostname: email-smtp.us-east-1.amazonaws.com 8 mms.mail.port: "465" 9 mms.mail.ssl: "true" 10 mms.mail.transport: smtp 11 mms.minimumTLSVersion: TLSv1.2 12 mms.replyToEmailAddr: cloud-manager-support@mongodb.com
サンプル値を、MongoDB Ops Manager で使用する値に置き換えます。
バックアップ
Kubernetes Operator はデフォルトでバックアップを有効にします。 Kubernetes 演算子は Atlas App Services をステートメントを配置します。 バックアップデーモン サービス をホストするために 1 つのポッドで構成され、 永続的なボリューム要求 を作成します および 永続的なボリューム バックアップデーモンの ヘッドデータベース 用。Kubernetes Operator は、 MongoDB Ops Manager APIを使用して バックアップデーモン を有効にし、ヘッドデータベースを構成します。
重要
バックアップを構成するには、 oplog ストアおよび次のいずれかに対して、 MongoDB
リソースまたはMongoDBMultiCluster
リソースを作成する必要があります。
oplog ストアまたは S 3 oplog ストア。 oplogストアとS3 oplogストアの両方を配置する場合、 MongoDB Ops Managerはバックアップに使用するものをランダムに選択します。
S3 スナップショット ストアまたはブロックストア 。 S3スナップショット ストアとブロックストア の両方を配置する場合、 MongoDB Ops Managerはバックアップに使用するものをランダムに選択します。
これらのバックアップ リソースを構成するまで、 MongoDB Ops Managerリソースは Pending
状態のままになります。
バックアップジョブを暗号化 することもできますが、同じ Kubernetes Operator インスタンスが MongoDPOsManager と MongoDB カスタム リソースの両方を管理していない配置には 制限が 適用されます。
oplogストア
oplog スライスを保存するには、3 つのノードのレプリカセットを配置する必要があります。
oplogデータベースは SCRAM
認証メカニズムのみをサポートしています。 他の認証メカニズムを有効にすることはできません。
oplog データベースでSCRAM
認証を有効にする場合は、次の操作を行う必要があります。
MongoDBMongoDB Ops Managerをoplog データベースに接続するための ユーザー リソースを作成します。
name
のリソース定義でユーザーのMongoDB Ops Manager を指定します。
S3 oplogストア
S3oplog ストアを構成するには、データベースバックアップAmazon Web Services を保存するための S3 または S3 と互換性のあるバケットを作成する必要があります。oplog
のリソース定義で 設定を使用して、 oplogMongoDB
リソースとMongoDBMultiCluster
spec.backup.s3OpLogStores.mongodbResourceRef.name
リソースの両方に ストアを構成できます。MongoDB Ops Manager
Blockstore
ブロックストアを構成するには、スナップショットを保存するためのレプリカセットを配置する必要があります。
S3 Snapshot Store
S3スナップショットストアを設定するには、データベースバックアップ スナップショットを保存するためのAmazon Web Services S3またはS3 と互換性のあるバケットを作成する必要があります。
デフォルト構成では、スナップショットのメタデータは アプリケーション データベース に保存されます。 また、レプリカセットを配置してスナップショット メタデータを保存し、spec.backup.s3Stores.mongodbResourceRef.name
MongoDB Ops Managerのリソース定義で 設定を使用して構成することもできます。
MongoDB
リソースとMongoDBMultiCluster
リソースの両方でS3スナップショット ストアを構成できます。
Operator が管理しない追加の S3 構成設定 KubernetesMongoDB Ops Managerは、 アプリケーションを通じて更新できます。
バックアップの無効化
バックアップを有効にした後に無効にするには、以下の手順を行います。
MongoDB Ops ManagerKubernetesオブジェクト
spec.backup.enabled
の設定 の設定をfalse
に設定する。アプリケーションでの バックアップを無効 にします。MongoDB Ops Manager
バックアップデーモンのサービス ステートメント を削除する :
kubectl delete statefulset <metadata.name> -backup-daemon \ -n <metadata.namespace>
重要
永続的なボリューム要求 および 永続的なボリューム バックアップデーモン サービス の ステートメント を削除しても、バックアップデーモンの ヘッドデータベース 用の は削除されません。 。これらの Kubernetes リソースを削除する前に、保存されたデータを検索できます。
永続的なボリューム の再利用の詳細 については、 Kubernetes のドキュメント を参照してください。
KMIP バックアップの暗号化の手動設定
同じKubernetes Operator インスタンスが MongoDBOpsManager と カスタムMongoDB リソースの両方を管理して いないMongoDB Ops Manager 配置の場合は、次の手順を使用して で KMIP バックアップ暗号化クライアント設定を手動で構成する必要があります。Kubernetes Operatorが両方のリソースを管理している場合は、代わりに「 MongoDB Ops Managerの KMIP バックアップ暗号化の構成 」を参照してください。
前提条件
実行中のKMIPサーバー。
MongoDB Ops ManagerKMIP を使用するように構成され た実行中の インスタンス。
PEM 形式の秘密キーと KMIP クライアント証明書を連結 する TLS シークレット。
手順
TLSシークレットをMongoDBOpsManagerカスタム リソースにマウントします。 例:
apiVersion: mongodb.com/v1 kind: MongoDBOpsManager metadata: name: ops-manager-pod-spec spec: < ... omitted ... > statefulSet: spec: template: spec: volumes: - name: kmip-client-test-prefix-mdb-latest-kmip-client secretName: test-prefix-mdb-latest-kmip-client containers: - name: mongodb-ops-manager volumeMounts: - mountPath: /mongodb-ops-manager/kmip/client/test-prefix-mdb-latest-kmip-client name: kmip-client-test-prefix-mdb-latest-kmip-client readOnly: true ... 「 KMIP を使用するようにプロジェクトを構成する 」の手順に従って、 でプロジェクトの KMIP 設定を構成します 。MongoDB Ops Manager
HTTPS 経由で実行するようにMongoDB Ops Managerを構成する
Operator MongoDB Ops Managerを通じて作成されたKubernetes インスタンスは、 ではなく HTTPHTTPS 経由 で実行するように構成できます。
MongoDB Ops Manager インスタンスをHTTPS 経由で実行するように構成するには、次の手順に従います。
TLS証明書と秘密キーを含むシークレットを作成します。
このシークレットを MongoDB Ops Manager 構成オブジェクト に追加します。
詳細な手順については、「 MongoDB Ops Managerリソースの配置 」を参照してください。
重要
既存の配置がある場合は、 HTTPSを有効にした後、それらを手動で再起動する必要があります。 配置が再起動しないようにするには、管理対象リソースを配置する前にHTTPSを構成します。
詳細については、「配置後のHTTPSの有効化」を参照してください。
MongoDB Ops Manager Application Access
デフォルトでは、Kubernetes OperatorKubernetes は、Kubernetes クラスターの外部から発生したトラフィックをMongoDB Ops Manager アプリケーションにルーティングする サービスを作成しません。
MongoDB Ops Managerアプリケーションにアクセスするには、次の方法を実行します。
Kubernetes Operator を構成して Kubernetes サービスを作成します。
Kubernetes サービスを手動で作成します。 MongoDB では、クラウドプロバイダーがサポートしている場合、
LoadBalancer
Kubernetes サービスを使用することを推奨します。OpenShift を使用している場合は、 ルートを使用します。
Istio などのサードパーティ サービスを使用します。
最も単純な方法は、外部トラフィックをKubernetes Kubernetesアプリケーションにルーティングする サービスを作成するように OperatorMongoDB Ops Manager を構成することです。MongoDB Ops Managerの配置手順では、 オブジェクト に次の設定を追加するように指示しますKubernetes Operator がサービスを作成するように構成する仕様。
spec.
externalConnectivity
spec.externalConnectivity.
type
さらに、複数の Kubernetes クラスターへの配置については、「ネットワーク、ロード バランシング、サービス メッシュ 」を参照してください。
リモート モードまたはローカル モードでのMongoDB Ops Managerの配置
Kubernetes Operator を使用して、単一のMongoDB Ops Managerクラスターをローカルモードまたはリモートモードで動作するようにKubernetesできます。 これらのモードでは、バックアップデーモンと管理対象のMongoDBリソースは、インターネットからではなくMongoDB Ops Managerからインストール アーカイブをダウンロードします。
リモートMongoDB Ops Manager モード を使用するように MongoDB Ops ManagerHTTPリソースを構成しますKubernetes は、 クラスターに配置されたウェブ サーバーまたは S3 互換のファイル ストア上の エンドポイントからインストール アーカイブを読み取ります。
ローカル MongoDB Ops Managerモード MongoDB Ops Managerを使用するように リソースを構成しますMongoDB Ops Manager 。MongoDB は、 永続的なボリューム からインストール アーカイブを読み取ります MongoDB Ops Manager Atlas Triggers は、 ステートメントを使用して作成します。
外部 MongoDB 配置の管理
Operator を使用してMongoDB Ops Manager を配置すると、KubernetesMongoDB Ops Manager は配置されたMongoDB データベース リソースを管理できます。
Kubernetesと同じMongoDB Ops Manager クラスターへの接続。
Kubernetes クラスターの外部。
が、MongoDB Ops Manager ManagerMongoDB とは異なる クラスター、または クラスターの外部に配置された データベースKubernetes MongoDB Ops ManagerKubernetesリソースを管理する場合は、次を行う必要があります。
MongoDB Ops Managerリソース仕様で
mms.centralUrl
設定をspec.configuration
に追加します。URLMongoDB Ops ManagerがKubernetes クラスターの外部で公開される に値を設定します。
spec: configuration: mms.centralUrl: https://a9a8f8566e0094380b5c257746627b82-1037623671.us-east-1.elb.example.com:8080/ Kubernetes Operator を使用して配置した Kubernetes クラスター内のすべての MongoDB database リソースが参照するConfigMaps を更新します。
リソース仕様の
data.baseUrl
設定と同じ値にspec.configuration.mms.centralUrl
を設定します。MongoDB Ops Manager
マルチクラスターでのMongoDB Ops Managerの配置
シークレット ストレージ
Kubernetes にシークレットが保存されないようにするには、すべての Kubernetes シークレット を移行してください Kubernetes Operator が シークレット ストレージ ツール に作成するマルチクラスター配置では、 HashiCorp Vault などのシークレット ストレージ ツールにシークレットを保存することはできません。 。
前提条件
まだ作成していない場合は、次のコマンドを実行して、作成した名前空間ですべての
kubectl
コマンドを実行します。kubectl config set-context $(kubectl config current-context) \ -n <metadata.namespace> 注意
MongoDB Ops Manager リソースを複数の Kubernetes クラスター MongoDB 配置に配置している場合、次の手順に従います。
context
を中央クラスターの名前に設定します(例:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。MongoDB のマルチ配置に使用したのと同じスコープ(例:
kubectl config --namespace "mongodb"
に--namespace
を設定します。
をインストール MongoDBEnterprise Kubernetes Operatorします。
MongoDB Ops Managerを配置するホストに少なくとも 5 ギガバイトのメモリがあることを確認します。
Kubernetes シークレット の作成 同じ 名前空間 の管理者ユーザーの場合 MongoDB Ops Manager リソースとして。MongoDB Ops Manager を複数の Kubernetes クラスター MongoDB 配置に配置している場合は、同じ 名前空間 を使用します マルチ Kubernetes クラスター MongoDB 配置 スコープに設定した
HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。
シークレット ストレージのオプションの詳細については、「シークレット ストレージの構成 」を参照してください。
MongoDB Ops Managerリソースを配置すると、MongoDB MongoDB Ops Managerはこれらの認証情報を持つユーザーを作成し、そのユーザーに
Global Owner
ロールを付与します。 これらの認証情報を使用して、MongoDB Ops Manager に初めてログインします。 MongoDB Ops Manager を配置したら、パスワードを変更するか、このシークレットを削除します。注意
管理者ユーザーのパスワードは、MongoDB Ops Manager のパスワードの複雑さの要件に準拠している必要があります。
kubectl create secret generic <adminusercredentials> \ --from-literal=Username="<username>" \ --from-literal=Password="<password>" \ --from-literal=FirstName="<firstname>" \ --from-literal=LastName="<lastname>"
( 任意 )MongoDB Ops Manager データベースユーザーのパスワードを設定するには、 シークレット を作成します 同じ 名前空間 内 MongoDB Ops Manager リソースとして。
HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。
Kubernetes Operator は、 MongoDB Ops ManagerがOps Manager Application Databaseに接続するために使用するデータベースユーザーを作成します。 次のコマンドを呼び出してシークレットを作成することで、このデータベースユーザーのパスワードを設定できます。
kubectl create secret generic <om-db-user-secret-name> \ --from-literal=password="<om-db-user-password>" 注意
シークレットを作成しない場合、Kubernetes Operator によってパスワードが自動的に生成され、それが内部的に保存されます。 詳細については、「認証 」を参照してください。
(任意)。 S3 スナップショット ストアへのバックアップを構成するには、 シークレット を作成します MongoDB Ops Manager リソースと同じ名前空間内にある。
HashiCorp Vault を使用している場合 シークレット ストレージ ツール として使用する場合は、代わりに Vault シークレットを作成 できます。
このシークレットはS3認証情報を保存し、 Kubernetes Operator はMongoDB Ops ManagerをAmazon Web Services S3またはS3互換バケットに接続できます。 シークレットには、次のキーと値のペアが含まれている必要があります。
キー値accessKey
Amazon Web ServicesS3 または S3 互換バケットを所有する ユーザーの一意の識別子。secretKey
Amazon Web ServicesS3 または S3 互換バケットを所有する ユーザーの秘密キー。シークレットを作成するには、次のコマンドを呼び出します。
kubectl create secret generic <my-aws-s3-credentials> \ --from-literal=accessKey="<AKIAIOSFODNN7EXAMPLE>" \ --from-literal=secretKey="<wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY>" S 3スナップショット ストレージの管理の詳細については、前提条件 を参照してください。