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

在不停机的情况下轮换 TLS 证书

Ops Manager可以在托管部署中轮换 TLS 证书,而无需重新启动MongoDB进程。当您递增自动化配置中的 certificatesVersion字段时, MongoDB 助手会在每个符合条件的进程上运行 db.adminCommand({ rotateCertificates: 1 }),因此客户端连接在整个操作过程中保持不间断。

MongoDB Agent 仅对符合以下所有要求的进程应用零停机轮换:

  • 进程类型为mongodmongos

  • MongoDB 版本为 5.0 或更高版本。

  • 已在进程上配置 TLS。

  • 部署的所有节点均符合上述要求。

MongoDB Agent 无法对以下任何类别中的进程应用零停机旋转。在 Ops Manager 用户界面 中,不合格部署的复选框处于禁用状态。通过自动化 API,Ops Manager 会拒绝不合格部署的配置更新,并返回 HTTP 400 错误,说明原因:

条件
行为

MongoDB 5.0 以前的版本

在 MongoDB Ops Manager 用户界面中不可选择。自动化 API 拒绝配置更新,并报告 HTTP 400 错误。

未配置 TLS

在 MongoDB Ops Manager 用户界面中不可选择。自动化 API 拒绝配置更新,并报告 HTTP 400 错误。

BI Connector 或 mongosqld

在 MongoDB Ops Manager 用户界面中不可选择。自动化 API 拒绝配置更新,并报告 HTTP 400 错误。

TLS 路径更改与轮换同时发生

滚动重启处理路径更改。MongoDB Ops Manager 将轮换记录为已完成。

重要

零停机时间轮换要求部署中的所有进程都符合资格要求。如果任何进程不符合资格,请使用现有方法:导航到 DeploymentSecuritySettingsTLS Settings,更新证书路径,并通过 Review and Deploy trigger 滚动重启。

在旋转证书之前,请验证以下内容:

  • 您的部署由 MongoDB Ops Manager 自动化管理。

  • mongod部署中的所有mongos 和 进程运行MongoDB.5 0或更高版本。

  • 已在部署中启用 TLS。

  • 您的新 TLS 证书有效,并在原始配置路径上正确覆盖。

使用自动化 API 或 MongoDB Ops Manager 用户界面 trigger 证书轮换。

重要

您无法通过用户界面或 API 将 certificatesVersion 恢复到上一个值。MongoDB Ops Manager 只允许此值增加。

要使用自动化 API 旋转证书,请检索当前自动化配置,增加 certificatesVersion,并上传更新的配置。

1

向自动化配置终结点发送 GET 请求:

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \
--digest \
--header "Accept: application/json" \
--request GET \
"https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"

将响应主体保存到本地文件,例如 automation-config.json

2

processes 数组中,找到要旋转的每个进程的对象。将 certificatesVersion 整数增加 1。如果字段不存在,请添加字段并将其设置为 1

要 trigger 原位旋转,请将值设置为大于当前发布值的值。相等值不会 trigger 旋转。MongoDB Ops Manager 会拒绝 HTTP 400 INVALID_AUTOMATION_CONFIG 的减量。有关字段验证规则,请参阅 MongoDB 进程。

3

发送带有修改配置的 PUT 请求:

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" \
--digest \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--request PUT \
--data @automation-config.json \
"https://<OpsManagerHost>/api/public/v1.0/groups/{GROUP-ID}/automationConfig"
4

在 Ops Manager 用户界面中,单击 Deployment,然后单击 Processes。等待状态指示器显示所有进程均已进行了收敛。MongoDB Agent 将旋转应用于每个符合条件的进程,并记录结果。

要使用 Ops Manager 用户界面轮换证书,请导航到项目的 TLS 设置,然后选择要轮换的部署。

1

单击 DeploymentSecuritySettings,然后单击 TLS Settings

2

单击 Edit,然后单击 Rotate Certificates。该表列出了项目中的所有部署项。不合格的项目已禁用,并在鼠标悬停时显示原因。

3

选择一个或多个符合条件的部署项,然后确认操作。

4

等待所有进程达到目标状态。随着 MongoDB Agent 将轮换应用于每个符合条件的进程,MongoDB Ops Manager 自动化状态面板中的状态指示器会进行更新。

MongoDB Agent 会持久保存每次旋转的结果,以便在代理重启后仍可从上次停止的位置继续执行。

每当自动化配置更新在一个或多个进程上轮换证书时,MongoDB Ops Manager 都会在项目的操作日志中记录 TLS_CERTIFICATES_ROTATED 事件。使用此事件Atlas 审核证书轮换历史。

如果 rotateCertificates 命令失败,MongoDB Agent 将返回错误代码 128 (TlsCertificatesRotationErr)。Ops Manager 在自动化状态面板中显示“TLS 证书轮换错误”,并在下一个收敛时钟重新调度该步骤。修正磁盘上的证书文件以解决错误。

如果命令成功,但 MongoDB Agent 无法保留结果,它会自动重试。

当 MongoDB Agent 检测到自动化配置中的 certificatesVersion 增量时,会检查每个符合条件的进程是否符合资格要求,并运行 db.adminCommand({ rotateCertificates: 1 })