Docs 菜单

自动化

Cloud Manager 自动化允许您使用 Cloud Manager 用户界面来部署、配置和托管 MongoDB 部署。Cloud Manager 自动化依赖于 MongoDB 代理,该代理必须安装在部署中的每台服务器上。MongoDB 代理会定期轮询 Cloud Manager 服务以确定当前目标,并不断向 Cloud Manager 报告其状态。

Cloud Manager 仅提供 MongoDB Agent 的 64 位下载。

  • 如果您手动部署自动化,请确保每台服务器上都有一个 MongoDB 助手。

  • 如果手动部署代理,则必须创建 MongoDB 的 dbPath 和 MongoDB 二进制文件的目录,并确保运行代理的用户拥有这些目录。

    如果您使用 rpm 包进行安装,助手以 mongod 用户身份运行;如果使用 deb 包,助手以 mongodb 用户身份运行。如果使用 tar.gz 压缩包文件进行安装,您可以作为任何用户运行助手。

所有主机必须能够允许 MongoDB 端口之间的通信。 默认值为27017 ,但您可以在 Cloud Manager 界面中配置备用端口范围。

MongoDB Agent 必须能够通过端口443 ( HTTPS ) 连接到cloud.mongodb.com 。有关访问端口和 IP 地址的更多信息,请参阅安全概述。

执行滚动更新时, MongoDB Agent会尝试避免停机。 它需要从集群的其他成员收集状态。 连接问题( mongodmongos之间),例如主机名解析或防火墙配置错误,可能会阻止MongoDB Agent确定远程进程状态并完成更改。

确保集群的所有成员都能相互通信:

  1. 对于非分片集群:

    1. 登录到每个mongod

    2. 从该mongod主机登录到副本集的所有其他节点。

  2. 对于分片集群:

    1. 登录到每个mongod

    2. 从该mongod主机登录该分片的所有其他节点。

    3. 登录到每个mongos

    4. 由此, mongos主机:

      1. 登录其他mongos主机。

      2. 登录到每个分片的所有其他节点。

MongoDB 助手每 10 秒从每个集群节点中收集状态,以确保环境处于预期状态。作为该评估的一部分,MongoDB Agent 创建一个连接,检查某些文件以确定状态,然后关闭该连接。这些频繁的短暂连接是 MongoDB 助手日常活动的一部分,应该不会影响性能。

在完成自动化配置后,确保部署计划满足您的部署需求。在确认部署之前,检查主机名和端口。

  • 确保为主机配置足够的空间来运行 MongoDB 并支持数据集的要求。

  • 确保您预配足够数量的主机来运行部署。 每个mongod都应在自己的主机上运行。

由于以下一个或多个原因,MongoDB 助手可能会经常出现连接超时:

  • 连接超时

  • 高网络延迟

  • 服务器负载过高

  • 大型 SSL 密钥

  • CPU 速度不足

默认情况下,连接在 40 秒后超时。MongoDB 建议逐渐增加 dialTimeoutSeconds MongoDB 助手配置设置值,以防止连接频繁地过早超时。不过,增加该值也会增加部署将来配置更改所需的时间。尝试小幅增加值,直到确定部署的最佳值。

要了解更多信息,请参阅 MongoDB 助手连接设置中的 dialTimeoutSeconds

在某些条件适用时,将出现一个显示 We have detected a potential problem while deploying...(我们在部署时检测到一个潜在问题...)横幅。以下是一些示例。

如果您已添加或重新启动部署,并且部署保持 In Progress(进行中)状态几分钟,则会显示该横幅。

此时,您有 4 个选择:

  1. 单击 View Diagnostics(连接)。

    View Diagnostics(查看诊断)模式窗口显示部署期间可能出现的任何错误。

  2. 单击 View Status(连接)。

    Automation Status模态显示部署进程、上次报告部署状态的时间、尝试完成的任务以及部署状态。 您可以通过以下方式筛选结果:

    • Filter processes搜索栏中输入主机名。

    • Process Type 下拉菜单中选择一个或多个流程类型。

    • Automation State 下拉菜单中选择一个或多个自动化状态。

    要了解关于任何单个进程状态的更多信息,您可以单击省略号图标并选择View DetailsView Agent Logs

    • View Details 显示该流程的部署计划是什么以及 MongoDB 助手当前处于该计划的哪个阶段。

    • View Agent Logs 打开新的浏览器窗口,其中显示 Deployment(部署)> Agents(助手)> Agent Logs(助手日志)屏幕,并且默认显示 MongoDB 助手日志内容。单击 View(查看)菜单以选择不同的助手日志。

  3. 单击 View Agent Logs(连接)。

    打开新的浏览器窗口,其中显示 Deployment > Agents > Agent Logs 屏幕,并且默认显示 MongoDB 助手日志内容。单击 View 菜单以选择不同的助手日志。

  4. 单击 Allow Override & Edit Configuration(连接)。

    如果诊断出错误并需要更正部署配置,请按照以下步骤编辑部署。

如果关闭部署后仍无法找到解决方案,请从 Cloud Manager中删除该部署

如果 MongoDB Agent 的自动化模块无法与 Cloud Manager API endpoint或 MongoDB Server 进程通信,Cloud Manager 会在项目中显示警告横幅。您可以通过以下两种方式之一解决此问题,具体取决于您是否希望 MongoDB 代理进行通信:

如果 MongoDB Agent 应与 Cloud Manager 主机或 MongoDB 实例通信,请为每个 MongoDB Agent 确认以下内容:

  1. 助手已在每台主机上启动并运行。

  2. 助手和Cloud Manager API端点可以通信。

如果 MongoDB 助手的自动化模块应与 Cloud Manager API endpoint或 MongoDB Server 进程通信,请为每个自动化 MongoDB Server 部署确认以下内容:

  1. 单击警告横幅中的 Allow Editing & Override Current Configuration 链接。

  2. 删除主机上运行的为不需要的 MongoDB 助手提供服务的所有进程mongodmongos )。

权限问题可能导致自动化功能无法完成更改。如果 View Status(查看状态)或 View Diagnostics(查看诊断)报告与权限相关的错误(例如 open /data/db/mongod.lock: permission denied ),请确保 MongoDB 助手用户拥有 dbpathlogpath 文件并具有它们的读写权限。

您可以使用控制台或 API 将过时、损坏或有问题的主机从自动化中移除。这可能包括无法访问 MongoDB 助手的情况。

要使用控制台删除有问题的主机,请执行以下操作:

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

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

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

    显示“部署”页面。

2

单击部署的Processes标签页。

显示“进程”页面。

3
  1. 找到有问题的主机。

  2. 单击 ,然后单击 Remove Server(移除服务器)。

    Cloud Manager 显示Are you sure you want to remove this server>模态。

  3. 如果要删除此服务器,请在 Enter the host name 字段中输入提供的主机名,然后单击 Remove

    警告

    当您点击Remove时,Cloud Manager 会删除该主机的所有监控数据。Cloud Manager 不会对此操作进行确认或取消。

    如果您不想删除服务器,请单击 Cancel

  4. 单击 Review & Deploy 查看您所做的更改。

    Cloud Manager 会显示您建议的更改。

    • 如果满意,请单击 Confirm & Deploy(确认和部署)。

      Cloud Manager 此时会删除所有进程和代理。

    • 如果要进一步更改配置,请单击Cancel

要使用 API 删除有问题的主机,请执行以下操作:

  1. 获取当前的自动化配置。

  2. 编辑自动化配置 JSON 文件。

  3. 进程副本集中删除过时的节点。

  4. 更新自动化配置文件。

  5. 等待几分钟。

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

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

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

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

      显示“部署”页面。

  7. 单击部署的Agents标签页。

    显示“代理”页面。

  8. 确认主机不再显示在助手列表中。

警告

11.11.0.7349-1 版本开始,MongoDB 助手要求TLS证书在“主题备用名称”字段中包含一个值。 在升级到MongoDB Agent 11.11.0.7355或更高版本之前,请确保 MongoDB 部署中使用的所有TLS证书都包含SAN[1]

[1] MongoDB使用MongoDB Agent Go语言编写了 。Go1.17 删除了使用 X.509 CommonName 字段作为主机名 的功能 当 SAN 不存在时。当客户端验证 TLS 证书时,客户端会根据证书的 SAN 或主题标识名 (DN) 字段中的值检查证书适用的主机名。在创建TLS证书时,有些人会使用主题公用名 (CN) 字段来存储主机名。 CN 有其局限性,因此不适合用来存储主机名。 这些限制包括64个字符的最大长度,并且不支持名称限制。 RFC2818 在 5 月弃用了使用 CN2000 存储主机名的方式。如果证书的SAN字段中没有值,该 RFC 会要求客户端回退到 CN。 RFC6125 删除了2011 .Go1 中的要求。15禁用对 RFC2818 的遵守 并使用 RFC6125 将 CN 设置为可选的做法。实际上,此更改要求您添加SAN值或启用 CNs.Go 1 。 17 删除了在不存在 SAN 的情况下使用 CN 的变通方法。在当前版本的MongoDB Agent 助手中,您 必须 使用 SAN 。要了解更多信息,请参阅 Fraser Tweedale 关于此主题的博文

如果您使用的是 Cloud Manager 版本 4.2 或版本 4.4.0 - 4.4.6、 将enableLocalConfigurationServer设置为true并重新启动 MongoDB 助手时,您可能会遇到错误。

该问题仅影响在创建后将 enableLocalConfigurationServer 设置为 true 的现有集群。如果在创建集群之前设置该值,则不会触发该问题。

要安全地更改现有集群的此设置,请执行以下操作:

  1. 在 MongoDB 助手配置文件末尾,添加:

    enableLocalConfigurationServer=true
  2. 关闭 MongoDB 助手管理的每个进程。

  3. 通过运行以下命令重新启动 MongoDB 助手:

    service mongodb-mms-automation-agent restart
  4. 重新启动已关闭的 MongoDB 进程。

  5. 验证automation-mongod.conf文件是否具有__rest扩展指令。

有关在内存中存储配置文件的更多信息,请参阅配置 MongoDB 助手管理配置文件和密码的方式