Amazon-Ec2

使用 Java 連接到 Amazon EC2 實例

  • October 10, 2014

我用 Java 編寫了一個客戶端-伺服器應用程序,我想在 Amazon EC2 Ubuntu instacnes 上執行它。客戶端在一個 EC2 實例上執行,伺服器在一個和第三個 EC2 實例上執行,用於託管 postgreSQL 數據庫。我對網路連接有一些疑問,希望有人能提供幫助。:)

  1. 我知道我必須使用公共 DNS 從客戶端連接到伺服器。我可以socket = new Socket(host, port);將公共 DNS 作為字元串與主機一起使用,還是必須使用類似的東西InetAddress address = InetAddress.getByName(host);
  2. 我可以使用哪些埠?套接字將偵聽此埠。
  3. 我是否必須為 EC2 實例配置其他內容才能獲得連接?
  4. 在一個 EC2 實例上,我將安裝 postgreSQL。我認為我可以像使用普通 Ubuntu 一樣安裝它。然後我可以使用 EC2 實例中的公共 DNS 和我在 postgreSQL 中設置的埠連接到數據庫,還是我必須進行其他設置?

一般來說,最好避免這種多問題。很難同時對四個問題提供明確的答案,尤其是在專業領域不完全重疊的情況下。儘管如此,盡最大努力:

  1. 在 EC2 內部和外部建立 TCP 套接字連接是一樣的。您在普通 TCP/IP 網路中所做的一切,您在 ETC 中所做的一切都是一樣的。

唯一的區別在於您的程式碼之外,這就是在 EC2 區域內,該區域中其他節點的主機名解析為內部 IP,而在該區域之外,它們解析為公共 IP

這通常只是您希望自動發生的事情,而且您通常不需要更改任何內容。 2. 只要您在安全組中允許,您就可以使用任何您喜歡的埠。EC2 與這裡的其他任何東西沒有什麼不同。通常的規則適用,例如在大多數 unix/linux 系統上,埠 1024 及以下是為 root 保留的。 3. EC2-classic 實例始終可以連接到 Internet 以進行出站連接。

要相互連接並接收來自更廣泛 Internet 的入站連接,您必須添加允許其他安全組和/或 IP 地址連接的安全組設置。請參閱有關安全組的 EC2 文件

對於 VPC 實例,您可以配置 VPC 安全組,並且您還擁有子網路由規則。有關詳細資訊,請參閱VPC 上的文件。越來越多的 EC2-classic 被棄用以支持 VPC,因此從具有預設公共 IP 地址的單子網 VPC 開始而不是從 EC2 經典開始可能是值得的。 4. 使用主機名(是的,“公共 DNS”)而不是 IP 地址來連接到執行 PostgreSQL 的實例。當從同一區域中的另一個 EC2 實例連接時,它將解析為內部 IP 地址,這是您希望發生的事情,因此您的流量不會被計為 Internet 流量。

您必須為實例配置安全組以允許埠上的傳入連接。如果主機作業系統有防火牆,您也需要允許通過它進行連接。最後,您需要設置 PostgreSQL listen_addresses,以便它實際上接受來自非本地地址的連接。

我強烈建議您在嘗試之前學習一些EC2 教程文件材料。使用一些微型實例並習慣使用安全組、拆分公共/私有 DNS 安排等。

引用自:https://serverfault.com/questions/634993