一千萬個為什麽

搜索

如何防止在EC2實例上擁抱死亡?



I've a iOS app on the app store and recently I've received a huge surge of traffic to my landing page hosted on EC2 and resulted in the page not responding, luckily I managed to recover it by restarting and upgrading the instance to a t2.medium.

Now I'm looking to hire someone to implement a technology to prevent the same death again. My experience only stretch that far allowing me to understand basic devops stuff but not enough for load balancer on AWS, I want to know what is a affordable implementation for my instance.

我的著陸頁和iOS應用後端托管在同一個實例上。

轉載註明原文: 如何防止在EC2實例上擁抱死亡?

一共有 6 個回答:

如果你想快速得到這個沒有太多知識的分類,我建議使用彈性豆莖。這是另一個AWS應用程序,它將為您處理負載均衡器配置和實例擴展。

在負載平衡器和實例之上沒有額外的成本,所以你可以繼續使用t2類型的實例,但讓彈性beanstalk盡可能地擴展你想要的幫助。

自動縮放不是即時的,在峰值流量時間通常需要很短的時間(通常為幾分鐘)才能處理峰值,但它會比手動縮放實例大小好得多,並且很容易掌握用。

處理交通浪湧有兩種一般策略:增加容量和降低成本。

增加容量意味著自動縮放,當公共雲第一次上市時,每個人都非常興奮。從最基本的意義上說,這將基於負載為您啟動更多的Web服務器並將它們添加到負載平衡器中,但由於可能很難管理,因此還有更多自動化解決方案,如Elastic Beanstalk。

自動化容量擴展的問題在於其自動化賬單擴展 - 10倍正常流量意味著10倍服務器意味著您必須支付10倍的資金。這就是為什麽,雖然這是一個有用的策略,但我認為你應該始終看到你可以作弊多少。

通過作弊,我的意思是緩存,這意味著大部分時間你可以給用戶稍微過時的數據,他們不會註意到,這可以為你節省大量的時間。假設你有一個頁面,你可以確定它是好的,如果它是過時的5秒,它會得到20 req/s。沒有緩存,你每分鐘運行1200次計算,而緩存只有12次。你可以看到這可以產生巨大的差異。

當然有很多類型的緩存,一個成功的網站會使用其中的幾個。但對於你的用例,有兩個相當不錯的選擇。

首先是使網站完全靜態。這假設你可以這樣做,但如果可以的話,那麽你只需要Nginx直接提供html,並且它可以在沒有任何出汗的情況下服務於請求 。

如果你需要某種程度的動態性,那麽做一些整頁緩存是一個不錯的選擇。 Nginx有一些功能可以做到這一點,但我真的很喜歡Varnish,因為它的靈活性。

無論您選擇哪種選項,請確保您進行加載測試以驗證您是否正確設置了它;有時修復一個點會暴露一個新的瓶頸。

如上所述,我會推薦使用自動縮放功能,並增加一些CloudWatch警報,以便在特定閾值開始增加時啟動自動縮放過程,而不是在已經消失時。

例如;配置CloudWatch以監視您的服務器,當CPU處於50%或更高時間30秒或更長時間時啟動自動縮放過程。

這可能不完全是完美的,但通過一些在線指南很容易完成,並且所有可通過GUI進行配置。

另外,如果您的著陸頁是靜態的,那麽為什麽不在免費層t2.micro上托管它,並為您的應用使用另一個t2.micro免費層?

如果您想尋求幫助,我很樂意幫助您。根據你的頁面,你可能根本不需要ec2。例如,如果您的服務器是靜態或JavaScript服務器,則可以通過s3與雲端分發服務。或者,如果絕對必要,我們可以使用自動縮放組。

我想與AWS分享我們的經驗。我們在EC2上部署了我們的應用程序,並且面臨同樣的問題並且成本也很高。 我們部署了我們的應用程序亞馬遜EC2容器服務,盡管我們的應用程序是單一的,但是我們已經實現了

  • 狀況
  • 成本效益
  • 可擴展性

應用程序負載均衡器將處理流量並將流量路由到健康的實例,並且您可以運行同一服務的多個任務,而無需擔心縮放和平衡負載。

這種架構使實現故障隔離變得更加容易。   諸如健康檢查,緩存,艙壁或斷路器等技術   允許您減少失敗組件的爆炸半徑並改善   給定應用程序的總體可用性。

這很大程度上取決於特定的體系結構,但例如:

  • 使用CloudFront加載您的網站以減少主機負載
  • 使用S3中的客戶端托管服務進行比例縮放
  • 帶自動縮放組的Elastic Load Balancer