无法连接到MongoDB复制集Google Compute Engine [英] Unable to connect to mongodb replicaset Google Compute Engine

查看:23
本文介绍了无法连接到MongoDB复制集Google Compute Engine的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Google计算引擎上为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"
  1. 当我在同一项目上尝试此代码的另一个实例时,它可以正常工作
  2. 当我尝试从不同的项目实例或本地实例进行尝试时,抛出错误,如下所示
2020-08-22T14:36:40.579+0530I网络[线程1]getaddrinfo(";mongodb-1-servers-vm-0";)失败:未提供节点名或服务器名,或未知 2020-08-22T14:36:40.582+0530I网络[线程1]getaddrinfo(";mongodb-1-servers-vm-1";)失败:未提供节点名或服务器名,或未知 2020-08-22T14:36:40.582+0530W网络[线程1]无法连接设置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公共访问并添加此规则,我是否可以从我的应用程序引擎连接到这些实例?

推荐答案

连接到副本集时,客户端使用服务器发现过程。基本步骤如下:

  1. 连接到连接字符串中的第一个主机
    • 如果失败,请尝试第二个
  2. 建立连接后,运行isMaster这样的命令:
    • 查找所有副本集成员的名称
    • 发现当前主节点
  3. 关闭初始连接
  4. 使用步骤2中发现的主机名和端口连接到副本集的每个成员

这意味着从rs.conf()rs.status()返回的主机名必须可由您希望能够直接连接到副本集的每个客户端解析。

从错误消息看,这些节点似乎是使用短名称添加到副本集中的。如果将每个节点的短名称添加到要进行连接的计算机上的主机文件中,则应该可以正常工作。

或者,在rs.initiaters.add命令中使用可公开解析的主机名重建副本集。

这篇关于无法连接到MongoDB复制集Google Compute Engine的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆