CentOS7.8安装MongoDB7副本集(ReplicaSet)
- 互联网
- 2025-09-03 12:03:01

文章目录 1 环境假设步骤1:在两台服务器上安装MongoDB步骤2:配置副本集步骤3:初始化副本集步骤4:验证副本集配置步骤5:设置安全性(可选)扩展配置示例:最佳实践:仲裁节点步骤1:在一台服务器上安装MongoDB(仲裁节点)步骤2:将仲裁节点加入副本集步骤3:验证仲裁节点的功能总结 1 环境假设 服务器1:server1(IP: 192.168.1.100)服务器2:server2(IP: 192.168.1.101)MongoDB版本:4.x(可以根据需要选择其他版本) 步骤1:在两台服务器上安装MongoDB
配置YUM源
在每台服务器上添加MongoDB的YUM源。编辑/etc/yum.repos.d/mongodb.repo文件,内容如下:
[mongodb-org-7.0] name=MongoDB Repository baseurl= repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/ gpgcheck=1 enabled=1 gpgkey= .mongodb.org/static/pgp/server-7.0.asc如果是其他Linux发行版,请根据系统版本选择合适的源。
安装MongoDB
安装MongoDB的相关包:
sudo yum install -y mongodb-org启动MongoDB服务
启动MongoDB服务并设置为开机启动:
sudo systemctl start mongod sudo systemctl enable mongod验证安装
使用以下命令检查MongoDB是否正常运行:
sudo systemctl status mongod或使用mongo客户端连接到MongoDB实例,确认是否可以连接。
步骤2:配置副本集配置mongod.conf
在每台服务器上编辑MongoDB的配置文件/etc/mongod.conf,启用副本集配置。修改如下:
replication: replSetName: rs0rs0是副本集的名字,你可以根据需要修改。
开放端口
确保MongoDB端口(默认是27017)在防火墙中开放。你可以使用以下命令来开放该端口:
sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent sudo firewall-cmd --reload启动MongoDB
启动或重新启动MongoDB使配置生效:
sudo systemctl restart mongod检查MongoDB日志
检查mongod日志(/var/log/mongodb/mongod.log)确认是否有错误。
步骤3:初始化副本集连接到MongoDB实例
在server1上,使用mongo客户端连接到MongoDB:
mongo --host 192.168.1.100初始化副本集
在MongoDB shell中运行以下命令来初始化副本集:
rs.initiate()你应该会看到类似以下输出:
{ "info2" : "no configuration has been given yet", "me" : "192.168.1.100:27017", "ok" : 1 }添加副本集成员
之后,向副本集中添加第二台服务器server2:
rs.add("192.168.1.101:27017")运行以下命令检查副本集状态:
rs.status()如果一切正常,你应该会看到两个成员(server1和server2)都已经加入副本集。
步骤4:验证副本集配置查看副本集状态
使用以下命令查看副本集的状态,确保两个节点都在运行:
mongo --host 192.168.1.100在Mongo shell中运行:
rs.status()进行数据写入测试
在主节点上插入数据并检查是否同步到从节点:
use test db.testCollection.insert({name: "test"})你可以在从节点上验证该数据是否已同步。
步骤5:设置安全性(可选)为了确保MongoDB副本集的安全性,可以启用身份验证和加密。你可以在配置文件中启用auth选项并创建管理员用户。
编辑/etc/mongod.conf文件,添加:
security: authorization: "enabled"然后在主节点上创建管理员用户:
mongo --host 192.168.1.100 use admin db.createUser({ user: "admin", pwd: "adminpassword", roles: [{ role: "root", db: "admin" }] })这样,其他成员在加入副本集时需要提供管理员的用户名和密码。
扩展MongoDB副本集的最低配置需要 3台服务器。虽然可以在2台服务器上搭建副本集,但为了确保高可用性和避免“脑裂”(split-brain)问题,3台服务器是推荐的配置。
具体原因如下:
选举机制:MongoDB副本集需要一个“选举”机制来决定哪个节点作为主节点。如果只有2个节点,出现网络分区时,这两个节点可能无法达成一致,从而导致副本集无法正常工作。
高可用性:3个节点可以确保即使1个节点出现故障,副本集依然可以正常工作。在3个节点的配置中,如果其中1个节点宕机,另一个节点可以通过选举成为新的主节点,保证系统的高可用性。
仲裁节点:如果你有2个数据节点,可以增加一个仲裁节点(Arbiter),这个节点只参与选举,不保存数据。这样可以避免“脑裂”问题,同时仍然保持副本集的选举功能。仲裁节点不需要存储数据,只要保证选举时可以参与投票。
配置示例: 2个数据节点(primary 和 secondary)1个仲裁节点(arbiter)这样配置可以确保副本集有3个投票节点,但不需要额外的存储负担。
最佳实践: 3个数据节点 + 1个仲裁节点 是一个常见的高可用副本集配置。4个数据节点 可以提供更强的故障恢复能力,但通常会增加管理和维护的复杂性。总之,虽然最少可以配置2个节点,但为了确保高可用性和防止“脑裂”,建议使用3个节点。
仲裁节点是的,仲裁节点(Arbiter)在搭建过程中的配置与数据节点相似,但它有一些特别的配置,主要是为了参与副本集选举而不存储数据。以下是如何在MongoDB副本集中设置仲裁节点的步骤:
步骤1:在一台服务器上安装MongoDB(仲裁节点)你可以选择在已经有的服务器上安装MongoDB,或者在另一台新服务器上安装。这里假设你已经安装了MongoDB,并且副本集已经创建了2个数据节点。
安装MongoDB(如果尚未安装)
在仲裁节点服务器上,按照之前的步骤使用YUM安装MongoDB:
sudo yum install -y mongodb-org配置mongod.conf
在仲裁节点的MongoDB配置文件/etc/mongod.conf中,进行如下配置:
replication: replSetName: rs0 # 确保与副本集名称一致 security: authorization: "enabled" # 可选:启用认证启动MongoDB
启动MongoDB服务并设置为开机启动:
sudo systemctl start mongod sudo systemctl enable mongod检查MongoDB状态
确保MongoDB服务正常运行:
sudo systemctl status mongod 步骤2:将仲裁节点加入副本集连接到一个数据节点
使用mongo命令连接到你的主节点(假设主节点IP是192.168.1.100):
mongo --host 192.168.1.100添加仲裁节点
在Mongo shell中运行以下命令,将仲裁节点加入副本集:
rs.addArb("192.168.1.102:27017") // 假设仲裁节点的IP是192.168.1.102这样,MongoDB将会把192.168.1.102添加为仲裁节点。
验证副本集状态
运行以下命令检查副本集状态,确保仲裁节点已加入并且状态正常:
rs.status()在输出中,你应该会看到仲裁节点的状态类似于以下:
{ "host" : "192.168.1.102:27017", "arbiterOnly" : true, "stateStr" : "ARBITER", "state" : 7, "uptime" : 100 } 步骤3:验证仲裁节点的功能测试选举功能
你可以通过在主节点上停止mongod服务来模拟节点故障。然后检查副本集是否能自动选举新的主节点。如果有仲裁节点,副本集应该能够正常进行选举,保证系统的高可用性。
验证数据同步
仲裁节点不存储数据,它只是参与选举过程,因此你不需要验证数据同步。你只需要验证它是否正确参与选举并保持副本集的健康状态。
总结 仲裁节点的搭建和数据节点类似,唯一的区别是仲裁节点配置不存储数据,且配置文件中不需要启用数据存储的设置。使用rs.addArb()将仲裁节点添加到副本集中,不需要额外的数据同步过程。仲裁节点的作用是保证选举过程的顺利进行,确保即使在数据节点故障时,副本集仍然能够正常选举出新的主节点。对于测试环境,如果你有2个数据节点,可以使用1个仲裁节点来模拟高可用性,而不需要额外的数据存储。
CentOS7.8安装MongoDB7副本集(ReplicaSet)由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“CentOS7.8安装MongoDB7副本集(ReplicaSet)”