
我編寫了一個網頁應用程式並將其部署在單一 EC2 執行個體(M1-large)上。
該應用程式就像一個聊天室(只是它除了發送訊息之外還支援其他功能),它允許智慧型手機用戶在近距離(物理)距離(例如最遠 5 公尺)內進行通訊。
這是我的第一個網路應用,對此我有一些疑惑和疑問:
由於這是一個非常有選擇性的聊天室(您只會看到非常接近的人),我不知道如何進行負載平衡:如果我以 2 個實例為例,一個在歐洲,一個在美國,我會就像將歐洲的人重新導向到前者,將美國的人重新導向到後者,如果我不能保證這個重定向,整個應用程式就毫無價值。有沒有辦法使用 Route 53 來做到這一點?這樣做有什麼意義嗎?一個大型實例還不夠嗎?
我嘗試測試實例的重負載效能。因此,我編寫了自己的應用程序,該應用程式每小時模擬 20 萬個請求,並將其運行在其他 EC2 執行個體上。似乎沒有問題(除了某些請求的延遲增加之外,這對於同時接受大量連接的高CPU 使用率來說聽起來很正常)我的問題是,如果我期望有500K,這似乎是一個很好的負載測試用戶。我知道這是一個相當模糊的問題,但一個相當模糊的答案就足夠了。
安全方面。我應該採取哪些一般預防措施來降低安全漏洞的風險?禁用防火牆中的所有連接埠(除了我的應用程式偵聽連接埠)是個好主意嗎?或者它是多餘的。又是一個相當模糊的問題。我將不勝感激任何一般性答案。
謝謝
答案1
由於您的應用程式是基於鄰近性的,因此您可以在不同區域設定伺服器,幾乎不需要串擾。利用 Route53 的「基於延遲的路由」功能。在大多數情況下,這應該會導致人們到達最近的伺服器。但是,由於它不是“基於地理的路由”,因此無法保證。與單一大型實例相比,多個全球伺服器的好處是可以減少客戶端和伺服器之間的延遲。
如果您的模擬正確地代表了使用者的使用情況,那麼您的結果應該會告訴您很多資訊。如果每小時 20 萬個請求正確地代表了 50 萬個用戶的活動,那麼您應該沒問題。如果沒有,則調整您的測試。關鍵是要確保您的測試正確代表 50 萬用戶,然後您的結果也會如此。
關閉安全群組中對應用程式不重要的任何連接埠。不要將 RDP、SSH 或資料庫連接埠保持開啟。僅保持您的應用程式連接埠開啟。