Mysql
AWS EC2 基礎設施
我今天在面試,我遇到的一個問題是:
我的應用程序在 EC2 實例(AWS Linux 64 位)上的 docker 容器中執行。我們用於應用程序的 docker 容器(每個容器一個應用程序)連接到 RDS 實例,並且我們將容器設置為自動擴展。你覺得這個設置怎麼樣?
我建議他更好的方法可能是根據客戶的規模在 EC2 實例上擁有,因為他可以使用 AWS 的可擴展功能根據需要自動擴展。他提到他嘗試過這種方式,但在自動縮放時為客戶帶來了較慢的網路連接。
我的問題是:從架構的角度來看,執行連接到 RDS 的可擴展 EC2 實例是否更有效?還是目前的設置更好?
我之所以使用 EC2 可擴展性,是因為他正在執行可自動擴展的容器,並且如果他的 EC2 最終可能會耗盡資源,並且可能會因自動擴展太多容器而導致 CPU 使用率過高。
如果該資訊對這個問題有用,他正在使用 Tomcat 作為他的 Web/應用程序伺服器。
自動縮放時客戶的網路速度較慢
這種說法有點令人困惑……但我假設他的意思是,與擴展容器相比,使用 EC2 實例時擴展事件更慢。
啟動 EC2 實例比啟動 docker 容器更快,因此,在作業系統本身內擴展容器比擴展 EC2 實例更快。如果您必須擴展 EC2 實例,這意味著您必須啟動一個新實例,這需要時間,具體取決於系統的啟動過程。
但是,如果您要擴展 docker 容器,如果您需要擴展,這意味著在同一個實例上啟動一個新的 docker 容器,這比啟動一個新的 EC2 實例要快得多。這允許應用程序快速響應縮放事件。
如果您擴展容器,我理解您對實例資源耗盡的擔憂,但是……也沒有什麼能阻止您擴展 EC2 實例。如果您有興趣,您應該查看AWS ECS以及它如何處理自動擴展