文档菜单
文档首页
/
MongoDB 手册
/ / / /

旋转自管理复制集的密钥

复制集成员可以使用密钥文件来相互验证作为同一部署的成员。

一个密钥文件可以包含多个密钥,如果成员之间至少有一个密钥是相同的,则建立成员身份验证。这允许在不停机的情况下滚动更新密钥。

以下教程逐步说明了更新复制集密钥的过程,无需停机。[1]

警告

本教程中的示例密钥仅用于说明目的。请请不要用于您的部署。相反,使用您选择的方法(例如,openssl rand -base64 756等)生成密钥文件。

考虑一个副本集,其中每个成员的密钥文件包含以下密钥

Image of current key to replace.

以下过程用于将副本集成员更新为使用新密钥

Image of new key.
[1] 本教程不适用于用于密钥文件MongoDB的加密存储引擎本地密钥管理。该密钥文件只能包含一个密钥。

修改每个成员的密钥文件以包含旧密钥和新密钥。您可以指定多个密钥,可以是字符串(用引号括起来)或密钥序列。

警告

本教程中的示例密钥仅用于说明目的。请不要用于您的部署。相反,使用您选择的方法(例如,openssl rand -base64 756等)生成密钥文件。

您可以将多个密钥字符串作为密钥字符串序列指定(可选地用单引号或双引号括起来)。

Image of multiple key string sequence.

当所有密钥文件都包含旧密钥和新密钥后,逐个重启每个成员。

对于每个次要成员,连接到mongosh 成员并

  1. 使用 db.shutdownServer() 方法关闭成员

    use admin
    db.shutdownServer()
  2. 重启成员。

对于主成员,连接到 mongosh 成员并

  1. 使用 rs.stepDown() 使成员降级

    rs.stepDown()
  2. 使用 db.shutdownServer() 方法关闭成员

    use admin
    db.shutdownServer()
  3. 重启成员。

由于密钥文件包含旧密钥和新密钥,现在所有成员都可以接受任一密钥进行成员身份验证。

警告

本教程中的示例密钥仅用于说明目的。请不要用于您的部署。相反,使用您选择的方法(例如,openssl rand -base64 756等)生成密钥文件。

修改每个成员的密钥文件,仅包含新密码。

Image of new key.

当所有密钥文件仅包含新密钥时,逐个重启每个成员。

对于每个次要成员,连接到 mongosh 成员并

  1. 使用 db.shutdownServer() 方法关闭成员

    use admin
    db.shutdownServer()
  2. 重启成员。

对于主成员,连接到 mongosh 成员并

  1. 使用 rs.stepDown() 使成员降级

    rs.stepDown()
  2. 使用 db.shutdownServer() 方法关闭成员

    use admin
    db.shutdownServer()
  3. 重启成员。

现在所有成员仅接受新密钥进行成员身份验证。

返回

无停机更新分片集群