将独立运行的自管理 mongod 转换为副本集
独立 mongod
实例对于测试和开发非常有用。独立运行实例不是生产部署的良好选择,因为它可能出现单点故障。副本集(也称为集群)提供冗余和可用性。始终在生产中使用副本集。
如果您有一台独立服务器,并且其中包含要在生产中使用的数据,请先将该独立服务器转换为副本集。
重要
如果将开发服务器转换为副本集供生产使用,那么在向互联网公开集群之前,请先查阅安全检查清单。
您可以轻松地从独立服务器迁移到 MongoDB Atlas集群。 MongoDB Atlas 是针对云中 MongoDB 部署的完全托管服务。要了解更多信息,请参阅 MongoDB Atlas 文档中的迁移或导入数据。
开始之前
集群类型
在转换独立实例之前,请考虑是副本集还是分片集群更适合于您的工作负载。
分片集群是一种特殊的集群。分片集群提供冗余性和可用性;它还可以跨分片分发数据。分片通常托管在多个服务器上,并允许水平扩展。
授权
要对副本集使用授权,还必须将副本集节点配置为使用 X. 509证书或密钥文件来执行内部身份验证。
有关更多信息,请参阅:
步骤
配置副本集成员
更新每台服务器上的配置文件并进行replSetName
设置。
replication: replSetName: "rs0"
配置成员身份验证
为副本集中的每台服务器配置成员身份验证。
配置副本集以使用 X. 509证书进行内部成员身份验证。
设置 | 选项 | 说明 |
---|---|---|
设置要在身份验证中使用的 TLS 模式。要将服务器配置为需要 X. 509证书身份验证,请将此选项设置为 requireTLS 。 | ||
设置 .pem 文件的路径,该文件包含用于客户端连接的 TLS 证书。 | ||
设置包含证书颁发机构 (CA) 根证书链的文件的路径。 | ||
设置 .pem 文件的路径,该文件包含用于集群成员连接的 TLS 证书。 | ||
设置用于对集群成员进行身份验证的模式。要使用 X. 509身份验证,请将此选项设置为 x509 。 |
例如:
replication: replSetName: "rs0" security: clusterAuthMode: x509 net: tls: mode: requireTLS certificateKeyFile: /etc/mongodb/client.pem CAFile: /etc/mongodb/ca.pem clusterFile: /etc/mongodb/member.pem
配置副本集以使用密钥文件进行内部成员身份验证。要进行身份验证,每个成员都必须拥有相同密钥文件的副本。
设置 | 选项 | 说明 |
---|---|---|
设置副本集密钥文件的路径。 |
例如:
replication: replSetName: "rs0" security: keyFile: /etc/mongodb/keyfile
未经授权配置副本集。
警告
您应该只对无法通过网络访问的内部副本集使用此配置。
设置 | 选项 | 说明 |
---|---|---|
设置 MongoDB 侦听客户端连接的主机名或 IP 地址。要阻止对服务器的网络访问,请将此选项设置为 localhost 。 |
例如:
replication: replSetName: "rs0" net: bindIp: localhost
启动 MongoDB
为每个成员启动mongod
。
初始化副本集。
要初始化副本集,请使用 mongosh
重新连接到服务器实例。然后运行 rs.initiate()
。
rs.initiate()
您只需启动副本集一次。
要查看副本集配置,请使用rs.conf()
。
要查看副本集的状态,请使用 rs.status()
。
更新应用程序连接字符串。
将 mongod 转换为副本集后,将应用程序使用的连接字符串更新为副本集的连接字符串。然后,重新启动您的应用程序。