企業云計算部署四步走
云計算在經過轟轟烈烈的發展后開始落地,現階段已經有一些企業開始著手于部署的工作。在一項針對企業CIO部署云計算的調查中顯示,有19%的企業已經在部署或應用云計算,28%的企業考慮近期部署云計算,53%的企業目前尚無部署云計算的時間表。面對這樣的數據,云計算的落地過程顯得并不是那么容易,有一系列問題需要面對。對于企業來說,云部署的規模,云計算安全,云計算成本問題都是需要面對的。
其實從簡單意義上來說,云部署就是為了簡化工作流程,使業務更加自動化,在不需要更多人參與的情況下,實現更高的效率。這樣看來,云部署似乎是一件革命性的大事件,帶來虛擬化,IaaS等技術一樣的現實意義。也就是這樣,很容易讓人產生誤導,覺得企業對于云部署可以完全依賴標準化的流程。對于企業云部署,可以參考下面四個過程。
自動化部署
IaaS的優勢之一是能夠更加便捷的開發、測試、部署軟件。傳統的開發環境,開發者為了節省資金,通常使用的服務器數量比應用數量要低。除此之外,開發環境的不可兼容性,給開發者從一個項目轉到另外一個項目帶來了不便,重新搭建環境又非常費時。在云中就可以解決這一問題,開發人員為項目的每個分支中的應用分配相同的部署。這樣就能夠節省資金,在保存代碼代碼的同時結束資源部署不可用狀態。
程序的完全部署至少需要一臺應用服務器,一個數據庫服務器或者緩存、輔助服務器。但是僅僅依靠開發者編寫的代碼控制部署,項目的防火墻或數據庫服務器附件等部分可能會變得非常緊張。但如果不部署,建立恰當的開發環境時間會非常緊張且昂貴,即便這樣,開發者也不愿意關閉好不容易搭建起來的環境。
不同程序版本的需求和分支的繁瑣性使環境部署變得非常復雜。系統管理員和開發者管理虛擬化環境的傳統方式是先在標準映像里安裝相關軟件和代碼,然后再開啟映像。這樣,在開發者需要更新相關操作系統、數據庫軟件版本或改變服務器中代碼組織方式的時候,需要創建一個新的映像。這樣,眾多不同映像就讓自動化化啟動項目部署的任務變得非常困難。
部署解決方案可以用一臺普通的小型帶有操作系統的機器,這時,需要創建應用環境來啟動所有有必要的服務器,安裝服務器中必要軟件,檢查不同代碼所對應的相應分支和版本,以確保所有服務器都可用。即,數據庫服務器首先啟動,然后開始一系列測試確保可用性。最后應用程序服務器啟動并測試,測試不同服務器之間的交流活動。測試過程中的所有失敗情況,都要記錄下來被重新測試,如果再次嘗試失敗的話會重新登錄,如果部署環境失敗的話為了節省成本將會停止所有服務器。
自動化縮放
IaaS最普遍的一個應用是 “cloudbursting”,這時有多于平常十倍的流量。部署架構中,能夠定義以下情形:監控本地工作負載和IaaS服務器,一旦負載超過一定的值,IaaS提供商會規定新的服務器。工作負載減小的時候將會終止IaaS服務器。“cloudbursting”情形比“autoscaling”要復雜的多。
首先,對于單一的云計算來說,自動縮放是非常有限的,所以急于從私有云轉向IaaS是不可行的。其次,快速轉向IaaS可能需要復制/重新建立數據庫服務器,或者有IaaS云服務器。第三,現代網絡應用程序通常需要配套的應用服務器(高速緩存服務器和防火墻),創建和連接。最后,需要在集中的URL中分流所有流量,這樣在多個數據中心或者云中可以智能的平衡負載,選擇路由。解決這些復雜性問題,不是簡單的縮放是找到正確的“cloudbursting”。
數據庫服務器的自動化恢復
在云中,數據庫服務器比應用服務器有著更多的難題,只要確保應用程序服務器充分被利用。但是數據庫服務器就是另外一回事了,應用程序服務器要在數據庫服務器上讀寫,這樣就要確保數據庫服務器要一直可用并且聯網。數據庫服務器要連接網絡,這樣備份他們就變得比較困難,為了搶數據快照中途總會有幾秒的終端。這樣一來,好的云架構和部署場景的配合就變得非常重要,也能夠使數據庫備份和災難恢復變得簡單。從體系架構的角度來看,就需要有一個主數據庫服務器和一個從數據庫服務器。
部署數據庫服務器:啟動主數據庫服務器,檢索主數據庫服務器的最新快照,將數據遷移到主數據庫服務器中,啟動主數據庫服務器中的數據庫軟件,確保數據庫服務器正常工作,更新DNS。啟動從服務器,檢索從服務器的最新快照,將數據遷移到從服務器中,連接到主服務器。確保復制功能和從服務器數據庫正常工作,更新DNS,從數據庫服務器的創建快照備份操作,確保快照備份操作正常進行。
轉移故障到從數據庫服務器:主數據庫服務器如果未能完成任務,更新新主數據庫服務器的DNS,停止更新新主服務器的備份工作,啟動新的從服務器,確保最新的從服務器快照,數據要遷移到從服務器中,復制新主機連接,驗證復制工作,以及從屬數據庫服務器流程,更新DNS,為新主機建立快照備份功能,并驗證其是否正常工作。
代碼自動化部署
許多軟件工程部門已經實行了一些整合工作,這樣可以大大提高自動化驗證代碼的質量,每一行新的代碼都要經個嚴格的測試。實際上,為應用程序服務器部署新的代碼很少是自動化的,并且非常費時。但是部署自動化代碼的環境非常容易并且非常高效。