Docs 菜单
Docs 主页
/
MongoDB Cloud Manager
/ /

通过 API 部署集群

在此页面上

  • 先决条件
  • 示例
  • 用于集群创建 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返回一份包含项目的agentApiKeyid的文档。

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.jsonversion字段与自动化配置备份文件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 实验室页面。

1{
2 "options": {
3 "downloadBase": "/var/lib/mongodb-mms-automation",
4 },
5 "mongoDbVersions": [],
6 "monitoringVersions": [],
7 "backupVersions": [],
8 "processes": [],
9 "replicaSets": [],
10 "sharding": []
11}
3

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

1"monitoringVersions": [
2 {
3 "hostname": "<server_x.example.com>",
4 "logPath": "/var/log/mongodb-mms-automation/monitoring-agent.log",
5 "logRotate": {
6 "sizeThresholdMB": 1000,
7 "timeThresholdHrs": 24
8 }
9 }
10]

此配置示例还包括指定日志位置的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 设置和自动化支持。

1"processes": [
2 {
3 "version": "4.0.6",
4 "name": "<process_name_1>",
5 "hostname": "<server1.example.com>",
6 "logRotate": {
7 "sizeThresholdMB": 1000,
8 "timeThresholdHrs": 24
9 },
10 "authSchemaVersion": 5,
11 "featureCompatibilityVersion": "4.0",
12 "processType": "mongod",
13 "args2_6": {
14 "net": {
15 "port": 27017
16 },
17 "storage": {
18 "dbPath": "/data/"
19 },
20 "systemLog": {
21 "path": "/data/mongodb.log",
22 "destination": "file"
23 },
24 "replication": {
25 "replSetName": "rs1"
26 }
27 }
28 },
29]
5

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

例子

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

重要

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

1"replicaSets": [
2 {
3 "_id": "rs1",
4 "members": [
5 {
6 "_id": 0,
7 "host": "<process_name_1>",
8 "priority": 1,
9 "votes": 1,
10 "secondaryDelaySecs": 0,
11 "hidden": false,
12 "arbiterOnly": false
13 }
14 ],
15 "protocolVersion": 1
16 }
17]

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

1"sharding": [
2 {
3 "shards": [
4 {
5 "tags": [],
6 "_id": "shard1",
7 "rs": "rs1"
8 },
9 {
10 "tags": [],
11 "_id": "shard2",
12 "rs": "rs2"
13 }
14 ],
15 "name": "sharded_cluster_via_api",
16 "configServerReplica": "rs-config",
17 "collections": []
18 }
19]
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命令返回一个JSON对象,其中包含processes数组以及goalVersion键和值。 processes数组包含托管 MongoDB 实例的每个服务器的文档。 当processes数组中的所有lastGoalVersionAchieved字段等于为goalVersion指定的值时,即成功部署新配置。

例子

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

1{
2 "goalVersion": 2,
3 "processes": [{
4 "hostname": "server1.example.com",
5 "lastGoalVersionAchieved": 2,
6 "name": "ReplSet_0",
7 "plan": []
8 }, {
9 "hostname": "server2.example.com",
10 "lastGoalVersionAchieved": 2,
11 "name": "ReplSet_1",
12 "plan": []
13 }, {
14 "hostname": "server3.example.com",
15 "lastGoalVersionAchieved": 1,
16 "name": "ReplSet_2",
17 "plan":[]
18 }]
19}

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

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

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

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

    3. 如果 Deployment(数据库部署)页面尚未出现,请单击侧边栏中的 Deployment(数据库)。

      显示“部署”页面。

  2. 查看新配置。

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

后退

Tutorials