4

我在AWS上有一個彈性IP地址,我想使用該IP地址將流量路由到基於子域的多個不同的EC2實例。基本上,與Apache httpd服務器中的虛擬主機一樣。例如:如何在使用Route 53的AWS中使用單個彈性IP地址提供多個子域?

  • example.com - ELB:XXX.XXX.XXX.XXX
  • test.example.com指向EC2實例ID 1
  • build.example.com指向EC2實例ID 2

每個域的所有流量將轉到xxx.xxx.xxx.xxx,然後基於子域名Route 53將流量發送到正確的實例。

我已經通過Route 53的文檔,我看不到這是如何完成的。我也看了亞馬遜ELB,但不確定這是否會奏效。

有誰知道如何使用AWS工具(Route 53和/或ELB)來設置它?如果我能避免它,我寧願不必編寫腳本或使用反向代理。

任何想法或幫助將是偉大的。提前致謝。

+0

彈性IP地址只能與單個EC2實例關聯。因此,如果您有2個不同的EC2實例需要將子域重定向到,則需要2個彈性IP地址。 –

+0

我可以將彈性IP分配給域或面向ELB的互聯網,然後通過實例ID或私有IP在AWS內部路由流量? – user3770447

+3

不使用ELB。您可以使用nginx,HAProxy或其他負載平衡器來完成此操作。 –

回答

4

你不需要每個服務器的彈性ip。每臺服務器都有一個IP,所以你可以使用它(如果你真的想通過IP地址來訪問服務器) - 但你應該做的是在你的域上爲每個服務器設置一個cname,然後尋址服務器由dns命名,而不是由ip地址。

即:

server1.example.com 
server2.example.com 
server3.example.com 

你不需要使用任何EIP的。

也許你可以更好地解釋爲什麼你認爲所有的流量需要通過一個IP地址?

我不能肯定地說爲什麼AWS限制你只有5個EIPs,但我非常肯定它的原因,因爲如果你發現你需要數百個EIP,那麼你可能做錯了 - 並強迫你請求超過5個,使他們能夠與您開展討論,並幫助您以更好的方式進行討論。

+0

確實如此,這取決於用例。儘管值得注意的是,不建議在非彈性IP上記錄別名:由於此IP的任何更改(例如,停止/啓動您的計算機)都可能導致網站停機,而新的dns價值正在傳播。 afaik AWS的限制可以保護用戶免受惡意做法(如您所說),10分鐘內增加10k $的賬單,以防萬一被黑客入侵或出現故障,並幫助AWS管理其資源 – Tom

+0

感謝您的反饋。我期望通過一個彈性IP地址路由所有流量的原因是,我不必向亞馬遜請求額外的EIP,因爲正如你所說,如果我必須這樣做,那麼我有機會做錯了。 而我正在尋找鏈接到實例ID(可能不可能)的原因是,如果服務器重新啓動,並且實例獲得新的公共IP和/或公共DNS,它仍然可以訪問,無需手動干預我。 – user3770447

+0

如果需要,您可以在啓動過程中添加一些腳本,以更新具有正確IP地址的節點的route53記錄。 dns傳播需要幾分鐘的時間,但除非您重新啓動實例,否則應該沒有多大關係。 –

0

對於要將流量重定向到的每個不同EC2實例,您需要1個彈性IP地址。

  1. 爲example.com創建您的CNAME或ALIAS記錄並將其指向您的ELB。
  2. 對於您需要一個子域的每個不同的EC2實例,請執行下列操作:
    1. 分配一個彈性IP地址。
    2. 將彈性IP地址分配給EC2實例。
    3. 在Route 53中創建A記錄,將subdomain.example.com指向該彈性IP地址。

注:由於您的EC2實例需要直接訪問,他們將需要駐留在公共子網內。

+1

謝謝馬特。我試圖設置這個功能,這樣我就不必每次需要添加新服務器時都要返回Amazon獲取新的彈性IP地址(初始限制爲5個彈性IP地址)。所以我正確地認爲,如果我有100臺獨特的服務器,你就是這麼說的。那麼我需要從亞馬遜獲得100個獨特的彈性IP地址,以便他們可以公開訪問? – user3770447

+0

只有當您希望EC2實例的IP地址一致時,才需要彈性IP地址。如果你只需要公共訪問權限,那麼自動分配的公共IP地址也可以工作。但是,如果實例停止並重新啓動,則此IP將會更改。使用非彈性IP地址應僅供內部使用。 (如開發/測試服務器)。 –

相關問題