[英]Unable to connect to mongodb replicaset Google Compute Engine
我在谷歌计算引擎上为 mongodb 创建了一个 3 节点副本集,出于测试目的,我为防火墙规则添加了0.0.0.0/0
,我能够从任何地方连接到单个节点,所有实例都可以正常工作,但问题是当我尝试使用以下命令连接到副本集时
mongo "mongodb://username:password@public-ip-1:27017,public-ip-2:27017,public-ip-3:27017/production?replicaSet=rs0"
2020-08-22T14:36:40.579+0530 I.NETWORK [thread1] getaddrinfo("mongodb-1-servers-vm-0") 失败:提供了节点名或服务名,或者未知 2020-08-22T14:36:40.582 +0530 I.NETWORK [thread1] getaddrinfo("mongodb-1-servers-vm-1") 失败:提供了节点名或服务名,或未知 2020-08-22T14:36:40.582+0530 W.NETWORK [thread1] 无法到达集合 rs0 的主要位置
从这些实例中,我可以分别连接到各个节点,因为
mongo "mongodb://username:passsword@public-ip-1:27017/production"
mongo "mongodb://username:passsword@public-ip-2:27017/production"
mongo "mongodb://username:passsword@public-ip-3:27017/production"
可能是什么问题呢?
第二个问题是,在防火墙上这些是添加应用引擎服务帐户的选项吗? 所以如果我禁用0.0.0.0/0
公共访问并添加此规则,我可以从我的应用引擎连接到这些实例吗?
连接到副本集时,客户端使用服务器发现过程。 基本步骤是:
isMaster
等命令以:
这意味着从rs.conf()
或rs.status()
返回的主机名必须可由您希望能够直接连接到副本集的每个客户端解析。
从错误消息来看,节点似乎是使用短名称添加到副本集中的。 如果将每个节点的短名称添加到您要连接的机器上的主机文件中,它应该可以工作。
或者,在rs.initiate
和rs.add
命令中使用可公开解析的主机名重建副本集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.