无法在 Amazon EC2 实例上设置 MongoDB 副本集

Failed to setup MongoDB Replica Set on Amazon EC2 instance

我有三个 ec2 实例,地址分别为 ec2-xx-yyy-zz-www.us-west-2.compute.amazonaws.com。我想在这三个之间设置一个副本集,但在开始之前我检查了这个 trouble-shooting guide,它建议测试成员之间的连接性。我的测试结果是:

当我说无法连接时,这意味着连接失败并显示此消息

 mongo --host ec2-54-149-51-166.us-west-2.compute.amazonaws.com --port 27017
MongoDB shell version: 3.2.10
connecting to: ec2-54-149-51-166.us-west-2.compute.amazonaws.com:27017/test
2016-10-18T19:46:52.223+0000 W NETWORK  [thread1] Failed to connect to 172.31.16.185:27017 after 5000 milliseconds, giving up.
2016-10-18T19:46:52.223+0000 E QUERY    [thread1] Error: couldn't connect to server ec2-54-149-51-166.us-west-2.compute.amazonaws.com:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:231:14
@(connect):1:6

exception: connect failed

我不知道如何解决这个问题。这与安全组有关吗?或者哪里可能是问题。我无法 ping 到任何服务器,仅此而已。还有什么我可以尝试调试和解决它。谢谢

I don't understand how to resolve this. Is it something do with security groups?

是的,它与您的安全组设置直接相关。您需要在安全组中正确打开端口。您可能将所有实例都放在同一个安全组中,您需要添加一条规则,允许安全组内的实例访问同一组中其他实例的正确端口。

此外,您似乎正在使用实例的 public DNS,它映射到实例的 public IP。这将导致您的所有网络流量从 VPC 外部流出并返回,从而绕过安全组规则和 VPC 的所有其他安全设置。这通常比将所有流量都保留在 VPC 内更不安全,也更慢。您需要在这些服务器之间的所有通信中使用分配给这些实例的私有 IP 地址,以便将所有网络流量保留在您的 VPC 内。

I cannot ping to any server so that's one.

默认情况下,Ping 在 EC2 上处于禁用状态。不要使用 ping 作为测试工具。