无法在 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,它建议测试成员之间的连接性。我的测试结果是:
- 服务器 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 到任何服务器,仅此而已。还有什么我可以尝试调试和解决它。谢谢
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 作为测试工具。
我有三个 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 到任何服务器,仅此而已。还有什么我可以尝试调试和解决它。谢谢
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 作为测试工具。