我有一个3个完整实例Mongo副本集,在3个独立的AWS EC2 Linux实例上设置(所有相同的可用区域但不同的子网)。我可以从同一可用区中的另一个EC2框读取和写入副本集,但是,从远程计算机(我的本地方框),我只能读取。尝试插入或findandmodify会返回错误“无法连接到与读取首选项Primary匹配的副本集的成员”。
如果我将连接字符串更改为仅连接到primary,则写入会很好,但显然不会复制到其他框。
我尝试允许本地盒子和三个Mongo盒子之间的所有流量,但没有变化。我还读到,解析其他框的dns可能是一个问题,所以我添加了主机条目,但这也无济于事。当我打开所有流量时,我可以将所有3个盒子都打平。
驱动程序和副本盒之间是否还需要其他配置?
我正在使用c#Mongo 1.8.1驱动程序。我的连接字符串看起来像
mongodb://mongobox1,mongobox2,mongobox3/dbname?replicaSet=replicasetname&readpreference=primaryPreferred
更新
我还发现,有时(不确定条件),当我取下主人时,我可以从本地写好,当我把机器备份时,它可以正常同步。但是一旦我把机器重新启动,我就不能再从当地写信了。
谢谢,
马特
答案 0 :(得分:0)
只是为了关闭它,它最终是盒子在副本集中与他们的内部ips连接,但我试图通过他们的外部ips连接。他们需要匹配。