学习
实践
活动
工具
TVP
写文章
专栏首页卯金刀GG【MongoDB进阶】MongoDB高可用集群配置的几种方案

【MongoDB进阶】MongoDB高可用集群配置的几种方案

一、高可用集群的解决方案

高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。

计算机系统的高可用在不同的层面上有不同的表现:

(1)网络高可用

由于网络存储的快速发展,网络冗余技术被不断提升,提高IT系统的高可用性的关键应用就是网络高可用性,网络高可用性与网络高可靠性是有区别的,网络高可用性是通过匹配冗余的网络设备实现网络设备的冗余,达到高可用的目的。 比如冗余的交换机,冗余的路由器等

(2)服务器高可用

服务器高可用主要使用的是服务器集群软件或高可用软件来实现。

(3)存储高可用

使用软件或硬件技术实现存储的高度可用性。其主要技术指标是存储切换功能,数据复制功能,数据快照功能等。当一台存储出现故障时,另一台备用的存储可以快速切换,达一存储不停机的目的。

二、MongoDB的高可用集群配置

高可用集群,即High Availability Cluster,简称HA Cluster。集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。搭建高可用集群需要合理的配置多台计算机之间的角色,数据恢复,一致性等,主要有以下几种方式:

(1)主从方式 (非对称方式)

主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。

(2)双机双工方式(互备互援)

两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。

(3)集群工作方式(多服务器互备方式)

多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。

MongoDB集群配置的实践也遵循了这几个方案,主要有主从结构,副本集方式和Sharding分片方式。

三、Master-Slave主从结构

主从架构一般用于备份或者做读写分离。一般有一主一从设计和一主多从设计。

由两种角色构成:

(1)主(Master)

可读可写,当数据有修改的时候,会将oplog同步到所有连接的salve上去。

(2)从(Slave)

只读不可写,自动从Master同步数据。

特别的,对于Mongodb来说,并不推荐使用Master-Slave架构,因为Master-Slave其中Master宕机后不能自动恢复,推荐使用Replica Set,后面会有介绍,除非Replica的节点数超过50,才需要使用Master-Slave架构,正常情况是不可能用那么多节点的。

还有一点,Master-Slave不支持链式结构,Slave只能直接连接Master。Redis的Master-Slave支持链式结构,Slave可以连接Slave,成为Slave的Slave。

四、Relica Set副本集方式

Mongodb的Replica Set即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。

另一个是做读写分离,读的请求分流到副本上,减轻主(Primary)的读压力。

1.Primary和Secondary搭建的Replica Set

Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色:

(1)主节点(Primary)

接收所有的写请求,然后把修改同步到所有Secondary。一个Replica Set只能有一个Primary节点,当Primary挂掉后,其他Secondary或者Arbiter节点会重新选举出来一个主节点。默认读请求也是发到Primary节点处理的,需要转发到Secondary需要客户端修改一下连接配置。

(2)副本节点(Secondary)

与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。

(3)仲裁者(Arbiter)

不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。

注意,一个自动failover的Replica Set节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主决策。

(4)选主过程

其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主:

2.使用Arbiter搭建Replica Set

偶数个数据节点,加一个Arbiter构成的Replica Set方式:

>>Sharding分片技术

当数据量比较大的时候,我们需要把数据分片运行在不同的机器中,以降低CPU、内存和IO的压力,Sharding就是数据库分片技术。

MongoDB分片技术类似MySQL的水平切分和垂直切分,数据库主要由两种方式做Sharding:垂直扩展和横向切分。

垂直扩展的方式就是进行集群扩展,添加更多的CPU,内存,磁盘空间等。

横向切分则是通过数据分片的方式,通过集群统一提供服务:

(1)MongoDB的Sharding架构

(2)MongoDB分片架构中的角色

A.数据分片(Shards)

用来保存数据,保证数据的高可用性和一致性。可以是一个单独的mongod实例,也可以是一个副本集。

在生产环境下Shard一般是一个Replica Set,以防止该数据片的单点故障。所有Shard中有一个PrimaryShard,里面包含未进行划分的数据集合:

B.查询路由(Query Routers)

路由就是mongos的实例,客户端直接连接mongos,由mongos把读写请求路由到指定的Shard上去。

一个Sharding集群,可以有一个mongos,也可以有多mongos以减轻客户端请求的压力。

C.配置服务器(Config servers)

保存集群的元数据(metadata),包含各个Shard的路由规则。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://my.oschina.net/maojindaoGG复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 搭建高可用mongodb集群(一)——配置mongodb

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写、海量数据高效存储、高可扩展性和高可用性这些难题。不过就是因为这些问题Nosql诞生了。

    九州暮云
  • 高可用mongodb集群(分片+副本):用户权限配置

    对于搭建好的mongodb副本集加分片集群,为了安全,需启动安全认证,使用账号密码登录。

    雪人
  • 成为一名Java高级架构师到底需要学习哪些技术?

    工作1-5年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?

    java架构师
  • JAVA程序员如何提升自己?

    加米谷大数据
  • 成为一名Java高级架构师你应该要学习的技术

    Java天坑
  • 如何用 redis 造一把分布式锁

    简单来讲,锁是用来控制多线程执行对资源的并发访问的。比如当一个资源只允许在任意时刻只有一个执行线程对其进行写操作,那当其他线程要访问资源时,就必须要检查该该资源...

    用户4447430
  • Mongodb集群调研(上)

    高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性...

    陈不成i
  • IT运维面试问题总结-数据库、监控、网络管理(NoSQL、MongoDB、MySQL、Prometheus、Zabbix)

    NoSQL,指的是非关系型的数据库。NoSQL 有时也称作 Not Only SQL(意即"不仅仅是SQL") 的缩写,其显著特点是不使用SQL作为查询语言,数...

    杰哥的IT之旅
  • 全面剖析 MongoDB 高可用架构

    MongoDB 是一款功能完善的分布式文档数据库,是一款非常出名的 NoSQL 数据库。当前国内使用 Mongodb 的大型实践越来越多,MongoDB 为我司...

    码哥字节
  • 8000字一把梭|MongoDB 3种高可用架构全面剖析

    MongoDB 是一款功能完善的分布式文档数据库,是一款非常出名的 NoSQL 数据库。当前国内使用 Mongodb 的大型实践越来越多,MongoDB 为我司...

    程序员小富
  • MongoDB从入坑到入迷

    背景:我司是一家正处于高速发展,目前拥有数百万用户,年销售额近五十亿的社交电商公司。公司技术部建立之初,为了适应用户量的高速增长,与业务的不断变更迭代,在选用数...

    MongoDB中文社区
  • MongoDB 入门学习

    分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。

    叉叉敌
  • IntelliJ IDEA 和 Eclipse等工具部署项目到Tomcat

    时下流行的两款IDE工具多为idea,Eclipse等产品,相比之下,idea更便捷,以页面样式,快捷性赢得了市场大部分开发者的喜爱。

    疯狂的KK
  • 架构师必备词汇和知识点

    01 高可用 负载均衡(负载均衡算法) 反向代理 服务隔离 服务限流 服务降级(自动优雅降级) 失效转移 超时重试(代理超时、容器超时、前端超时、中间件超时、...

    Java高级架构
  • 干货!万亿级数据库MongoDB集群性能优化实践合辑(上)

    本文来自OPPO文档数据库mongodb负责人杨亚洲老师2020年深圳Qcon全球软件开发大会《专题:现代数据架构》专场、dbaplus专场:万亿级数据库Mon...

    MongoDB中文社区
  • 数据库高可用和分区解决方案-MongoDB 篇

    许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设Mongo...

    数据和云
  • PHP中高级面试题 – 第三天

    默认情况下,MongoDB 更侧重高数据写入性能,而非事务安全,MongoDB 很适合业务系统中有大量 “低价值” 数据的场景。但是应当避免在高事务安全性的系统...

    PHP学习网
  • 核心18问 | 万亿级数据库MongoDB集群性能优化实践合辑(下)

    之前我们阅读了OPPO文档数据库mongodb负责人杨亚洲老师2020年分享干货-万亿级数据库MongoDB集群性能优化实践合辑(上),本次我们分享来自答疑内容...

    MongoDB中文社区
  • 限时好礼 | MongoDB又有新书籍出炉啦!

    点击下方公众号关注并分享,获取MongoDB最新资讯! 同学们,最新的MongoDB书籍《MongoDB核心原理与实践》出炉啦! 本书是MongoDB中文社区长...

    MongoDB中文社区

扫码关注腾讯云开发者

领取腾讯云代金券