擴展 EC2 上託管的 LAMP 網站

擴展 EC2 上託管的 LAMP 網站

我對這一切都很陌生 - 我最近成功在 EC2 上啟動了我的網站。下一步,我想學習如何擴展網站。我有一個總體想法,但希望專家提供一些關於如何實施的意見。

我的網站基於 LAMP,但也有 Red5 伺服器,允許用戶錄製訊息並用於回放它們。

目前,這是我計劃為初始擴展設定的架構。部署四個小型 EC2 執行個體用於以下目的:

Instance-1:在此實例上我將執行 MySql 資料庫

實例 2:在此實例上我將執行 red5 伺服器

Instance-3 和 Instance-4 這 2 個實例將用於部署網站並將在其上執行 Apache。它們將使用內部 IP 位址與 Instance-1 上的 mysql 伺服器和 Instance-2 上的 red5 伺服器進行通訊。當需要時,我將啟動相同的另一個實例

EBS - 我將擁有 50 GIG 的 EBS,其中將儲存所有 mysql 資料。 red5也會使用這個EBS來儲存視訊訊息

Load-Balancer - 使用 Amazon 提供的負載平衡器對 Instance-3 和 Instance-4 進行負載平衡

這就是我的想法。我可能會離開所以請耐心等待。另外,我還沒有考慮擴展 MySql 伺服器的情況,因為我目前不知道如何完成此操作以及最初是否有必要。

我知道 Amazon 也提供自動擴展和 mysql 擴展,但我現在不想討論這個。

感謝您的回饋謝謝

答案1

關於這個主題有一系列文章@http://highscalability.com

我沒有使用過 AWS,但我有在資料中心運行虛擬執行個體、使用機架空間虛擬執行個體和 appengine 的經驗。

如何擴展(向上或向下)很大程度上取決於您想要做什麼。有些應用程式是 I/O 密集型的,有些是 CPU 密集型的。您的瓶頸可能是入站 I/O、處理能力或後端 I/O,或者是三者的組合,其數量不同,具體取決於您在應用程式生命週期中的位置。所有這些都需要稍微不同的策略。

使用 AWS 之類的東西,通常您想要橫向擴展,並且必須以終為始,並保持應用程式鬆散耦合。這將允許您拋出另一個實例來根據需求進行擴展。當您開始時,將資料庫實例保留在與主應用程式相同的實例上是可以的,但這通常是首先要分離到它自己的伺服器上的事情。

因此,您可能一開始就在一個實例上運行所有內容。然後您開始獲得一些流量,並注意到資料庫正在耗盡您的 CPU。因此,您將資料庫移動到另一個實例,一切都很好。直到您開始獲得更多流量......並且您發現您的前端無法跟上流量。因此,然後您啟動更多實例,對它們進行負載平衡,您會高興一段時間,並擴展到可能有十幾個Web 伺服器......但隨後您會獲得更多流量,而前端則保持不變好了,現在你的資料庫機器開始崩潰了。然後,您將資料庫複製到一個主伺服器和幾個從伺服器,一切都很好......依此類推。

答案2

我曾在 Amazone EC2/EBS 等產品推出時工作過一段時間,並成功將其中一個大型站點從實體主機遷移到其環境。

我在我的部落格上記錄了一些我的經驗,例如 http://linuxadminzone.com/how-to-install-setup-and-config-haproxy-loadbalancer-for-content-switching/還有更多帖子,但我無法在此處粘貼鏈接。我希望它可以幫助你。

相關內容