2017-01-23 128 views
0

我即將啓動一個iOS應用程序,它將與我的自定義REST API進行通信。現在我正在運行一個運行帶有MySQLi的Apache Web服務器的EC2 t2.micro實例。在我開始向公衆發佈之前,我想聽聽下列哪些適當的步驟。EC2,Web服務器和MySQL

  1. 我應該運行兩個獨立的EC2實例嗎?一個僅用於Web服務器,另一個僅用於處理數據庫?
  2. 我應該如何設置數據庫?我還應該使用MySQLi還是應該開始使用Amazon的RDS?
  3. 與數字2相關,當數據庫和/或Web服務器空間不足時,如何處理此問題,以便無縫地增加空間以允許數據庫/ Web服務器繼續增長?我還讀了一些關於自動縮放的內容。

我會預計每分鐘會有很多請求到我的網絡服務器,並希望採取預防措施。所有的建議非常感謝。謝謝。

回答

0

這些問題的答案在很大程度上取決於您的應用程序的要求,您的預算以及您決定要管理的內容與您希望允許AWS進行管理的內容。不過,我會盡我所能回答這些問題。

1)是的。將數據庫與Web服務器分離(即2個不同的EC2實例)是有意義的,原因很多。這將允許您分別爲應用程序的每個層調整內存,CPU等資源。你不希望你的網絡和數據庫競爭相同的資源。另外,迫使你取下一個(網絡或數據庫)的問題不會強迫你取消另一個。如果您的數據庫存在於其中一個Web服務器上,並且您需要執行維護,那麼您的應用程序將實際上變爲脫機狀態,因爲在執行更新時會關閉數據庫。另外,理想情況下,您可以在VPC中的私有子網內保護數據庫服務器。如果您的網絡和數據庫位於同一臺服務器上,則它們都將位於公共子網中,因爲您需要訪問互聯網網關。

2)取決於。如果要維護對數據庫服務器的完全控制,請使用保留操作系統控制的EC2實例。如果您想利用多可用區域這樣的功能來實現高可用性,或者允許AWS爲您管理更新等功能,那麼RDS可能是一個不錯的選擇。成本也起着作用。對於像複製副本和多可用區這樣的東西,您將支付更多,但是您要購買性能和高可用性。因此,取決於您的要求。您可以在此處找到RDS的功能:RDS Product Details

3)對於在EC2實例(數據庫或Web)上運行的任何內容,或者如果您決定使用RDS,則可以根據需要調配並附加額外的存儲卷。您選擇的存儲類型取決於性能要求,預算以及您希望數據庫面對的工作量類型。亞馬遜提供了可用的存儲選項,以及在此添加更多存儲的部分:RDS Storage Options

如果您擔心太多請求壓倒EC2 t2.micro實例,請考慮創建ELB負載平衡器並設置自動擴展組,這將允許您在分配流量時根據需要擴展容量,以免任何一臺服務器不知所措。