将自托管 mongod 单实例转换为复制集
A独立 mongod
实例适用于测试和开发。独立实例不适合生产部署,因为它可能是一个故障点。一个 副本集,也称为 集群,提供了冗余和可用性。在 production 中始终使用副本集。
如果您有一个包含要在 production 中使用的数据的独立服务器,请首先将独立服务器转换为副本集。
重要
如果您将开发服务器转换为用于 production 的副本集,在将您的集群暴露给互联网之前,请参阅 安全清单。
您可以从独立服务器轻松迁移到MongoDB Atlas 集群。MongoDB Atlas 是云中 MongoDB 部署的完全托管服务。要了解更多信息,请参阅 MongoDB Atlas 文档中的 迁移或导入数据。
在开始之前
集群类型
在将您的独立实例转换为之前,请考虑是否需要一个 副本集 或一个 分片集群 更适合您的负载。
分片集群是一种特殊类型的集群。分片集群提供冗余和可用性;它还将数据分布在分片上。分片通常托管在多个服务器上,并允许进行水平扩展。
授权
要使用授权与副本集,还必须配置副本集成员使用X.509证书或密钥文件来执行内部身份验证。
有关更多信息,请参阅
步骤
关闭独立实例。
使用mongosh
连接到您的mongod
实例。
mongosh
切换到admin
数据库并运行shutdown
。
use admin db.adminCommand( { shutdown: 1, comment: "Convert to cluster" } )
配置副本集成员
在每个服务器上更新配置文件,并设置replSetName
设置。
replication: replSetName: "rs0"
配置成员身份验证
为副本集中的每个服务器配置成员身份验证。
配置副本集以使用 X.509 证书进行内部成员身份验证。
设置 | 选项 | 描述 |
---|---|---|
设置用于身份验证的 TLS 模式。要将服务器配置为需要 X.509 证书身份验证,将此选项设置为 requireTLS 。 | ||
设置包含 TLS 证书的 .pem 文件的路径,该证书用于客户端连接。 | ||
设置包含证书颁发机构 (CA) 根证书链的文件的路径。 | ||
设置包含集群成员连接 TLS 证书的 .pem 文件的路径。 | ||
设置用于身份验证集群成员的模式。要使用 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()
。