首页 > 数据库 >MongoDB两地三中心集群架构设计、全球多写集群架构设计

MongoDB两地三中心集群架构设计、全球多写集群架构设计

时间:2024-08-01 15:27:00浏览次数:17  
标签:架构设计 log -- data db 集群 MongoDB com 10001

文章目录

高级集群架构设计

两地三中心集群架构设计

容灾级别

在这里插入图片描述



RPO&RTO

RPO(Recovery Point Objective):即数据恢复点目标,主要指的是业务系统所能容忍的数据丢失量。

RTO(Recovery Time Objective):即恢复时间目标,主要指的是所能容忍的业务停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。

在这里插入图片描述



两地三中心方案:复制集跨中心部署

processon在线图

双中心双活+异地热备=两地三中心

在这里插入图片描述



两地三中心部署的考量点

• 节点数量建议要5个,2+2+1模式

• 主数据中心的两个节点要设置高一点的优先级,减少跨中心换主节点

• 同城双中心之间的网络要保证低延迟和频宽,满足 writeConcern: Majority 的双中心写需求

• 使用 Retryable Writes and Retryable Reads 来保证零下线时间

• 用户需要自行处理好业务层的双中心切换



两地三中心复制集搭建

环境准备

  • 3台Linux虚拟机,准备MongoDB环境,配置环境变量。
  • 一定要版本一致(重点)



整体架构

在这里插入图片描述



配置域名解析

在3台虚拟机上分别执行以下3条命令,注意替换实际IP地址

echo "192.168.65.97  mongo1 mongo01.com mongo02.com" >> /etc/hosts
echo "192.168.65.190 mongo2 mongo03.com mongo04.com" >> /etc/hosts
echo "192.168.65.200 mongo3 mongo05.com " >> /etc/hosts



启动5个 MongoDB 实例

在mongo1上执行以下命令

mkdir -p /data/member1/db  /data/member1/log /data/member2/db  /data/member2/log
mongod --dbpath /data/member1/db --replSet demo --bind_ip 0.0.0.0 --port 10001 --fork --logpath /data/member1/log/member1.log
mongod --dbpath /data/member2/db --replSet demo --bind_ip 0.0.0.0 --port 10002 --fork --logpath /data/member2/log/member2.log

在mongo2上执行以下命令

mkdir -p /data/member3/db  /data/member3/log /data/member4/db  /data/member4/log
mongod --dbpath /data/member3/db --replSet demo --bind_ip 0.0.0.0 --port 10001 --fork --logpath /data/member3/log/member3.log
mongod --dbpath /data/member4/db --replSet demo --bind_ip 0.0.0.0 --port 10002 --fork --logpath /data/member4/log/member4.log

在mongo3上执行以下命令

mkdir -p /data/member5/db  /data/member5/log
mongod --dbpath /data/member5/db --replSet demo --bind_ip 0.0.0.0 --port 10001 --fork --logpath /data/member5/log/member5.log



初始化复制集

[root@localhost mongodb]# mongosh mongo01.com:10001

# 初始化复制集
rs.initiate({
    "_id" : "demo",
    "version" : 1,
    "members" : [
        { "_id" : 0, "host" : "mongo01.com:10001" },
        { "_id" : 1, "host" : "mongo02.com:10002" },
        { "_id" : 2, "host" : "mongo03.com:10001" },
       { "_id" : 3, "host" : "mongo04.com:10002" },
       { "_id" : 4, "host" : "mongo05.com:10001" }
    ]
})

#查看复制集状态
rs.status()



配置选举优先级

把mongo1上的2个实例的选举优先级调高为5和10(默认为1),给主数据中心更高的优先级

mongosh mongo01.com:10001
conf = rs.conf()
conf.members[0].priority = 5
conf.members[1].priority = 10
rs.reconfig(conf)



启动持续写脚本(每2秒写一条记录)

在mongo3虚拟机上,执行以下 mongo shell 脚本

#vim ingest-script
db.test.drop()
for(var i=1;i<1000;i++){
    db.test.insert({item: i});
    inserted = db.test.findOne({item: i});
    if(inserted)
        print(" Item "+ i +" was inserted " + new Date().getTime()/1000);
    else
        print("Unexpected "+ inserted)
    sleep(2000);
}
# 使用--retryWrites参数  即使出现数据中心故障,对前端业务没有任何中断 (Retryable Writes 在4.2以后就是默认设置)
mongosh --retryWrites mongodb://mongo01.com:10001,mongo02.com:10002,mongo03.com:10001,mongo04.com:10002,mongo05.com:10001/test?replicaSet=demo ./ingest-script



测试结果

测试: 模拟从数据中心故障

停止mongo2上所有 mongodb 进程,观察mongo3上的写入未受中断

测试:模拟主数据中心故障

停止mongo1上所有 mongodb 进程,观察mongo3上的写入未受中断



总结

  • 搭建简单,使用复制集机制,无需第三方软件
  • 使用Retryable Writes以后,即使出现数据中心故障,对前端业务没有任何中断 (Retryable Writes 在4.2以后就是默认设置)



全球多写集群架构设计

processon在线图

在这里插入图片描述

标签:架构设计,log,--,data,db,集群,MongoDB,com,10001
From: https://blog.csdn.net/qq_44027353/article/details/140796005

相关文章

  • MongoDB复制集/集群搭建详解
    文章目录复制集介绍三节点复制集模式Pss模式PSA模式典型三节点复制集环境搭建注意事项搭建配置复制集复制集状态查询复制集常用命令安全认证创建用户创建keyFile文件启动mongod复制集连接方式复制集成员角色属性成员角色配置隐藏节点配置延时节点添加投票节点移除复制......
  • 基于 KubeSphere 的 Kubernetes 生产环境部署架构设计及成本分析
    转载:基于KubeSphere的Kubernetes生产环境部署架构设计及成本分析 前言导图1.简介1.1架构概要说明今天分享一个实际小规模生产环境部署架构设计的案例,该架构设计概要说明如下:本架构设计适用于中小规模(<=50)的Kubernetes生产环境,大型环境没有经验,有待验证。......
  • kubeasz 制作k8s 集群离线安装包
    转载:kubeasz制作k8s集群离线安装包kubeasz制作k8s集群离线安装包大家好,欢迎来到运维有术本文介绍了,利用ezdown制作kubeasz离线部署k8s集群所需的离线安装包。使用kubeasz离线安装k8s集群需要下载四个部分:kubeasz项目代码二进制文件(k8s、etcd、container......
  • kubeadm部署k8s集群
    目录1.环境准备2.升级内核3.所有节点安装docker4.安装kubeadm,kubelet和kubectl5.高可用配置6.部署K8S集群7.所有节点部署网络插件flannel8.部署Dashboard可视化面板9.更新k8s证书有效期1.环境准备7-2192.168.9.210master017-5192.168.9.120master027-7192.168.9.......
  • 智算集群网络拥塞原因分析及IB组网的优势
     智算集群网络在什么场景下会出现拥塞?CLOS网络架构(以其主要提出者CharlesClos命名,最初用于实现无阻塞的电话交换网络)是一种广泛应用于现代数据中心和高性能计算环境中的网络设计方法。智算集群建设中落地的CLOS架构主要是:Spine-Leaf网络架构。其除了支持Overlay层面技术之外;Sp......
  • redis-5.0.14集群部署
    一、集群规格IP主机名端口10.0.0.108master700110.0.0.108master700210.0.0.109slave1700110.0.0.109slave1700210.0.0.110slave2700110.0.0.110slave27002二、安装redis-5.0.14集群1.下载地址redis-5.0.142.上传包到每台服务器解压......
  • redis主从复制、哨兵模式、集群
    redis集群高可用redis集群的三种模式:1.主从复制(奇书3台一主两从)2.哨兵模式(3台一主两从)3.cluster(集群6333)主从复制:喝MySQL的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器。从不能更新到主。也是哨兵模式的基础。缺点:没有办法进行故障自动......
  • proxmox ve 部署双节点HA集群及glusterfs分布式文件系统
    分布式存储的作用加入分布式存储的目的:主要是为了对数据进行保护避免因一台服务器磁盘的损坏,导致数据丢失不能正常使用。 参考文档:https://gowinder.work/post/proxmox-ve-%E9%83%A8%E7%BD%B2%E5%8F%8C%E8%8A%82%E7%82%B9%E9%9B%86%E7%BE%A4%E5%8F%8Aglusterfs%E5%88%86%E5%B8......
  • 【系统架构设计师】二十一、面向服务架构设计理论与实践②
    目录四、SOA主要协议和规范五、SOA设计的标准要求5.1SOA设计标准5.2服务质量六、 SOA的作用与设计原则七、SOA的设计模式7.1服务注册表模式7.2企业服务总线模式7.3微服务模式八、SOA的构建与实施8.1构建SOA时应该注意的问题8.2SOA的实施过程8.3 业务......
  • Kubenetes集群部署操作
    服务器操作系统:CentOS7.9NAT192.168.1.1564核20Gmaster192.168.1.1101核8Gnode01192.168.1.1111核8Gnode02192.168.1.1121核8Gnode03环境准备关闭防火墙####关闭防火墙systemctlstopfirewalld&&systemctldisablefirewalld&&iptables-F......