当前位置: 首页 > article >正文

MongoDB部署高可用集群

一、准备工作

  1. 修改3台服务器的hostname为mongodb0、mongodb1和mongodb2
        vim /etc/hostname  
        vim /etc/hosts 分别配置3个节点的域名  
            10.5.30.19 mongodb0
            10.5.30.14 mongodb1
            10.5.30.18 mongodb2
  2. 关闭防火墙
  3. 下载mongodb安装包并解压:mongodb-linux-aarch64-ubuntu1804-4.2.7.tgz
        tar zxvf mongodb-linux-aarch64-ubuntu1804-4.2.7.tgz
        名称太长,修改名称  mv mongodb-linux-aarch64-ubuntu1804-4.2.7 mongodb
  4. 安装mongo: 配置环境变量,vim /etc/profile
          export PATH=/opt/mongodb/mongodb-4.2.7/bin:$PATH
    使配置生效:source /etc/profile
  5. 用户及用户组:按需要设置用户和用户组,本环境中统一使用root:root

二、集群架构

  1. 概述
    1.1 MongoDB的集群目前有3种方式主从模式、副本集模式、sharding分片模式),副本集和sharding分片模式是最广泛使用的方案,这2种方案的选择通过数据量和并发数来权衡:GB级别采用副本集方案,TB级别或以上采用sharding模式,解决单机容量和单机并发能力;
    1.2 sharding模式分片越多,性能自然下降越多
  2. 组件及概念说明

序号

组件

说明

1

Mongos Server

1数据库集群请求的入口,所有请求都通过mongos进行协调,不需在应用程序添加路由选择器,mongos自己就是一个请求分发中心,它负责把数据请求请求转发到对应的shard服务器上。
2、在生产环境通常设置多mongos作为请求入口,防止其中一个挂掉所有的mongodb请求都没法操作。

2

config server

1配置服务器存储所有数据库元信息(路由、分片)的配置。
2、mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的mongos更新自己的状态,这样mongos就能继续准确路由。
3、在生产环境通常设置多个 config server ,因为它存储了分片路由的元数据,防止单点数据丢失!

3

shard server

1、分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。
2、基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。

4

replica set

1、副本集其实就是shard的备份,防止shard挂掉之后数据丢失。
2、复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

5

仲裁者(Arbiter)

1、是复制集中的一个MongoDB实例,它并不保存数据。
2、仲裁节点使用最小的资源并且不要求硬件设备,
不能将Arbiter部署在同一个数据集节点中,可以部署在其他应用服务器或者监视服务器中,也可部署在单独的虚拟机中
3、为了确保复制集中有奇数的投票成员(包括primary),需要添加仲裁节点做为投票,否则primary不能运行时不会自动切换primary。


http://www.kler.cn/a/453758.html

相关文章:

  • Effective C++ 条款 22:将成员变量声明为 private
  • SpringBoot的MVC接口增加签名
  • workman服务端开发模式-应用开发-后端api推送修改二
  • UDP Ping程序实现
  • 学籍管理系统:实现教育管理现代化
  • 【国产NI替代】基于FPGA的32通道(24bits)高精度终端采集核心板卡
  • 敏捷开发05:Sprint Planning 冲刺计划会议详细介绍和用户故事拆分、开发任务细分
  • Kalilinux下MySQL的安装
  • 探索数据采集
  • 大数据学习之Redis 缓存数据库二,Scala分布式语言一
  • Keil-编译按钮Translate,Build,Rebuild
  • 【203】实验室管理系统
  • 实用工具推荐----Doxygen使用方法
  • 【信息系统项目管理师】第12章:项目质量管理-基础和过程 考点梳理
  • JS中的原型与原型链
  • scala基础学习(数据类型)-数组
  • stm32引脚模式GPIO
  • 5G 模组 上位机驱动开发流程
  • hiprint结合vue2项目实现静默打印详细使用步骤
  • 破解海外业务困局:新加坡服务器托管与跨境组网策略