笑看天下无敌手 发表于 2023-11-7 00:19:18

轻松掌握组件启动之MongoDB(下):高可用复制集架构环境搭建

引言

上一章节中,我们详细介绍了在典型的三节点复制集环境中搭建MongoDB的步骤和注意事项。从准备配置文件到启动MongoDB进程,我们一步步指导读者完成了环境的设置。在本章节中,我们将进一步深入,重点讲解如何进行复制集的配置和安全验证,以及连接方式的选择。通过学习这些内容,读者将能够更好地理解和应用MongoDB的复制集功能,确保数据的可靠性和安全性。
配置复制集

在复制集中,可以通过使用replSetInitiate命令或mongo shell的rs.initiate()方法来进行初始化。一旦初始化完成,各个成员之间会开始发送心跳消息,并进行Primary选举操作。在此过程中,节点需要获得足够多成员的投票支持,才能成为Primary节点,而其他节点则会成为Secondary节点。
方法1:
#mongo ‐‐port 28017
# 初始化复制集
> rs.initiate()
# 将其余成员添加到复制集
> rs.add("192.168.65.174:28018")
> rs.add("192.168.65.174:28019")方法2:
# mongo ‐‐port 28017
# 初始化复制集
> rs.initiate({
_id: "rs0",
members: [{
_id: 0,host: "192.168.65.174:28017"
},{
_id: 1,host: "192.168.65.174:28018"
},{
_id: 2,host: "192.168.65.174:28019"
}]
})验证

MongoDB 主节点进行写入
# mongo ‐‐port 28017
rs0:PRIMARY> db.user.insert([{name:"xiaoyu"},{name:"monkey"}])MongoDB 从节点进行读
# mongo ‐‐port 28018
# 指定从节点可读
rs0:SECONDARY> rs.secondaryOk()
rs0:SECONDARY> db.user.find()复制集状态查询

查看最新复制集整体状态:
rs.status()
在复制集中,可以查看各成员的当前状态,以了解它们是否健康、是否在进行全量同步、心跳信息、增量同步信息、选举信息以及上一次的心跳时间等。通过这些信息,您可以监控和评估复制集的运行状况。
https://img2023.cnblogs.com/blog/1423484/202310/1423484-20231004214739603-130401153.png
在复制集中,通过查看"members"字段,可以获得关于所有成员的状态信息。这些信息可以帮助我们判断成员的健康状况,了解它们是否在进行全量同步,以及其他相关信息。下面是一些主要的状态字段的解释:

[*]health:表示成员是否健康,这是通过心跳检测来确定的。
[*]state/stateStr:表示成员的状态。如果成员是主节点,则状态为PRIMARY;如果成员是备用节点,则状态为SECONDARY。当节点发生故障时,可能会出现一些其他的状态,例如RECOVERY。
[*]uptime:表示成员的启动时间,即成员运行的时间。
[*]optime/optimeDate:表示成员最后一次同步oplog的时间。oplog是MongoDB中的操作日志,用于在复制集中同步数据变更。
[*]optimeDurable/optimeDurableDate:表示成员最后一次同步oplog的时间,这个时间是持久的,即该时间点之前的所有数据变更已经被持久化到磁盘上。
[*]pingMs:表示成员与当前节点之间的ping时延,即网络延迟。
[*]syncingTo:表示成员正在从哪个节点进行同步操作,即同步来源。
查看当前节点角色:
db.isMaster()
除了当前节点的角色信息,你可以通过发送一个特定的命令来获取更详细的信息,包括整个复制集的成员列表、真正的主节点(Primary)是谁以及与复制集相关的协议配置信息等。Driver 在首次连接复制集时会发送该命令。
Mongo Shell复制集命令
命令描述rs.add()为复制集新增节点rs.addArb()为复制集新增一个 arbiterrs.conf()返回复制集配置信息rs.freeze()防止当前节点在一段时间内选举成为主节点rs.help()返回 replica set 的命令帮助rs.initiate()初始化一个新的复制集rs.printReplicationInfo()以主节点的视角返回复制的状态报告rs.printSecondaryReplicationInfo()以从节点的视角返回复制状态报告rs.reconfig()通过重新应用复制集配置来为复制集更新配置rs.remove()从复制集中移除一个节点rs.secondaryOk()为当前的连接设置 从节点可读rs.status()返回复制集状态信息。rs.stepDown()让当前的 primary 变为从节点并触发 electionrs.syncFrom()设置复制集节点从哪个节点处同步数据,将会覆盖默认选取逻辑安全认证

创建用户

在主节点服务器上,启动mongo
use admin
#创建用户
db.createUser( {
user: "xiaoyu",
pwd: "xiaoyu",
roles: [ { role: "clusterAdmin", db: "admin" } ,
{ role: "userAdminAnyDatabase", db: "admin"},
{ role: "userAdminAnyDatabase", db: "admin"},
{ role: "readWriteAnyDatabase", db: "admin"}]
})https://img2023.cnblogs.com/blog/1423484/202310/1423484-20231004214750269-1896227399.png
创建keyFile文件

KeyFile文件在MongoDB集群中的作用是提供安全认证机制。它用于在集群节点之间进行身份验证,以增加集群的安全性。(开启keyfile认证就默认开启了auth认证了)。
#mongo.key采用随机算法生成,用作节点内部通信的密钥文件。
openssl rand ‐base64 756 > /data/mongo.key
#权限必须是600
chmod 600 /data/mongo.key在进行复制集的初始化之前,请确保先停止所有主从节点上的mongod服务。然后,创建一个名为keyFile的文件,并将其拷贝到复制集的其他从节点服务器上。在复制集的每个从节点上,将keyFile文件的路径地址配置到mongo.conf配置文件中的keyFile字段,并设置keyFile文件的权限为600。最后,启动mongod服务。这样做的目的是为了确保keyFile文件能够被所有节点正确访问,并提供必要的安全认证机制。
# 启动mongod
mongod ‐f /data/db1/mongod.conf ‐‐keyFile /data/mongo.key
mongod ‐f /data/db2/mongod.conf ‐‐keyFile /data/mongo.key
mongod ‐f /data/db3/mongod.conf ‐‐keyFile /data/mongo.key测试

1 #进入主节点
2 mongo ‐‐port 28017https://img2023.cnblogs.com/blog/1423484/202310/1423484-20231004214757912-820761318.png
1 #进入主节点
2 mongo ‐‐port 28017 ‐uxiaoyu ‐pxiaoyu ‐‐authenticationDatabase=admin复制集连接方式

方式一:在连接复制集时直接连接到主节点(Primary),并且在正常情况下可以进行读写操作,但一旦主节点发生故障切换,你无法正常访问数据库,
https://img2023.cnblogs.com/blog/1423484/202310/1423484-20231004214806053-2004682305.png
方式二(强烈推荐):通过使用高可用URI连接到MongoDB,当主节点发生故障切换时,MongoDB驱动程序可以自动感知并将流量路由到新的主节点。这种方式可以提供更高的可用性和自动故障转移。
https://img2023.cnblogs.com/blog/1423484/202310/1423484-20231004214810755-379397103.png
springboot操作复制集配置
spring:
   data:
   mongodb:
   uri:
    mongodb://xiaoyu:xiaoyu@192.168.65.174:28017,192.168.65.174:28018,192.168.65.174:28019/test?authSource=admin&replicaSet=rs0总结

本章介绍了MongoDB复制集的配置和使用方法。首先,我们学习了如何初始化和添加节点到复制集,并验证了主节点的写入和从节点的读取功能。然后,我们了解了如何查询复制集的状态,包括成员的健康状况、同步信息和角色等。最后,我们介绍了如何配置复制集的安全认证,包括创建用户和生成keyFile文件,并演示了使用认证信息连接复制集的方式。通过本章的学习,你将掌握MongoDB复制集的基本使用和配置方法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 轻松掌握组件启动之MongoDB(下):高可用复制集架构环境搭建