【问题标题】:Recommended replica set config in AzureAzure 中推荐的副本集配置
【发布时间】:2015-06-27 13:15:04
【问题描述】:

我们正在 Azure 上运行 MongoDB,并且正在设置生产副本集(无分片),我正在查看这里的建议:

http://docs.mongodb.org/ecosystem/tutorial/install-mongodb-on-linux-in-azure/

我看到副本集配置是这样的,成员将通过外部 IP 地址相互通信 - 这不会 1) 产生额外的 Azure 成本,因为复制流量通过外部 IP 和 2) 产生因为相同的复制延迟?

至少有一个与 Mongo 通信的应用程序将在 Azure 之外运行。

AWS 有一个功能,当从 VM 查找外部 DNS 名称时解析为内部 IP,当从外部解析到外部 IP 时,这使事情变得更加容易:) 在我之前的工作中,我运行了一个相当大的 mongodb 分片在 AWS...

我很好奇你们的建议是什么?我有两个想法...

1) 为每个 mongo 主机配置一个外部 IP(不完全确定如何在 Azure 中执行此操作,但我确信这是可能的......)并将 DNS 配置为从外部指向这些 IP。然后将每个 VM 配置为具有将这些相同名称指向内部 IP 地址的 /etc/hosts 文件。在所有情况下(或任何端口)都在端口 27017 上运行 Mongo。这意味着该集合通过内部 IP 进行复制流量,但外部客户端可以使用相同的 DNS 名称与其通信。

2) 与 #1 类似,但在 3 个不同的端口上运行 mongo,但只有一个外部 IP 地址,并将所有三个外部 DNS 名称都指向该外部 IP 地址。我们取得了相同的结果,但我认为它更清洁。

谢谢! 杰瑞

【问题讨论】:

    标签: linux mongodb azure dns


    【解决方案1】:

    没有最好的方法,但让我澄清一些“客观”点:

    • 在同一区域的服务/虚拟机/存储之间移动的任何流量均不收取任何费用。即使您使用servicename.cloudapp.net:port 从一个虚拟机连接到另一个虚拟机。不收费。
    • 您选择是否使 mongod 实例可从外部访问。如果您确实创建了外部端点,则需要担心保护这些端点(例如访问控制列表)。由于您的应用在 Azure 之外运行,因此您需要考虑此选项。您还需要考虑如何加密数据库流量(mongodb 企业版支持 SSL;否则您需要自己构建 mongod)。
    • 同样,如果你将你的 mongod 实例暴露在外部,你需要考虑是将它们放在同一个云服务中(共享一个 ip 地址,每个 mongod 实例获取单独的端口),还是多个云服务(每个云的唯一 ip 地址服务)。如果 mongod 实例在同一个云服务中,那么它们可以被集群到一个可用性集中,通过避免主机操作系统在所有虚拟机上同时更新来减少停机时间,并将虚拟机拆分到多个故障域中)。
    • 如果您的应用/Web 层位于 Azure 中,您可以使用内部 IP 地址,同时您的应用和 mongodb 虚拟机位于同一虚拟网络中。

    【讨论】:

    • 那么在这里稍微阅读一下 - 副本集配置中的名称需要能够从 Azure 内部或外部的所有成员和所有客户端解析和访问,对吧?假设我们有外部客户,有推荐的方法吗?我在最初的问题中提出了一些建议,但对我来说似乎都有点 hacky... 我看到有一个 SaaS MongoDB 产品 - 它是如何在那里设置的?如果我最终打算在 Azure 外部分片和运行 mongos,所有分片和配置服务器都需要可解析且可从两者访问?
    • 另外,我知道,如果我使用外部 IP 配置该组,复制流量不会产生任何费用,但会出现延迟,这意味着更多的复制滞后,或者这不重要吗?
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多