2016-10-18 69 views
0

我有三個ec2實例,地址分別爲ec2-xx-yyy-zz-www.us-west-2.compute.amazonaws.com。我想在這三個之間建立一個副本集,但在開始之前,我檢查了這個建議測試成員間連接性的trouble-shooting guide。我測試的結果是:無法在Amazon EC2實例上設置MongoDB副本集

  • 服務器1無法連接到服務器2,但連接到服務器3
  • 服務器2可以連接到服務器1和3
  • Server 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 : 
[email protected]/mongo/shell/mongo.js:231:14 
@(connect):1:6 

exception: connect failed 

我不明白如何解決這個問題。這與安全團體有關嗎?或者可能是這個問題。我無法ping任何服務器,所以這是一個。還有什麼我可以嘗試調試和解決它。謝謝

回答

3

我不明白如何解決這個問題。這是否與 安全組有關?

是的,它與您的安全組設置直接相關。您需要在安全組中正確打開端口。您可能擁有同一安全組中的所有實例,並且您需要添加一條規則,允許安全組內的實例訪問同一組中其他實例的正確端口。

此外,您似乎正在使用映射到實例的公共IP的實例的公共DNS。這會導致您的所有網絡流量超出VPC並返回,從而繞過VPC的安全組規則和所有其他安全設置。與保持VPC內的所有流量相比,這通常不太安全,並且速度較慢。您需要在這些服務器之間的所有通信中使用分配給這些實例的專用IP地址,以便將所有網絡流量保留在您的VPC中。

我無法ping任何服務器,所以這是一個。

在EC2上默認禁用Ping。不要使用ping作爲測試工具。

+0

我無法連接實例。讓我在接下來的12個小時內回覆你。 –

+0

我解決了它。我的第二臺服務器的mongod服務器未配置爲使用副本集運行。因此是這個問題。現在,當這是排序。這很酷。 –