【问题标题】:Unable to write to Mongo Replica set remotely无法远程写入 Mongo 副本集
【发布时间】:2013-10-07 17:01:13
【问题描述】:

我有一个 3 个完整实例 Mongo 副本集,设置在 3 个单独的 AWS EC2 Linux 实例上(所有相同的可用区但不同的子网)。我可以从同一可用区中的另一个 EC2 机器上读取和写入副本集,但是,从远程机器(我的本地机器),我只能读取。尝试插入或查找并修改会返回错误“无法连接到与读取首选项 Primary 匹配的副本集的成员”。

如果我将连接字符串更改为仅连接到主服务器,则写入正常,但显然不会复制到其他框。

我尝试允许本地盒子和三个 Mongo 盒子之间的所有流量,但没有任何变化。我还读到它可能是解析其他框的 dns 的问题,所以我添加了主机条目,但这也没有帮助。当我打开所有流量时,我可以 ping 所有 3 个盒子。

驱动和副本盒之间是否需要其他配置?

我正在使用 c# Mongo 1.8.1 驱动程序。我的连接字符串看起来像

mongodb://mongobox1,mongobox2,mongobox3/dbname?replicaSet=replicasetname&readpreference=primaryPreferred

更新:

我还发现,有时(不确定条件),当我取下主机时,我可以从本地正常写入,当我将机器备份时,它会正确同步。但是一旦我把机器恢复过来,我就不能再从本地写了。

谢谢,

马特

【问题讨论】:

  • 我会说这是配置错误而不是设置错误,我会说您的防火墙可能有问题,您的应用的读取偏好是什么?
  • 它在连接字符串中设置为primaryPreferred。如果它与防火墙或连接有关,为什么设置为单个节点时它对主节点写得很好?
  • 嗯,这确实让我感到困惑,但是如果您将其设置为仅主要的,您也会收到读取错误吗?我想知道这是否与 c# 驱动程序有关

标签: mongodb amazon-ec2


【解决方案1】:

为了解决这个问题,最终发现盒子正在与副本集中的内部 ip 连接,但我试图通过它们的外部 ip 连接。他们需要匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2018-03-15
    • 2021-10-30
    • 1970-01-01
    • 2020-07-14
    • 2016-06-05
    • 1970-01-01
    相关资源
    最近更新 更多