配置 Ops Manager 资源以使用远程模式
在此页面上
在默认配置中, MongoDB Agent MongoDB , MongoDB
您可以将MongoDB Ops Manager配置为在远程模式下运行,以便备份守护程序和托管MongoDB资源仅从MongoDB Ops Manager下载安装存档,MongoDB Ops Manager 将下载请求代理到本地 Web服务器或 S3 兼容存储上的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>
为 Nginx 创建 ConfigMap。
本教程中的 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 密钥对的密钥名称进行匹配。
在使用MongoDB Agent Operator 创建的MongoDB数据库资源容器中运行的 MongoDB Kubernetes通过 Nginx 从MongoDB Ops Manager下载安装存档,而不是从互联网下载。