繁体   English   中英

Mongodb架构和具有两个数据中心的故障转移

[英]Mongodb architecture and failover with two data centres

我试图弄清楚是否有一种方法可以无缝地对mongo副本集进行故障转移,而大多数mongodb节点都位于主数据中心中。 我当前的限制是2个数据中心,第三个数据中心是不可能的。 我的问题是,如果数据中心1发生故障,那么在没有人工干预的情况下,数据中心2中的辅助节点将不会升级为主节点。

数据中心1(主):Mongo节点(主)Mongo节点(仲裁器)

数据中心2(中学):Mongo Node(中学)

我看过mongodb白皮书,但它们指出,如果dc1丢失,则需要手动干预才能在dc2主数据库中创建mongodb实例。

我的问题是,是否存在一种架构或配置,该架构或配置将使其有可能丢失数据中心1,并且仍然具有在无需手动干预/重新配置的情况下启用写操作的数据中心2接管能力。 在不采用3数据中心体系结构的情况下是否可以做到这一点。 是否可以使每个站点上的两个3个成员副本集保持同步,并可能对连接的应用程序进行网络级别的故障转移?

谢谢。

如果对我来说有2个数据中心,最简单的解决方案是仅覆盖Primary中的失败。 好消息是,如果Slave已死-您只需要等待即可。

如果无法访问Primary,则需要回调将Slave强制为Primary的过程。 如果您不花更多时间创建网关来缓冲查询并等待来自交换机的回调,则此开关将导致应用程序停机。 这样,随着超时的增加,您将只会变得缓慢。

在主服务器再次上线之后,您需要重新连接到它(因为您的从节点不可靠)-这将再次导致停机-您需要另一个过程来检查主数据库是否处于活动状态(来自数据中心2)以及是否是触发事件并继续进行回调。

可以强制将Slave设置为Primary的手动干预可以包装到脚本中。

对我而言,最好的解决方案是使用第三个数据中心,仲裁器将保留在那里。 跳过这一点并将应用程序逻辑放在那的努力是不值得的。 Mongo中的自动故障转移非常有效且可靠。 如果您使用应用程序逻辑通过2个数据中心来实现这一目标,则可能会遇到很多问题。我宁愿接受他们的建议。

首先,您已经注意到,您不能仅使用两个节点进行自动故障转移。 其次,当您认为“第三”数据中心时,金钱并不是真正的问题。 您可能会问为什么或“怎么做”? 如您所知,您需要仲裁人。 仲裁器确实不需要资源,任何小型Linux机器都可以。 小型VPS机器不需要花费那么多。 在这里您可以找到机器1 x 2.40 GHz,512 MB,20 GB ,每月仅需1.24€。 从这里您将获得每月1.99欧元的更强大的机器。

实际上,这两个地方都可以使用这些“微型”机器运行相当大的mongodb。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM