Ops Manager可以在托管部署中轮换 TLS 证书,而无需重新启动MongoDB进程。当您递增自动化配置中的certificatesVersion 字段时, MongoDB 助手会在每个符合条件的进程上运行db.adminCommand({ rotateCertificates: 1 }) ,因此客户端连接在整个操作过程中保持不间断。
资格
MongoDB 助手仅对满足以下所有要求的进程应用零停机轮换:
MongoDB版本为 5.0 或更高版本。
已在进程上配置 TLS。
部署的所有成员均满足上述要求。
MongoDB 助手无法应用零停机轮换应用于以下任何类别的进程。在Ops Manager用户界面中,不符合条件的部署的复选框处于禁用状态。通过 Automation API, Ops Manager拒绝不符合条件的部署的配置更新,并显示HTTP 400 错误,解释了原因:
条件 | 行为 |
|---|---|
MongoDB版本早于 5.0 | 在Ops Manager用户界面中无法选择。 Automation API拒绝配置更新,并显示HTTP 400 错误。 |
未配置 TLS | 在Ops Manager用户界面中无法选择。 Automation API拒绝配置更新,并显示HTTP 400 错误。 |
BI Connector或 | 在Ops Manager用户界面中无法选择。 Automation API拒绝配置更新,并显示HTTP 400 错误。 |
TLS 路径更改与轮换同时发生 | 滚动重启可处理路径更改。 Ops Manager将轮换记录为已完成。 |
重要
零停机轮换要求部署中的所有进程都满足资格要求。如果任何进程不符合条件,请改用现有方法:导航到 Deployment、Security、Settings、TLS Settings,更新证书路径,并通过 Review and Deploy触发滚动重启。
先决条件
在轮换证书之前,请验证以下内容:
您的部署由Ops Manager自动化托管。
已在部署中启用 TLS。
新的 TLS 证书有效,并在原始配置路径中正确覆盖。
轮换 TLS 证书
使用自动化API或Ops Manager用户界面触发证书轮换。
重要
您无法通过用户界面或API将 certificatesVersion 恢复为之前的值。 Ops Manager仅允许增加此值。
使用自动化API
要使用自动化API轮换证书,检索当前的自动化配置,递增 certificatesVersion,然后上传更新的配置。
递增certificatesVersion 字段。
在 processes大量中,找到要轮换的每个进程的对象。将 certificatesVersion 整数递增 1。如果该字段不存在,请添加该字段并将其设立为 1。
要触发就地轮换,设立一个大于当前发布值的值。相等的值不会触发轮换。 Ops Manager使用HTTP 400 INVALID_AUTOMATION_CONFIG 拒绝递减。有关字段验证规则,请参阅MongoDB进程。
使用Ops Manager用户界面
要使用Ops Manager用户界面轮换证书,请导航到项目的 TLS 设置并选择要轮换的部署。
轮换状态和持久性
MongoDB 助手会保留每次轮换的结果,以便在代理重新启动时继续存在,并从中断处恢复。
每次自动化配置更新在一个或多个进程上轮换证书时, Ops Manager都会在项目的操作日志中记录一个 TLS_CERTIFICATES_ROTATED事件。使用此事件Atlas 审核证书轮换历史记录。
重试行为
如果 rotateCertificates 命令失败, MongoDB 助手将返回错误代码 128 (TlsCertificatesRotationErr)。 Ops Manager显示“TLS 证书轮换错误” ,并在下一个收敛标记上重新安排该步骤。更正磁盘上的证书文件以解决错误。
如果命令成功但MongoDB 助手无法保留结果,则会自动重试。
代理如何应用轮换
当MongoDB 助手在自动化配置中检测到递增的 certificatesVersion 时,它会根据资格要求检查每个符合条件的进程并运行 db.adminCommand({ rotateCertificates: 1 })。