我有一个 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
更新:
我还发现有时(不确定条件),当我取下主机时,我可以从本地写好,当我把机器备份时,它会正确同步。但是一旦我把机器恢复过来,我就不能再从本地写了。
谢谢,
马特