主页 > 互联网  > 

CentOS7.8安装MongoDB7副本集(ReplicaSet)

CentOS7.8安装MongoDB7副本集(ReplicaSet)

文章目录 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: rs0

rs0是副本集的名字,你可以根据需要修改。

开放端口

确保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)