阿里云MongoDB 部署安全吗? 多可用区怎么搞?

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7 8群已经爆满 9群 300+,开10群PolarDB专业学习群110+针对 SQLite 我们将建立一个新的群sqlite的群,如果需要请加群的时候单独告知)

最近有人问关于MongoDB的问题,其中的问题是阿里云的单可用区上部署MongoDB是否安全。这个问题起源于曾经有一个小云的企业的MongoDB曾经出现过一个问题,导致可用区的MongoDB无法使用,导致业务中断的问题。

所以导致企业在使用数据库的时候,都会去关注可用区这个问题,可用区其实就是我们业务中的可用区的概念,比如我在北京可用区部署了业务和数据库,同时为了保证北京可用区出现问题,比如密云的泥石流,我需要在上海再部署一套同样的产品,而这些产品本身并不是standby的概念,而是同时服务,通过接口服务不同地区的用户长江以北我们启用北京可用区,长江以南我们启用上海可用区的方案。

所以同样在部署数据库的时候我们也有类似的问题,今天我们不提这个复杂的业务上的可用区的问题,因为这并不是数据库一方的事情,比较复杂,一篇文章也说不清楚。

今天我们要说的是MongoDB的数据库部署的多可用区的问题,在我们线下部署MongoDB 复制集的情况下,大部分都是单可用区,我们将三个节点部署在同一个机房。这主要还是MongoDB的原理,分布式存储数据库基于raft协议。

通过日志oplog来进行日志传输进行数据同步的服务,满足最终数据一致性在各个数据节点上。在这样的基础上,数据同步中于数据库一致性有两个关键词,数据一致性和延迟。

基于这个部分,大部分我们建议部署复制集还是要部署在一个网段,或可用区,减少由于网络延迟导致的性能问题。

在云产品中,MongoDB 托管产品也是要基于这个原理,所以大部分企业在云上部署还是遵循这个原理来部署,而这里也就存在一个问题,在云上如果我们有多个业务可用区,我们怎么进行MongoDB的数据库配置的问题。

以及MongoDB在云上单可用区的稳定性和可用性SLA。下图是阿里云基于多可用区和多可用区的服务承诺也就是我们常说的SLA,这里单可用区承诺的SLA是99.90% 多可用区是99.95%.

看上去并未差距有多大,但是提供核心服务的企业服务的IT基础架构,就是要在这0.05上进行评估。我们在极端情况下的业务扛冲击性和成本之间的比率的衡量。

这里首先感谢阿里云的谭万路同学,对于我们提出的一些问题,积极的回复并快速提供有效的文档来帮助我们。
阿里云SLA

这里我简单总结,并让有这方面单位严格要求,要求MongoDB安全部署需求的数据库工作者了解云上怎么进行多种模式的MongoDB部署的方式。

解决单位对云上可用区的安全顾虑,在MongoDB上的方案

1 多可用区部署

这是第一种方式,针对mongodb部署,在部署时阿里云允许对每个MongoDB节点进行设置,并设置在不同的可用区,比如三个节点 A B C 可以分别设置在不同的区,也就是不同的机房。

多可用区部署也存在两种方式

1 双可用区部署 2 三可用区部署

双可用区部署存在于 2 + 1 的两个可用区部署,3可用区部署是针对三个节点完全不在同一个可用区的部署方式。

相对来说付出的代价也是显而易见,如果必须要三节点则需要付出延迟导致的数据落盘后的数据一致性的延迟问题,2可用区,要比三可用区要好一些。 因为MongoDB 大部分情况下都是大多数mulit模式,落盘commit,那么相对三节点对数据落盘延迟的影响,2节点性能影响最小。

但也有一个问题就是在真正可用区故障的情况下,2可用区很可能导致单节点存活的问题,导致业务其实还是中断,因为智能读不能写。

三节点出现一个可用区出现故障,不能读写的可能性要低得多。

2 通过高成本的数据同步方案

在阿里云中MongoDB是可以进行双向复制的,这点是阿里云对在阿里云上托管的mongodb进行改造获得的。通过DTS的双向复制方案,完全可以在上海,北京各部署一套mongodb 然后通过DTS来进行双向复制的方式。

这套方案的好处是,两边都可以写数据,只要objectID不冲突就可以双向去写,同时通过DTS的复制,我们可以获得两个在不同城市的存储同样数据的mongodb。

这个方案本身也是以后缺点的,

1 如果可用区出现故障,那么很可能一部分数据无法传输到另一个地方,而导致数据丢失的可能性

2 成本高,这相当于重新部署一套mognodb还有DTS数据传输的费用,整体的费用要比之前 超过100%

但好处也是显而易见,我们可以跨速通过修改连接串而快速恢复业务。

3 第一种方案的变种

第一种方案中,我们都是在想3各节点的情况,实际我们就算是在线下部署也有更多节点的方案来满足客户对于多个机房部署mongodb的需求。比如在A区部署3个节点,在B区域部署2各节点,或者3 + 4的模式也是可用,这里方案的成本是需要考虑的。

综上所述,以上的MongoDB在云上部署的多可用区部署的安全性,我们的解决方案有很多,剩下的就是要讨论我们是否有必要,要为了0.05的安全性,来付出200% 甚至300% 400% 的成本问题。

下面是阿里云SLA和mongodb多可用区的文档。

https://help.aliyun.com/zh/mongodb/user-guide/migrate-an-apsaradb-for-mongodb-instance-to-different-zones-in-the-same-region?spm=a2c4g.11186623.0.0.7c92fcecWcPvUj#concept-uh2-skz-lhb

https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud201803051033_42307.html?spm=a2c4g.11186623.0.0.4c222461sXLYgj

相关推荐
qq_654366981 小时前
SQL嵌套查询中的变量传值_优化存储过程逻辑
jvm·数据库·python
m0_748920362 小时前
持久化存储如何与后端接口同步?解决本地缓存与数据库不一致痛点
jvm·数据库·python
qq_330037992 小时前
Python如何安装特定架构包_32位与64位系统兼容性处理
jvm·数据库·python
小白考证进阶中2 小时前
阿里云ACP考试报名有门槛嘛?
阿里云·云计算·阿里云acp·阿里云acp云计算·阿里云acp认证·阿里云acp考试·阿里云acp备考
雨奔2 小时前
Kubernetes Master-Node 通信全解析:路径、安全与配置
安全·容器·kubernetes
y = xⁿ2 小时前
MySQL常见八股:索引
数据库·mysql
希望永不加班2 小时前
SpringBoot 缓存一致性:缓存与数据库双写策略
数据库·spring boot·后端·缓存·oracle
2401_883600252 小时前
Electron 中正确实现主进程异步操作的 Renderer 端回调机制
jvm·数据库·python
Bypass--2 小时前
当 AI 开始干活,安全如何破局
人工智能·安全·chatgpt