将 独立运行的实例 mongod 用于测试和开发。独立运行的实例不是生产部署的好选择,因为它可能会出现单点故障。副本集 提供冗余和可用性。请始终在生产中使用副本集。
如果您有一台独立服务器,并且其中包含要在生产中使用的数据,请先将该独立服务器转换为副本集。
重要
If you convert a development server to a replica set for production use, consult the security checklist first. Do this before you expose your cluster to the Internet.
You can migrate from a standalone server to a MongoDB Atlas cluster. MongoDB Atlas is the fully managed service for MongoDB deployments in the cloud. To learn more, see Migrate or Import Data in the MongoDB Atlas documentation.
关于此任务
服务器架构
本教程使用以下服务器:
主机名 | 端口 | 说明 |
|---|---|---|
|
| 运行的独立运行MongoDB Server,其中包含数据。 |
|
| 用于加入副本集的新MongoDB Server 。 |
|
| 用于加入副本集的新MongoDB Server 。 |
开始之前
集群类型
在转换独立实例之前,请考虑是副本集还是分片集群更适合于您的工作负载。
分片集群通过在分片之间分发数据来提供冗余性和可用性,分片通常托管在多个服务器上,以实现水平扩展。
授权
要对副本集使用授权,您还必须将副本集节点配置为使用 X.509 证书或密钥文件来执行内部身份验证。
有关更多信息,请参阅:
步骤
关闭独立运行实例。
Use mongosh to connect to your existing mongod instance:
mongosh "mongodb://mongodb0.example.net:27017"
切换到 admin 数据库并运行 shutdown。
use admin db.adminCommand( { shutdown: 1, comment: "Convert to replica set" } )
当您运行shutdown 命令时,服务器会使用类似于以下示例的消息进行响应:
MongoNetworkError: connection <connection number> to <host>:<port> closed
配置节点身份验证
为副本集中的每个服务器配置节点身份验证。
配置副本集以使用 X.509 证书进行内部节点身份验证。
设置 | 选项 | 说明 |
|---|---|---|
设置要在身份验证中使用的 TLS模式。要将服务器配置为要求 X.509 证书身份验证,请将此选项设置为 | ||
设置包含客户端连接 TLS 证书的 | ||
设置包含证书颁发机构 (CA) 根证书链的文件路径。 | ||
设置包含集群节点连接的 TLS 证书的 | ||
设置用于验证集群节点的模式。要使用 X.509 身份验证,请将此选项设置为 |
例如:
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地址。要阻止对服务器的网络访问,请将此选项设置为 |
例如:
replication: replSetName: "rs0" net: bindIp: localhost
启动 MongoDB。
为每个节点启动mongod 。
初始化副本集。
要初始化副本集,请使用 mongosh 重新连接到服务器实例。
mongosh "mongodb://mongodb0.example.net:27017"
然后,运行rs.initiate() 方法:
rs.initiate()
您只需启动副本集一次。
要查看副本集配置,请使用rs.conf()。
要查看副本集的状态,请使用 rs.status()。