对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

通过 API 部署集群

本教程操作Cloud Manager Administration API 的自动化配置来部署其他用户拥有的分分片集群。 本教程首先创建一个新项目,然后创建一个新用户作为该项目的所有者,最后创建一个由新用户拥有的分分片集群。 您可以创建脚本来自动执行这些过程,以便在日常操作中使用。

要执行这些步骤,您必须有足够的 Cloud Manager 访问权限。具有Project Owner角色的用户有足够的访问权限。

这些过程将安装一个具有两个分片的集群。 每个分片都包含一个三成员副本集。 本教程将安装一个mongos和三个配置服务器。 集群的每个组件都驻留在自己的服务器上,总共需要10主机。

本教程将在每台主机上安装MongoDB Agent。

预配 10 台主机,为分片集群的组件提供服务。 有关主机要求,请参阅 MongoDB 手册中的生产说明。

每台主机必须为其MongoDB Agent提供对所有其他主机上 MongoDB Agent的主机名和端口的完全网络访问权限。每个代理运行命令hostname -f以自行识别其主机名和端口,并将其报告给 Cloud Manager。

提示

为确保代理可以相互访问,请使用自动化预配主机。 这将安装具有正确网络访问权限的 MongoDB 代理。使用本教程在这些计算机上重新安装自动化。

在使用API时,您可以在Github示例页面上查看示例。

API 资源使用其中的一个或多个变量。 在调用这些 API 资源之前,将这些变量替换为您所需的值。

名称
类型
说明

PUBLIC-KEY

字符串

您的 API 凭证的公共 API 密钥。

PRIVATE-KEY

字符串

您的 API 档案的私有 API 密钥 。

cloud.mongodb.com

字符串

Cloud Manager 实例的URL 。

GROUP-ID

字符串

项目设置中项目的唯一标识符。

1

使用 Cloud Manager Administration API 发送项目文档以创建新项目。

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Content-Type: application/json" \ --request POST "https://cloud.mongodb.com/api/public/v1.0/groups?pretty=true" \ --data ' { "name": "{GROUP-NAME}" }'

API 返回一个包含项目 agentApiKey 和 id 的文档。

2

记录这些值,以便在此过程和本教程的其他过程中使用。

3

使用/users端点将用户添加到新项目。

请求正文应包含包含用户信息的用户JSON文档。

将用户的roles.roleName设置为GROUP_OWNER ,并将用户的roles.groupId设置为新群组的id 。

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header 'Accept: application/json' \ --header "Content-Type: application/json" \ --request POST "https://cloud.mongodb.com/api/public/v1.0/users?pretty=true" \ --data ' { "username": "<new_user@example.com>", "emailAddress": "<new_user@example.com>", "firstName": "<First>", "lastName": "<Last>", "password": "<password>", "roles": [{ "groupId": "{PROJECT-ID}", "roleName": "GROUP_OWNER" }] }'
1

要了解如何安装 MongoDB Agent,请按照相应平台的步骤进行操作。

2

当 MongoDB Agent 首次运行时,它会下载mms-cluster-config-backup.json文件,该文件描述了自动化配置的所需状态。

在其中一台主机上,导航到/var/lib/mongodb-mms-automation/并打开mms-cluster-config-backup.json 。 确认文件的version字段设置为1 。 发生更改时,Cloud Manager 会自动递增该字段。

要添加或更新部署,请检索配置,根据需要进行更改,然后通过API将更新的配置发送到 Cloud Manager。

以下过程通过API部署更新的自动化配置:

1
  1. 使用AutomationConfig资源检索配置。 发出以下命令,用集群创建 API 资源的变量替换占位符。

    curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true" \ --output currentAutomationConfig.json
  2. 验证下载的自动化配置文件。

    将currentAutomationConfig.json的version字段与自动化配置备份文件mms-cluster-config-backup.json进行比较。 version值是两个JSON文档中的最后一个元素。 您可以在任何运行 MongoDB Agent 的主机上找到此文件,网址为:

    • Linux 和 macOS: /var/lib/mongodb-mms-automation/mms-cluster-config-backup.json

    • Windows: %SystemDrive%\MMSAutomation\versions\mms-cluster-config-backup.json

    如果version值匹配,则您正在使用当前版本的自动化配置文件。

2

创建一个包含以下字段的文档。在构建配置文档时,请参阅自动化配置的描述以获取有关设置的详细说明。有关示例,请参阅MongoDB实验室页面。

{ "options": { "downloadBase": "/var/lib/mongodb-mms-automation", }, "mongoDbVersions": [], "monitoringVersions": [], "backupVersions": [], "processes": [], "replicaSets": [], "sharding": []}
3

在monitoringVersions.hostname字段中,输入 Cloud Manager 应安装监控的服务器的主机名。 使用在服务器上运行hostname -f会返回的完全限定域名,如下所示:

"monitoringVersions": [ { "hostname": "<server_x.example.com>", "logPath": "/var/log/mongodb-mms-automation/monitoring-agent.log", "logRotate": { "sizeThresholdMB": 1000, "timeThresholdHrs": 24 } }]

此配置示例还包括指定日志位置的logPath 字段和指定日志阈值的logRotate 字段。

4

如通过 API 部署集群中所述,此分片集群有10个 MongoDB 实例,每个实例都在自己的服务器上运行。 因此,自动化配置的processes数组将包含10文档,每个 MongoDB 实例一个文档。

以下示例将第一个文档添加到processes数组中。 将<process_name_1>替换为您选择的任何名称,并将<server1.example.com>替换为主机的FQDN 。

添加 9 个文档:分片集群中的每个 MongoDB 实例一个文档。

为processes.<args>字段指定args2_6语法。 processes.args2_6对象接受 MongoDB 2.6 及更高版本的大多数 MongoDB 设置和参数。 要了解更多信息,请参阅MongoDB 设置和自动化支持。

"processes": [ { "version": "4.0.6", "name": "<process_name_1>", "hostname": "<server1.example.com>", "logRotate": { "sizeThresholdMB": 1000, "timeThresholdHrs": 24 }, "authSchemaVersion": 5, "featureCompatibilityVersion": "4.0", "processType": "mongod", "args2_6": { "net": { "port": 27017 }, "storage": { "dbPath": "/data/" }, "systemLog": { "path": "/data/mongodb.log", "destination": "file" }, "replication": { "replSetName": "rs1" } } },]
5

将两个副本集文档添加到replicaSets数组。 向每个文档添加三个成员。

例子

本节将一个副本集成员添加到第一个副本集文档中:

重要

您必须在每个副本集的根文档中包含"protocolVersion": 1 。

"replicaSets": [ { "_id": "rs1", "members": [ { "_id": 0, "host": "<process_name_1>", "priority": 1, "votes": 1, "secondaryDelaySecs": 0, "hidden": false, "arbiterOnly": false } ], "protocolVersion": 1 }]

在sharding数组中,将副本集添加到分片,并添加配置服务器设置名称,如下所示:

"sharding": [ { "shards": [ { "tags": [], "_id": "shard1", "rs": "rs1" }, { "tags": [], "_id": "shard2", "rs": "rs2" } ], "name": "sharded_cluster_via_api", "configServerReplica": "rs-config", "collections": [] }]
6

使用AutomationConfig资源发送更新的自动化配置。

使用更新后的配置文档的路径发出以下命令,并将占位符替换为集群创建 API 资源的变量。

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Content-Type: application/json" --request PUT "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true" \ --data @currentAutomationConfig.json

成功更新配置后,API 会返回 HTTP 200 OK状态代码,以指示请求已成功。

7

从 Cloud Manager 检索自动化配置并确认其中包含更改。要检索配置,请发出以下命令,用集群创建 API 资源的变量替换占位符。

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationConfig?pretty=true"
8

使用AutomationStatus资源验证配置更新是否已完全部署。 发出以下命令:

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups/{PROJECT-ID}/automationStatus?pretty=true"

curl 命令返回一个包含 processes 数组以及 goalVersion 键和值的 JSON 对象。processes 数组包含每个托管 MongoDB 实例的服务器的文档。当 processes 数组中的所有 lastGoalVersionAchieved 字段都等于 goalVersion 指定的值时,新配置即部署成功。

例子

在此响应中, processes[2].lastGoalVersionAchieved落后于goalVersion 。 这表示位于server3.example.com的 MongoDB 实例运行的版本比goalVersion慢一个版本。 等待几秒钟,然后再次发出curl命令。

{ "goalVersion": 2, "processes": [{ "hostname": "server1.example.com", "lastGoalVersionAchieved": 2, "name": "ReplSet_0", "plan": [] }, { "hostname": "server2.example.com", "lastGoalVersionAchieved": 2, "name": "ReplSet_1", "plan": [] }, { "hostname": "server3.example.com", "lastGoalVersionAchieved": 1, "name": "ReplSet_2", "plan":[] }]}

要在Cloud Manager控制台中查看新配置,请执行以下操作:

  1. 在MongoDB Cloud Manager中, Go项目的 Processes 页面。

    1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

    2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

    3. 在侧边栏中,单击 Database 标题下的 Processes。

      显示“进程”页面。

  2. 查看新配置。

要在集群中提供其他版本的 MongoDB,请参阅更新部署的 MongoDB 版本。