Ops Manager可以在托管部署中轮换 TLS 证书,而无需重新启动MongoDB进程。当您递增自动化配置中的 certificatesVersion字段时, MongoDB 助手会在每个符合条件的进程上运行 db.adminCommand({ rotateCertificates: 1 }),因此客户端连接在整个操作过程中保持不间断。
资格
MongoDB Agent 仅对符合以下所有要求的进程应用零停机轮换:
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 或 | 在 MongoDB Ops Manager 用户界面中不可选择。自动化 API 拒绝配置更新,并报告 HTTP 400 错误。 |
TLS 路径更改与轮换同时发生 | 滚动重启处理路径更改。MongoDB Ops Manager 将轮换记录为已完成。 |
重要
零停机时间轮换要求部署中的所有进程都符合资格要求。如果任何进程不符合资格,请使用现有方法:导航到 Deployment、Security、Settings、TLS Settings,更新证书路径,并通过 Review and Deploy trigger 滚动重启。
先决条件
在旋转证书之前,请验证以下内容:
您的部署由 MongoDB Ops Manager 自动化管理。
已在部署中启用 TLS。
您的新 TLS 证书有效,并在原始配置路径上正确覆盖。
轮换 TLS 证书
使用自动化 API 或 MongoDB Ops Manager 用户界面 trigger 证书轮换。
重要
您无法通过用户界面或 API 将 certificatesVersion 恢复到上一个值。MongoDB Ops Manager 只允许此值增加。
使用自动化 API
要使用自动化 API 旋转证书,请检索当前自动化配置,增加 certificatesVersion,并上传更新的配置。
递增 certificatesVersion字段。
在 processes 数组中,找到要旋转的每个进程的对象。将 certificatesVersion 整数增加 1。如果字段不存在,请添加字段并将其设置为 1。
要 trigger 原位旋转,请将值设置为大于当前发布值的值。相等值不会 trigger 旋转。MongoDB Ops Manager 会拒绝 HTTP 400 INVALID_AUTOMATION_CONFIG 的减量。有关字段验证规则,请参阅 MongoDB 进程。
使用 MongoDB Ops Manager 用户界面
要使用 Ops Manager 用户界面轮换证书,请导航到项目的 TLS 设置,然后选择要轮换的部署。
旋转状态和持久性
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 })。