无法在Amazon EC2实例

时间:2016-10-18 20:02:41

标签: mongodb amazon-ec2 replicaset

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

  • 服务器1无法连接到服务器2但连接到服务器3
  • 服务器2可以连接到服务器1和3
  • 服务器3可以连接到服务器1但不能连接到服务器2

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

 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任何服务器,所以这是一个。我还可以尝试调试和解决它。谢谢

1 个答案:

答案 0 :(得分:3)

  

我不明白如何解决这个问题。这是做什么的   安全小组?

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

此外,您似乎正在使用实例的公共DNS,该公共DNS映射到实例的公共IP。这将导致您的所有网络流量进入VPC之外并重新进入,从而绕过安全组规则和VPC的所有其他安全设置。与保持VPC内的所有流量相比,这通常不太安全且速度慢。您需要在这些服务器之间的所有通信中使用分配给这些实例的专用IP地址,以便将所有网络流量保留在您的VPC中。

  

我无法ping任何服务器,所以就是一个。

EC2上默认禁用Ping。不要使用ping作为测试工具。