分片集群成员可以使用密钥文件 对于彼此相同的部署的memers验证。
从4.2版开始,一个密钥文件可以包含多个密钥,并且如果成员之间至少有一个密钥,则将建立成员身份验证。这样就可以滚动升级密钥而无需停机。
以下教程逐步介绍了在不造成任何停机的情况下更新分片群集密钥的过程。[1]
警告
本教程中的示例键仅用于说明目的。请不要用你deployement。而是使用您选择的任何方法(例如等等)生成密钥文件。openssl rand -base64
756
考虑一个分片群集,其中每个成员的密钥文件都包含以下密钥:
以下过程更新分片群集成员以使用新密钥:
您可以将多个键字符串指定为键字符串序列(可选地用引号引起来):
一旦所有密钥文件都包含旧密钥和新密钥,就一次重新启动每个成员。
对于配置服务器副本集(CSRS)的每个辅助服务器,将mongo
外壳连接到该成员,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于主服务器,将mongo
外壳连接到成员,然后
用于rs.stepDown()
降低成员人数:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于分片副本集的每个辅助成员,将mongo
外壳连接
到该成员,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于每个分片副本集的主副本,将mongo
外壳连接
到成员,然后
用于rs.stepDown()
降低成员人数:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
mongos
路由器¶对于每个mongos / router实例,将一个mongo
外壳连接
到该mongos
实例,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
重新启动所有成员后,成员现在可以接受旧密钥或新密钥进行成员身份验证。
警告
本教程中的示例键仅用于说明目的。请不要用你deployement。而是使用您选择的任何方法(例如等等)生成密钥文件。openssl rand -base64
756
修改每个成员的密钥文件,使其仅包含新密码。
对于配置服务器副本集(CSRS)的每个辅助服务器,将mongo
外壳连接到该成员,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于主服务器,将mongo
外壳连接到成员,然后
用于rs.stepDown()
降低成员人数:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于分片副本集的每个辅助成员,将mongo
外壳连接
到该成员,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
对于每个分片副本集的主副本,将mongo
外壳连接
到成员,然后
用于rs.stepDown()
降低成员人数:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
mongos
路由器¶对于每个mongos / router实例,将一个mongo
外壳连接
到该mongos
实例,然后:
使用该db.shutdownServer()
方法关闭成员:
重新启动成员。
重新启动所有成员后,成员现在仅接受新密钥进行成员身份验证。