无法连接到 google 云虚拟机实例上的 mongodb 副本集

Cannot connect to mongodb replica set on google cloud vm instance

我在 google 云虚拟机(市场解决方案)上部署了一个 mongodb-副本集,我可以通过浏览器-ssh 连接到它,我在其中创建了一个数据库并启用了访问控制。但是,我无法从外界或 App Engine 上的应用程序连接到该装置。

我的连接字符串如下所示:

mongo "mongodb://[user]:[pass]@35.207.100.1:27017,35.207.100.2:27017/mydb?replicaSet=rs0&authSource=admin"

这就是我得到的:

2020-03-08T17:27:42.204+0100 I  CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to 35.207.100.1:27017
2020-03-08T17:27:42.204+0100 I  CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to 35.207.100.2:27017
2020-03-08T17:27:47.209+0100 W  NETWORK  [ReplicaSetMonitor-TaskExecutor] Unable to reach primary for set rs0
2020-03-08T17:27:47.209+0100 I  NETWORK  [ReplicaSetMonitor-TaskExecutor] Cannot reach any nodes for set rs0. Please check network connectivity and the status of the set. This has happened for 1 checks in a row.

我已经做了:

这个配置是进程使用的配置,正如 ps aux 向我展示的那样:

mongodb   5862  0.4  1.1 1468472 91388 ?   SLsl Mar07   5:10  /usr/bin/mongod --config /etc/mongod.conf

另外,所有机器都在默认网络中

主集上的 netstat 显示:

Proto  Recv-Q  Send-Q  Local Address           Foreign Address         State       PID/Program name
tcp        0      0    0.0.0.0:27017           0.0.0.0:*               LISTEN      22544/mongod

此外,当我通过浏览器 ssh 连接到其中一个实例时,我只能通过内部 IP 而不能通过外部 IP 连接到该设备。

我假设网络配置仍然有问题,但我找不到问题所在。

我在这里错过了什么?

根据底部显示的分析,该端口未对其余Ips开放。

确保防火墙规则启用此功能。要做

  • 在Google云控制台中配置防火墙规则
  • 在您的防火墙规则中提供一个标记
  • 使用与防火墙规则相同的标记来标记您的实例

好的,这就是解决我的问题的方法(尽管我不明白为什么)。

  • 删除我的防火墙规则并使用相同的配置和相同的网络标签重新添加它(我只是复制和粘贴)

    编辑: 可能造成差异的是规则的 priority 作为 。之前是最低优先级65534重新加上默认值1000后

  • 将我的连接字符串调整为:

    mongo "mongodb://[user]:[pass]@35.207.100.1:27017,35.207.100.2:27017/dbname"
    

只是做了其中一件事情并没有帮助。