Google彈性可伸縮云解決方案詳細架構
英文原文:The Architecture of a Scalable and Resilient Google Cloud Solution
Google 最近發布一組論文,提供了一個創建運行在 Google 云平臺上的彈性可伸縮解決方案的架構指南。本文摘自每個組件的詳述論文,提取了主要的概念和建議,對這些指南稍作改動即可應用于在其它云平臺部署 web 應用。
下面這張圖表展示出一個彈性可伸縮應用的主要組件,圖片下方是每個組件的描述:
地區(Region)– 論文僅討論了單一地區多區域的方案,盡管應用可以被部署到多個地區。
區域(Zone)– 地區內部的一個位置。區域之間的網絡連接遲延很低,且具有很強的妥善處理節點間通信的能力。
負載均衡器(Load Balancer)– 對客戶端而言相當于請求的入口,可以在不同實例間均衡地分發請求。如果必要的話,一個負載均衡器可以在多個地區間傳播請求。
實例(Instance)– 一個運行在 GAE 上的特殊虛擬機。
實例組-在某個區域內部聚合到一起的實例,并且由其中一個實例負責創建和關閉實例的組管理者。
自動伸縮器(Autoscaler,未在圖示中列出)- 這個組件根據當前負載狀況指示組管理者創建或停止實例。自動伸縮器利用一個基于 CPU 利用率、一個云監控指標,抑或實例每秒接收的請求數的策略實現自動伸縮的功能。
云 SQL-通過地區級的管理,這個 SQL 存儲解決方案可以自動地在區域之間被復制。
云存儲-這個存儲解決方案為所有的實例保留對象(通常是文件),狀態數據和上傳的文件應該被保存在這里。
以上提及的組件對于一個可伸縮的解決方案來說至關重要。為了保持彈性,有必要提供啟動實例以及在一些實例失去響應時進行重啟并重新配置它們的方法,你可以利用以下組件來實現:
啟動腳本-啟動腳本是一些常駐在實例、云存儲中或通過一個指定的 URL 獲得的腳本,在實例啟動或重啟的時候被執行,負責設置實例并確保所有本地服務成功運行。這些腳本可以安裝軟件或執行更新操作。
正常運行檢查-這是一個負責在實例上運行檢查來查看它們是否正常運行的 GAE 組件,所有請求只被發往健康運行的實例。
后端服務-這是一個與正常運行檢查和實例組相關的組件,中轉來自負載均衡器的請求。
這篇論文提供了設置并部署 Redmine 的指南。Redmine 是一個基于 Ruby on Rails 的項目管理應用,相關內容請訪問 Github 項目。
論文也包含了如何基于頁面瀏覽、請求、頁面大小以及其它指標的平均值計算運行一個 web 應用的開銷的建議。