配置 Ops Manager 资源以使用远程模式
在此页面上
在默认配置中,MongoDB 助手和备份守护程序通过 Internet 从 MongoDB, Inc.
您可以将 Ops Manager 配置为在远程模式下运行,以便备份守护程序和托管 MongoDB 资源仅从 Ops Manager 下载安装存档, 3 Manager 将下载请求代理到本地 Web 服务器上的 HTTP 端点或部署到您的 Kubernetes 集群。
先决条件和注意事项
步骤
以下过程将 Nginx HTTP 服务器部署到 Kubernetes 集群,以托管 MongoDB 安装存档。
将kubectl
配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl
命令。
注意
MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:
将
context
设置为中心集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"
。将
--namespace
设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如:kubectl config --namespace "mongodb"
。
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
创建 ConfigMap 对于 Nginx。
本教程中的 ConfigMap 将 Nginx 配置为:
运行名为
localhost
的 HTTP 服务器,侦听 Kubernetes 集群中节点上的端口80
,然后将对特定资源的 HTTP 请求路由到提供 MongoDB Server 和 MongoDB Database Tools 安装存档的位置。
将以下示例 Nginx ConfigMap 粘贴到文本编辑器中:
1 2 apiVersion: v1 3 kind: ConfigMap 4 metadata: 5 name: nginx-conf 6 data: 7 nginx.conf: | 8 events {} 9 http { 10 server { 11 server_name localhost; 12 listen 80; 13 location /linux/ { 14 alias /mongodb-ops-manager/mongodb-releases/linux/; 15 } 16 location /tools/ { 17 alias /tools/; 18 } 19 } 20 } 21 ... 以
.yaml
文件扩展名保存此文件。通过对您创建的 ConfigMap 文件调用以下
kubectl
命令来创建 Nginx ConfigMap:kubectl apply -f <nginix-configmap>.yaml
将 Nginx 部署到 Kubernetes 集群。
本教程中的 Nginx 资源配置:
部署一个 Nginx 副本,
创建卷挂载以存储 MongoDB Server 和 MongoDB database Tools 安装存档,以及
定义 初始化容器
curl
使用 命令将 Nginx 提供的安装存档下载到您在 Kubernetes 集群中部署的 MongoDB 数据库资源。
将以下示例 Nginx 资源配置粘贴到文本编辑器中:
1 2 apiVersion: apps/v1 3 kind: Deployment 4 metadata: 5 name: nginx-deployment 6 spec: 7 replicas: 1 8 selector: 9 matchLabels: 10 app: nginx 11 template: 12 metadata: 13 labels: 14 app: nginx 15 spec: 16 containers: 17 - image: nginx:1.14.2 18 imagePullPolicy: IfNotPresent 19 name: nginx 20 ports: 21 - containerPort: 80 22 volumeMounts: 23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux 24 name: mongodb-versions 25 - mountPath: /tools/db/ 26 name: mongodb-tools 27 - name: nginx-conf 28 mountPath: /etc/nginx/nginx.conf 29 subPath: nginx.conf 30 initContainers: 31 - name: setting-up-rhel-mongodb 32 image: curlimages/curl:latest 33 command: 34 - curl 35 - -L 36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 37 - -o 38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 39 volumeMounts: 40 - name: mongodb-versions 41 mountPath: /mongodb-ops-manager/mongodb-releases/linux 42 - name: setting-up-rhel-mongodb-tools 43 image: curlimages/curl:latest 44 command: 45 - curl 46 - -L 47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz 48 - -o 49 - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz 50 volumeMounts: 51 - name: mongodb-tools 52 mountPath: /tools/db/ 53 restartPolicy: Always 54 terminationGracePeriodSeconds: 30 55 volumes: 56 - name: mongodb-versions 57 emptyDir: {} 58 - name: mongodb-tools 59 emptyDir: {} 60 - configMap: 61 name: nginx-conf 62 name: nginx-conf 63 ... 修改示例中突出显示的行以指定要安装的 MongoDB Server 版本。
例如,要将 MongoDB 版本
4.0.2
替换为不同的数据库版本,请更新以下区块:- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 更新此区块以修改 MongoDB database Tools 版本:
- name: setting-up-rhel-mongodb-tools image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz - -o - /tools/db/mongodb-database-tools-rhel80-x86_64-100.6.0.tgz - 要加载多个版本,请附加
curl
命令 到您希望 Nginx 提供服务的每个版本的相应 initContainer。
例如,要配置 Nginx 来提供 MongoDB
6.0.1
:- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
- 要加载多个版本,请附加
以
.yaml
文件扩展名保存此文件。通过对您创建的 Nginx 资源文件调用以下
kubectl
命令来部署 Nginx:kubectl apply -f <nginix>.yaml
将以下示例 Nginx 资源配置粘贴到文本编辑器中:
1 2 apiVersion: apps/v1 3 kind: Deployment 4 metadata: 5 name: nginx-deployment 6 spec: 7 replicas: 1 8 selector: 9 matchLabels: 10 app: nginx 11 template: 12 metadata: 13 labels: 14 app: nginx 15 spec: 16 containers: 17 - image: nginx:1.14.2 18 imagePullPolicy: IfNotPresent 19 name: nginx 20 ports: 21 - containerPort: 80 22 volumeMounts: 23 - mountPath: /mongodb-ops-manager/mongodb-releases/linux 24 name: mongodb-versions 25 - mountPath: /tools/db/ 26 name: mongodb-tools 27 - name: nginx-conf 28 mountPath: /etc/nginx/nginx.conf 29 subPath: nginx.conf 30 initContainers: 31 - name: setting-up-rhel-mongodb 32 image: curlimages/curl:latest 33 command: 34 - curl 35 - -L 36 - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz 37 - -o 38 - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz 39 volumeMounts: 40 - name: mongodb-versions 41 mountPath: /mongodb-ops-manager/mongodb-releases/linux 42 - name: setting-up-rhel-mongodb-tools 43 image: curlimages/curl:latest 44 command: 45 - curl 46 - -L 47 - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 48 - -o 49 - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 50 volumeMounts: 51 - name: mongodb-tools 52 mountPath: /tools/db/ 53 restartPolicy: Always 54 terminationGracePeriodSeconds: 30 55 volumes: 56 - name: mongodb-versions 57 emptyDir: {} 58 - name: mongodb-tools 59 emptyDir: {} 60 - configMap: 61 name: nginx-conf 62 name: nginx-conf 63 ... 修改示例中突出显示的行以指定要安装的 MongoDB Server 版本。
例如,要将 MongoDB 版本
4.0.2
替换为不同的数据库版本,请更新以下区块:- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel<version>-4.2.0.tgz 更新此区块以修改 MongoDB database Tools 版本:
- name: setting-up-rhel-mongodb-tools image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz - -o - /tools/db/mongodb-database-tools-rhel<version>-x86_64-100.1.0.tgz 要加载多个版本,请将
curl
命令附加到您希望 Nginx 提供的每个版本的相应 initContainer 中。例如,要配置 Nginx 来提供 MongoDB
6.0.1
:- name: setting-up-rhel-mongodb image: curlimages/curl:latest command: - curl - -L - https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz - -o - /mongodb-ops-manager/mongodb-releases/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz 以
.yaml
文件扩展名保存此文件。通过对您创建的 Nginx 资源文件调用以下
oc
命令来部署 Nginx:oc apply -f <nginix>.yaml
创建 Kubernetes 服务,使 Nginx 可从集群中的其他 Pod 访问。
本教程中的服务通过端口80
将 Nginx 暴露给来自 Kubernetes 集群中其他节点的流量。 这允许您使用 Kubernetes 操作符部署的 MongoDB database 资源 pods 从 Nginx 下载安装存档。
运行以下命令,为 Nginx 部署创建服务:
将以下示例服务粘贴到文本编辑器中:
1 2 apiVersion: v1 3 kind: Service 4 metadata: 5 name: nginx-svc 6 labels: 7 app: nginx 8 spec: 9 ports: 10 - port: 80 11 protocol: TCP 12 selector: 13 app: nginx 14 ... 以
.yaml
文件扩展名保存此文件。通过对创建的服务文件调用以下
kubectl
命令来创建服务:kubectl apply -f <nginix-service>.yaml
复制并更新此 Ops Manager 资源的突出显示字段。
突出显示的部分使用以下 Ops Manager 配置设置:
automation.versions.source: remote
以spec.configuration
远程模式。automation.versions.download.baseUrl
在spec.configuration
中提供为 MongoDB 安装存档提供服务的 HTTP 资源的基本 URL。更新此行,将
<namespace>
替换为您使用 Kubernetes 操作符将资源部署到的命名空间。automation.versions.download.baseUrl.allowOnlyAvailableBuilds: "false"
spec.configuration
中,以帮助确保企业版构建没有问题。
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDBOpsManager 4 metadata: 5 name: ops-manager-localmode 6 spec: 7 replicas: 1 8 version: "6.0.0" 9 adminCredentials: ops-manager-admin-secret 10 configuration: 11 # this enables remote mode in Ops Manager 12 automation.versions.source: remote 13 automation.versions.download.baseUrl: "http://nginx-svc.<namespace>.svc.cluster.local:8080" 14 15 backup: 16 enabled: false 17 18 applicationDatabase: 19 members: 3 20 ...
将复制的示例部分粘贴到现有的 Ops Manager 资源中。
打开您首选的文本编辑器并粘贴 对象 规范到资源文件中的相应位置。
追踪你的 Ops Manager 实例的状态。
要检查 Ops Manager 资源的状态,请调用以下命令:
kubectl get om -o yaml -w
有关资源部署状态的信息,请参阅排除 Kubernetes 操作符故障。
Ops Manager 资源完成Pending
阶段后,该命令将返回类似于以下内容的输出:
1 status: 2 applicationDatabase: 3 lastTransition: "2020-05-15T16:20:22Z" 4 members: 3 5 phase: Running 6 type: ReplicaSet 7 version: "4.4.5-ubi8" 8 backup: 9 phase: "" 10 opsManager: 11 lastTransition: "2020-05-15T16:20:26Z" 12 phase: Running 13 replicas: 1 14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080 15 version: "6.0.0"
复制status.opsManager.url
字段的值,该字段说明资源的连接 URL 。 您可以在创建 ConfigMap 时使用此值 在此过程的稍后部分中。
部署MongoDB database资源。
如果尚未完成,请完成以下先决条件:
在部署 Ops Manager 的同一命名空间中部署MongoDB database 资源。确保您:
将资源的
spec.opsManager.configMapRef.name
与 ConfigMap 的metadata.name
进行匹配。将资源的
spec.credentials
与您创建的包含 Ops Manager 编程 API 密钥对的密钥名称进行匹配。
在使用 Kubernetes Operator 创建的 MongoDB 数据库资源容器中运行的 MongoDB 助手通过 Nginx 从 Ops Manager 下载安装存档,而不是从互联网下载。