【AWS+DaoCloud的應用分享】BootDev如何利用docker在AWS實現超快速自動伸縮

大家都說Docker好用。的確,作爲一個用戶,說句公道話,使用docker爲持續部署帶來了意想不到的福音和便捷。

BootDev在設計了一款自動伸縮解決方案,在完善產品的過程中,使用docker,將我們完成Scale Out的進程時間縮短了50%!具體地說,應對無法預測突發流量,只需要5分鐘就可以完成擴縮,是正常時間的三分之一~四分之一!妥妥地,毫無壓力。

BootDev聯動DaoCloud,全面支持AWS中國!


大家都知道,在中國使用Docker Hub受到很多限制,但是好在,中國還有DaoCloud。DaoCloud提供一站式docker管理解決方案,無論你使用的是哪個供應商服務,AWS、阿里雲甚至裸機,可以直接通過DaoCloud安裝Docker Imagine,DaoCloud提供的UI界面還可以管理自定義images。“Daopull”是DaoCloud爲中國特定的互聯網環境下順勢推出的docker鏡像服務,相當好用。


在DaoCloud的UI界面下,可以直接管理你自己的Docker Image,包括代碼部署和確認container的狀態等等。


當然也可以在上面直接運行docker image


說了這麼多,BootDev設計的自動伸縮解決方案聯動DaoCloud(Docker)會產生什麼神奇的化學反應?

  1. BootDev可以在任何雲上,提供自動伸縮服務,包括AWS、阿里雲、其他

  2. BootDev可以運用Docker Images達到更有效的自動伸縮

  3. BootDev在Docker配置最佳參數,優化網站性能,切實爲網站主達到既快又省錢的終極目的。


BootDev和DaoCloud在同一層Stack,可以互相支持對方。通過這種方式,AWS中國以及中國其他的Iaas(Infrastructure) 可以和BootDev&DaoCloud整合。利用DaoCloud的快速部署docker特性,使用BootDev的自動伸縮解決方案和豐富的網站運維經驗。


如何在生產環境下運行Docker?

衆所周知,Docker用於生產環境主要有兩個缺點。一,比起在同一個平臺運行源代碼,Docker的表現會略遜一籌;二,Docker不適用於有狀態的應用。針對剛纔說的第一點,BootDev推薦的做法是,針對固定資源在一個虛擬機上運行一個docker。


如何優化性能?

在AWS EC2裏部署docker的基本概念,如下圖所示:

每個EC2只包含1個Docker,自動伸縮的過程中,EC2會自動運行“Daopull”,下載Docker Image而不用再裝其他東西。

在這個案例中,DaoCloud發揮了什麼作用?請看下圖。DaoCloud對於核心運行時刻提供支持。



如何處理狀態(State Issue)?

部署新代碼時,Docker的運行機制經常會出現一個普遍問題:Docker對於持續部署過程是個非常好的工具,因爲他可以確保測試環境中的代碼和參數和生產環境中完全一致。但是當你需要更新部署,即便是一小行代碼,你也必須新建一個Docker Image,然後重新註冊,砍掉原來的docker,生成一個新的。很多應用是狀態性的(Stateful),比如用戶授權、或者在內存裏儲存一些用戶數據。很多數據會儲存在正在運行的docker裏,因此用Docker完成部署的過程中,一些登陸用戶和數據可能會暫時丟失直到新的數據生成(這個過程涉及到停止和再啓動)。但是BootDev的Docker做法是,我們在Docker直接植入DevOps工具(Chef),分離資源,使新的部署不影響現在的使用。


(圖片來源:https://clusterhq.com/2014/08/13/data-focused-docker-clustering/)

這裏用了個小竅門,就是把一些像本地儲存的數據、緩存等有狀態的資源遷移到外部服務設施上。這樣,我們就可以利用AWS提供的大把不同架構資源,而且非常容易上手。


除去正常運行的資源,處理代碼對於自動伸縮也相當重要。我們要避免的是,類似幾行代碼變動,卻要更新重建整個docker的事。所以,如何用Docker處理儲存IO(Input/Output)?BootDev 的Docker+DevOps應用,我們把運行代碼分成了三種:(1)靜態代碼 (2)配置文件(3)數據文件。

靜態代碼由Git管理,利用DevOps工具,代碼更新、恢復rollback的操作都可以在所有分佈式節點同時執行。配置文件由docker裏面的DevOps工具來管理,因此無論有什麼變動,我們只要在文件層面做改動就可以了。最後,數據文件則是由文件分享系統提供服務,BootDev推薦使用GlusterFS。在Docker進程中,掛載點(mount point) 也按量被安裝到docker裏。下面就是我們的概念圖。


以上就是BootDev,聯動DaoCloud在中國地區提供的,快速自動伸縮解決方案。

如果你也對此感興趣,請聯繫 [email protected]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章