规划您的 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 Manager 实例来支持Kubernetes MongoDB资源的单个 集群部署。
多种 Kubernetes 集群模式。 您可以在多个 集群中部署多个MongoDB Ops Manager Kubernetes和应用程序数据库实例。在此模式下, 资源的多集群支持在多个
Ops Manager
MongoDB Ops ManagerKubernetes集群上部署 应用程序和应用程序数据库。
MongoDB Ops Manager在单个或多个Kubernetes 集群中部署 资源之前,请查看KubernetesMongoDB Ops Manager Kubernetes中的 架构 和 注意事项 ,并完成 先决条件。
架构
有关MongoDB Ops Manager资源架构的详细信息,请参阅:
KubernetesMongoDB Ops Manager资源的单个 集群部署:KubernetesMongoDB Ops Manager 中的Kubernetes 架构。
资源的多个 集群部署: 多集群KubernetesMongoDB Ops Manager MongoDB Ops Manager架构。
Considerations
加密密钥
KubernetesKubernetes Operator 生成加密密钥来保护MongoDBMongoDB Ops Manager Ops Manager应用程序数据库中的敏感信息。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 Manager KubernetesKubernetes集群中通过 OperatorOps Manager Application Database 创建 实例时, 将部署为 副本集 。您无法将应用程序数据库配置为独立运行的数据库或分片集群。 如果您对应用程序数据库的性能或大小要求有疑问,请联系MongoDB 支持部门。
当您在多集群模式通过MongoDB Ops Manager KubernetesOperator 创建 实例时,Kubernetes Operator 可以在多个成员集群上配置Ops Manager Application Database 。要学习;了解更多信息,请参阅多集群MongoDB Ops Manager架构。
监控
Kubernetes Operator 会自动配置 Ops Manager 以监控支持 Ops Manager 应用程序的应用程序数据库。Kubernetes 操作符会为您创建一个名为<ops-manager-deployment-name>-db
的项目来监控应用程序数据库部署。
Ops Manager 会监控应用程序数据库部署,但并不对其进行管理。 您无法在 Ops Manager 应用程序中更改应用程序数据库的配置。
重要
Ops Manager 用户界面可能会在<ops-manager-deployment-name>-db
项目中显示警告,说明应用程序数据库的代理已过期。您可以放心地忽略这些警告。
身份验证
Kubernetes Operator 对应用程序数据库强制执行SCRAM-SHA-256
身份验证。
Kubernetes Operator 创建数据库用户,Ops Manager 使用该用户连接到应用程序数据库。 此数据库用户具有以下属性:
用户名 |
|
身份验证数据库 |
|
角色 |
您无法修改MongoDB Ops Manager数据库用户的名称和角色。 您可以创建一个密钥来设置数据库用户的密码。 您可以编辑密钥以更新密码。 如果您未创建密钥或删除现有密钥,Kubernetes Operator 会生成密码并存储它。
要学习;了解有关密钥存储的其他选项,请参阅配置密钥存储。 多集群部署不支持在 HashiCorp Vault 中存储密钥 。
离线部署
KubernetesOperator 要求您为MongoDB Enterprise 应用程序数据库 映像指定MongoDB Ops Manager 版本,以启用 资源的任何部署,包括离线部署。
简化的配置
部署MongoDB Ops Manager后,需要对其进行配置。 常规程序包括通过MongoDB Ops Manager 配置向导 设置 。如果在部署之前在对象规范中进行了一些基本设置,则可以绕过配置向导。
在 Ops Manager 对象规范的spec.configuration
区块中,您需要:
添加mms.ignoreInitialUiSetup并设置为
true
。添加最低配置设置,以允许MongoDB Ops Manager实例正常启动。
例子
要禁用 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
将示例值替换为您希望 Ops Manager 使用的值。
备份
Kubernetes Operator 默认启用备份。 Kubernetes Operator 部署 StatefulSet 由一个 Pod 组成,用于托管 备份守护程序服务 ,然后创建 持久卷声明 和 持久卷 用于备份守护进程的 头部数据库 。Kubernetes Operator 使用MongoDB Ops Manager API启用备份守护程序并配置头部数据库。
重要
要配置备份,您必须为oplog 存储和以下任一项目创建MongoDB
资源或MongoDBMultiCluster
资源:
oplog 存储或 S 3 oplog 存储。 如果同时部署oplog存储和S3 oplog存储, MongoDB Ops Manager会随机选择一个用于备份。
S3 快照存储或块存储。 如果同时部署S3快照存储和块存储, MongoDB Ops Manager会随机选择一个用于备份。
在您配置这些备份资源之前,Ops Manager 资源将保持Pending
状态。
您还可以 加密备份作业 ,但在同一 Kubernetes 操作符 实例不同时管理 MongoDBOpsManager 和 MongoDB 自定义资源的部署中会 受到限制 。
Oplog 存储
您必须部署一个三成员副本集来存储您的oplog 切片。
Oplog 数据库仅支持SCRAM
身份验证机制。 您无法启用其他身份验证机制。
如果在 oplog 数据库上启用SCRAM
身份验证,则必须:
创建 MongoDB 资源以将 Ops Manager 连接到 oplog 数据库。
在 Ops Manager 资源定义中指定用户的
name
。
S3 Oplog 存储
要配置S3 oplog 存储,您必须创建Amazon Web Services S3或S3兼容存储桶来存储您的数据库备份 oplog。
您可以使用 Ops Manager 资源定义中的spec.backup.s3OpLogStores.mongodbResourceRef.name
设置为MongoDB
资源和MongoDBMultiCluster
资源配置 oplog 存储。
块存储
要配置块存储,必须部署副本集来存储快照。
S3 快照存储
要配置S3快照存储,您必须创建Amazon Web Services S3或S3兼容的存储桶来存储数据库备份快照。
默认配置将快照元数据存储在应用程序数据库中。 您还可以部署副本集来存储快照元数据,然后使用 Ops Manager 资源定义中的spec.backup.s3Stores.mongodbResourceRef.name
设置对其进行配置。
您可以同时为MongoDB
资源和MongoDBMultiCluster
资源配置S3快照存储。
您可以更新 Operator 不通过 应用程序管理的任何其他 S3 配置设置 KubernetesMongoDB Ops Manager。
禁用备份
要在启用备份后禁用备份,请执行以下操作:
MongoDB Ops ManagerKubernetes设置 对象
spec.backup.enabled
设置为false
。在 应用程序中 禁用备份 。MongoDB Ops Manager
删除 备份守护程序服务 StatefulSet :
kubectl delete statefulset <metadata.name> -backup-daemon \ -n <metadata.namespace>
手动配置 KMIP 备份加密
对于同一 Kubernetes 操作符 实例不同时管理MongoDBOpsManager和MongoDB自定义资源的部署,您必须使用以下过程在 Ops Manager 中手动配置KMIP备份加密客户端设置。如果 Kubernetes 操作符正在管理这两种资源,请参阅为 Ops Manager 配置 KMIP 备份加密。
先决条件
正在运行的KMIP服务器。
一个正在运行的MongoDB Ops Manager实例,配置为使用 KMIP。
一个TLS密钥,用于连接私钥和 PEM 格式的 KMIP 客户端证书。
步骤
将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 MongoDB Ops Manager中的步骤,在 中配置项目的 KMIP 设置。
将 Ops Manager 配置为通过 HTTPS 运行
您可以将通过 Kubernetes Operator 创建的 Ops Manager 实例配置为通过HTTPS而不是HTTP运行。
要将 Ops Manager 实例配置为通过HTTPS运行,请执行以下操作:
创建包含TLS证书和私钥的密钥。
将此密钥添加到 Ops Manager 配置对象中。
有关详细说明,请参阅部署 Ops Manager 资源。
重要
如果您有现有部署,则必须在启用HTTPS后手动重新启动这些部署。 为避免重新启动部署,请在部署托管资源之前配置HTTPS 。
要了解更多信息,请参阅部署后启用 HTTPS。
Ops Manager 应用程序访问
默认情况下,Kubernetes Operator 不会创建 Kubernetes 服务来将源自 Kubernetes 集群外部的流量路由到 Ops Manager 应用程序。
要访问 Ops Manager 应用程序,您可以:
配置 Kubernetes 操作符 以创建 Kubernetes 服务。
手动创建 Kubernetes 服务。 如果您的云提供商支持,MongoDB 建议使用
LoadBalancer
Kubernetes 服务。如果您使用的是 OpenShift,请使用 路由。
使用第三方服务,例如 Istio。
最简单的方法是配置Kubernetes Operator,以创建Kubernetes服务,将外部流量路由到MongoDB Ops Manager应用程序。 MongoDB Ops Manager部署过程会指导您将以下设置添加到 对象 配置 OperatorKubernetes 以创建服务的规范:
spec.
externalConnectivity
spec.externalConnectivity.
type
此外,对于多个 Kubernetes 集群上的部署,请参阅网络、负载均衡、服务网格。
在远程或本地模式下部署 Ops Manager
如果您的环境不允许 集群中的主机访问互联网,则可以使用Kubernetes OperatorMongoDB Ops Manager 将单个 集群配置为在 本地 或 远程Kubernetes 模式下运行。在这些模式下,备份守护程序和托管MongoDB资源从MongoDB Ops Manager而不是从 Internet 下载安装存档:
配置 Ops Manager 资源以使用远程模式:Ops Manager 从部署到 Kubernetes 集群的 Web 服务器或 S3 兼容文件存储上的 HTTP 端点读取安装存档。
配置MongoDB Ops Manager 资源以使用本地模式 :MongoDB Ops Manager 从 持久卷 读取安装存档 MongoDB Ops Manager为 StatefulSet 创建。
管理外部 MongoDB 部署
当您使用 Kubernetes Operator 部署 Ops Manager 时,Ops Manager 可以托管已部署的 MongoDB database 资源:
到与 Ops Manager 相同的 Kubernetes 集群。
在 Kubernetes 集群之外。
如果 Ops Manager 管理部署到与 Ops Manager 不同的 Kubernetes 集群或 Kubernetes 集群外部的 MongoDB 数据库资源,您必须:
在 Ops Manager 资源规范中将
mms.centralUrl
设置添加到spec.configuration
。将该值设置为 Ops Manager 在 Kubernetes 集群外部公开的 URL:
spec: configuration: mms.centralUrl: https://a9a8f8566e0094380b5c257746627b82-1037623671.us-east-1.elb.example.com:8080/ 更新使用 Kubernetes Operator 部署的 Kubernetes 集群内所有 MongoDB database 资源引用的 ConfigMaps 。
将
data.baseUrl
设置为与 Ops Manager 资源规范中的spec.configuration.mms.centralUrl
设置相同的值。重要
这包括 和快照存储的 资源引用的 ConfigMap。MongoDB databaseoplog
在多集群中部署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"
。将
--namespace
设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如:kubectl config --namespace "mongodb"
。
安装MongoDB Enterprise Kubernetes Operator。
确保要部署 Ops Manager 的主机至少具有 5 GB 内存。
创建Kubernetes 密钥 对于同一 命名空间 中的管理员用户 作为MongoDB Ops Manager 资源。如果要在多MongoDB Ops Manager Kubernetes 集群MongoDB 部署中部署 ,请使用相同的 命名空间 为多 Kubernetes 集群MongoDB 部署 范围设置。
如果您使用 HashiCorp Vault 作为您的 Secret 存储工具,则可以创建 Vault Secret。
要了解有关 Secret 存储的选项,请参阅配置 Secret 存储。
部署MongoDB Ops Manager资源时, 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 作为您的 Secret 存储工具,则可以创建 Vault Secret。
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 作为您的 Secret 存储工具,则可以创建 Vault Secret。
此密钥存储您的S3档案,以便 Kubernetes 操作符可以将 Ops Manager 连接到您的Amazon Web Services S3或S3兼容存储桶。密钥必须包含以下键值对:
键
值
accessKey
拥有 S3 或 S3 兼容存储桶的 Amazon Web Services 用户的唯一标识符。
secretKey
拥有 S3 或 S3 兼容存储桶的 Amazon Web Services 用户的密钥。
要创建密钥,请调用以下命令:
kubectl create secret generic <my-aws-s3-credentials> \ --from-literal=accessKey="<AKIAIOSFODNN7EXAMPLE>" \ --from-literal=secretKey="<wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY>" 要了解有关管理S 3快照存储的更多信息,请参阅先决条件。