Azure中推荐的副本集配置

时间:2015-04-20 17:14:53

标签: linux mongodb azure dns

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

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

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

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

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

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

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

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

谢谢! 杰里

1 个答案:

答案 0 :(得分:0)

没有最佳方式,但让我澄清一些“客观”观点:

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