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

这篇具有很好参考价值的文章主要介绍了轻松掌握组件启动之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()

在复制集中,可以查看各成员的当前状态,以了解它们是否健康、是否在进行全量同步、心跳信息、增量同步信息、选举信息以及上一次的心跳时间等。通过这些信息,您可以监控和评估复制集的运行状况。

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

在复制集中,通过查看"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() 为复制集新增一个 arbiter
rs.conf() 返回复制集配置信息
rs.freeze() 防止当前节点在一段时间内选举成为主节点
rs.help() 返回 replica set 的命令帮助
rs.initiate() 初始化一个新的复制集
rs.printReplicationInfo() 以主节点的视角返回复制的状态报告
rs.printSecondaryReplicationInfo() 以从节点的视角返回复制状态报告
rs.reconfig() 通过重新应用复制集配置来为复制集更新配置
rs.remove() 从复制集中移除一个节点
rs.secondaryOk() 为当前的连接设置 从节点可读
rs.status() 返回复制集状态信息。
rs.stepDown() 让当前的 primary 变为从节点并触发 election
rs.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"}]
 })

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

创建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 28017

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

1 #进入主节点
2 mongo ‐‐port 28017 ‐uxiaoyu ‐pxiaoyu ‐‐authenticationDatabase=admin

复制集连接方式

方式一:在连接复制集时直接连接到主节点(Primary),并且在正常情况下可以进行读写操作,但一旦主节点发生故障切换,你无法正常访问数据库,

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

方式二(强烈推荐):通过使用高可用URI连接到MongoDB,当主节点发生故障切换时,MongoDB驱动程序可以自动感知并将流量路由到新的主节点。这种方式可以提供更高的可用性和自动故障转移。

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

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复制集的基本使用和配置方法。文章来源地址https://www.toymoban.com/news/detail-710794.html

到了这里,关于轻松掌握组件启动之MongoDB(下):高可用复制集架构环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL高可用解决方案――从主从复制到InnoDB Cluster架构

    2024送书福利正式起航 关注「哪吒编程」,提升Java技能 文末送5本《MySQL高可用解决方案――从主从复制到InnoDB Cluster架构》 大家好,我是哪吒。 爱奇艺每天都为数以亿计的用户提供7x24小时不间断的视频服务。通过爱奇艺的平台,用户可以方便地获取海量、优质、高清的视频

    2024年04月16日
    浏览(35)
  • MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构

    💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 当谈论MySQL高可用性解决方案时,从最初的主从复制到现代的InnoDB Cluster架构经历了长足的演进。这些解决

    2024年02月03日
    浏览(45)
  • MySQL生产环境高可用架构详解

           随着现在互联网的应用越来越大,数据库会频繁的成为整个应用的性能瓶颈。而 我们经常使用的MySQL数据库,也会不断面临数据量太大、数据访问太频繁、数据 读写速度太快等一系列的问题。所以,我们需要设计复杂的应用架构来保护孱弱的 数据库,例如添加Redis缓

    2024年02月10日
    浏览(47)
  • 一篇文章掌握负载均衡Ribbon作用和架构以及核心组件

    目录 1、Ribbon是什么 2、Ribbon的作用 1.集中式LB 2.进程式LB 3、Ribbon负载均衡架构 总结: 4、Ribbon核心组件IRule Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端负载均衡的工具 。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是 提供客户端的软件负载均衡算法,将 NetFl

    2024年01月19日
    浏览(52)
  • 【软件开发/设计】分布式架构中的组件(如Kafka、MongoDB和Nginx)如何进行容器化部署

    容器化部署是将应用程序及其依赖打包成一个容器镜像,然后在任何支持容器的环境中运行这个镜像的过程。在分布式架构中,像Nginx、MongoDB、Kafka这样的组件通过容器化可以更易于部署、扩展和管理。以下是这些组件容器化部署的一般步骤和原理: 容器化部署的一般步骤

    2024年02月04日
    浏览(49)
  • rabbitmq第四课-RabbitMQ高可用集群架构详解以及生产环境最佳实践

    之前通过单机环境搭建起来的RabbitMQ服务有一个致命的问题,那就是服务不稳定的问题。如果只是单机RabbitMQ的服务崩溃了,那还好,大不了重启下服务就是了。 但是如果是服务器的磁盘出问题了,那问题就大了。因为消息都是存储在Queue里的,Queue坏了,意味着消息就丢失了

    2024年02月11日
    浏览(48)
  • 【微服务笔记16】微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建

    这篇文章,主要介绍微服务组件之Gateway服务网关基础环境搭建、高可用网关环境搭建。 目录 一、Gateway服务网关 1.1、什么是Gateway 1.2、Gateway基础环境搭建 (1)基础环境介绍 (2)引入依赖 (3)添加路由配置信息 (4)运行测试 1.3、Gateway三个核心概念 1.4、Gateway配置信息 (

    2024年02月07日
    浏览(50)
  • 《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(56)
  • 大数据组件-Flume集群环境的启动与验证

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi@ 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持学习~💓💓 上一篇文章写到了Flume集群环境的安装,这篇文章接着上篇文章延伸Flume集群环境的启动与验证,如果

    2024年02月10日
    浏览(47)
  • MongoDB复制集集群部署及管理

    简述: MongoDB是由C++语言编写一个基于 分布式 文件存储的开源NoSQL数据库系统。在高负载的情况下,可添加更多的节点(实例),以保证服务性能。在许多场景下用于代替传统的关系型数据库或键/值存储方式。旨在为Web应用提供可扩展的高性能数据存储解决方案。 MongoDB提供

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包