0

我有一个 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

更新:

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

谢谢,

马特

4

1 回答 1

0

只是为了结束这一点,最终这些盒子正在与副本集中的内部 ip 连接,但我试图通过它们的外部 ip 连接。他们需要匹配。

于 2014-12-16T00:25:16.137 回答