2015-11-18 72 views
1

我試圖將運行在一個EC2實例上的應用程序連接到另一個EC2實例上運行的MongoDB。我很確定問題出在安全設置上,但我不太清楚如何處理這個問題。AWS,NodeJS - 將應用程序連接到另一個EC2實例上的Mongodb

首先,我的應用的實例位於ELB後面的自動調整組中。實例和ELB的入站安全設置允許從任何位置訪問端口80,以及來自其自身安全組的所有流量。

如果該實例的安全組接受來自任何地方的所有入站通信,則運行Mongo的EC2實例能夠建立連接。我嘗試過的任何其他配置會導致應用程序說它無法與遠程地址建立連接。我制定了規則來接受來自我擁有的所有安全組的入站流量,但只有當我允許來自任何地方的所有流量時,它似乎才起作用。

此外,我的數據庫實例設置了一個彈性ip。我是否應該在ELB背後也有這個實例?

所以我的問題是:

1)我怎樣才能安全地使運行蒙戈我的EC2實例連接?

2)在體系結構方面,以這種方式運行我的數據庫是否有意義,還是應該在負載均衡器後面加上這個方法?

這個問題讓我絆倒了很多比我想象的更多,所以任何幫助將不勝感激。

注意

我還設置了bind_ip=0.0.0.0/etc/mongo.conf

回答

2

你的問題是,你正在使用的公用彈性IP從您的其他服務器連接到數據庫服務器。這意味着連接是走出去到互聯網,並返回到您的VPC,其中介紹了以下問題:由於數據傳輸

  1. 安全問題不被包含在您的VPC內
  2. 網絡延遲問題
  3. 你的數據庫服務器的安全組不能識別的入站連接

擺脫MongoDB服務器上的彈性IP的安全組,就沒有必要,除非你打算從外部連接到它的VPC。修改服務器以在創建到它的連接時使用分配給數據庫服務器的私有內部IP地址。最後,將您的安全組鎖定爲僅允許從其他安全組訪問數據庫。

可選:在Route53中創建一個專用託管區域,其中A記錄指向數據庫服務器的專用IP地址,然後使用該主機名而不是內部IP地址。

相關問題