閱讀304 返回首頁    go 技術社區[雲棲]


企業為什麼要使用基於Docker的PaaS/CaaS平台

作者:精靈雲


前言
早在十多年前國內外的一些大廠就開始投入研發和使用容器技術,比如Google,對他們來說,使用容器能夠充分利用計算資源節省硬件成本。而這幾年——眾所周知——真正把容器技術發揚光大的是Docker。Docker的slogan“Build,Ship & Run anywhere”定位非常清晰,Docker的出現打破了傳統運維模式裏從打包到部署的過程中環境、語言、平台不一致的亂象,將這一整套開發運維模式標準化了,從而真正幫助企業實踐了DevOps和微服務化。
但是,國內的大型企業麵臨技術轉型的的時候,曆史包袱太沉重,對Docker的接受和部署非常緩慢。同樣地,多數的中小型企業也並未把Docker作為生產環境上部署和管理服務的標配,而選擇繼續使用傳統的運維方案。造成這種現象的原因是什麼呢?可能原因之一是企業從業人員對Docker的學習認知並不夠。之二是目前市麵上Docker的容器編排係統很多,常見的就有K8s,Mesos,Swarm,Rancher,Newben,編排係統的學習和認知成本也進一步提升了企業應用Docker的難度。

1.png


企業為什麼要使用Docker
這個問題的本質是企業用Docker究竟能做什麼,要回答這個問題,需要我們回歸到Docker本身來分析。Docker本身隻是提供了一個運行環境,除了把服務跑起來之外,要讓多個服務容器協同起來工作,實際還需要一個容器編排係統。一般來說企業期望編排係統能幫助實現如下幾個目的:
 定義服務棧
提供一種機製,可以用配置文件來定義服務的網絡端口,鏡像及版本,在需要的時候通過配置可再現的創建出一整套服務。
 服務發現、注冊和注銷
需要在創建服務後自動創建DNS記錄用於訪問相關容器,容器狀態健康後注冊SRV信息。
 健康檢查
可以精細化控製服務注冊時機,以支持容器正常啟動後的初始化完成後再注冊服務,以對外提供穩定可用的服務。
 自動擴容和縮容
實時監測容器CPU和內存使用情況,當容器平均性能指標超過閾值一段時間後啟動自動擴容,創建更多容器以達到閾值要求,當沒有主機資源運行新容器時,自動申請新主機。當一段時間負載持續低於閾值啟動縮容優先刪除新創建容器和主機,以釋放資源和降低運營成本。
 合理的調度
要求最大限度的榨取主機資源避免浪費,並可實現快速的創建容器,減少鏡像拉取時間和磁盤空間浪費。
 負載均衡和高可用

使用Docker的三個階段
根據我們的觀察,根據企業規模和階段性需求的不同,在使用Docker技術的時候分了三個階段來進行。

 階段一:利用開源工具實現一定功能
由於一個Docker容器隻是一個(或一組)進程的封裝,一個容器需要綁定宿主機的端口來向宿主機之外的網絡提供服務,為了避免端口衝突,對於需要暴露端口的容器,Docker會隨機綁定一個宿主機端口,這個時候就需要服務發現來幫助不同機器上的服務來進行通信了。舉例一個簡單的方案:Docker-discover和Docker-register。
這個方案提供了一套係統的幾個基本功能:應用發布,服務發現,負載均衡和進程守護。除了提供一致的運行環境使服務的發布和回滾比較可控,這套簡單的係統在發布流程上還是像傳統運維一樣需要遠程執行腳本,功能比較簡單,適用於小企業,隨著後端係統成長起來,很快就不夠用了。
 階段二:開源容器編排工具
第二個階段是選擇開源容器編排框架來管理,常見的開源容器編排工具有Kubernetes,Swarm和Mesos 。市麵上也有同時支持這三種開源容器編排引擎的容器管理打包方案,通常作為入門級容器管理平台使用。這種入門級的方案雖然是開源的,但技術上的文檔明顯欠缺,社區中的使用難題也很少有公司之外的contributor,當暴露一些難題的時候就很難解決,這點和Kubernetes有很大不同。

2.png


Kubernetes提供的是一個框架,要求使用者對他的組件有一定程度了解,使用之前需要不少配置工作,對Docker入門者來說,學習能力要求很高,不過好在社區有各種contributor,提供了很多幫助部署的installer。除了對學習能力有要求以外,對中小企業來說,對基礎設施的投入肯定不如大企業,一般沒有專人去熟悉Kubernetes這種大型開源項目。
當然,像Kubernetes這樣的容器編排係統本身很複雜,體量很大,很多企業也出現過當丟包嚴重的時候問題排查起來很困難的局麵,畢竟要深入到龐大的代碼中定位問題本身就是件很不容易的事情。
雖然現在Kubernetes是容器調度主力軍,但我們認為調度引擎是容器最核心的模塊,在PaaS這個關鍵的雲計算領域不應該由國外來主導,特別是在軍工、政務、金融等領域,我們需要自主研發的調度引擎,隻有這樣我們才能掌握雲計算基礎架構的核心技術。於是就有了第三個階段的使用建議:高定製化的容器雲平台。
基於Docker的PaaS/CaaS平台
為了適應國內的企業需求,出現了很多運用Docker開源調度框架的容器雲平台,這些平台大都有一個特點:“服務本地化,核心開源化”。我們認為這並不是真正的本地化,真正的本地化應該是在滿足不同領域不同企業的上雲和轉型需求的同時能隨時響應定製化需求。基於這樣的思想,被稱為“中國的K8s”的容器調度引擎Newben應運而生。
Newben是精靈雲全自主研發的容器調度引擎,也是目前國內唯一自研引擎,具備多項技術專利和著作專利,定製能力強、支撐功能豐富,能為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一係列完整功能。如下圖所示,將Newben、K8s、Mesos和Swarm進行詳細對比,會發現Newben事實上吸取了各開源調度引擎的長處,在網絡、服務發現、負載均衡、彈性伸縮、高可用、CI/CD集成、鏡像集成、日誌監控等方麵都有著非常大的優勢。

3.png


(Newben和開源容器調度框架的對比)
Ghostcloud EcOS平台是精靈雲旗下的企業級容器雲平台,內置自研容器調度引擎Newben,同時適配多種開源框架,如K8s、Swarm等。由Ghostcloud精靈雲全自主研發的EcOS平台基於精靈雲PaaS/CaaS雲核心功能模塊,能支持私有雲和混合雲部署,滿足企業的容器雲部署需求,為企業研發、運維及新業務上線部署提供了一整套解決方案和管理平台。不僅幫助企業大幅削減成本和提升效率,幫助傳統企業加速所需業務互聯網化進程,更能幫助互聯網企業加快產品迭代,提高產品市場占有率。 

4.png


(EcOS的平台架構)
Ghostcloud EcOS的應用場景
Ghostcloud EcOS平台作為統一的平台, 可服務於多個解決方案,應用到政務、教育、金融、互聯網、醫療等多個行業和領域。接下來我們以金融行業為例來說明。

5.png


(EcOS應用場景)
傳統的金融行業受迫於銀監會的要求(容器作為兩項最核心技術之一被寫入十三五規劃)需要在企業內部推行雲計算技術,同時互聯網金融的爆發式增長,傳統金融公司在技術上無法應對自如。螞蟻金服和萬達金融等大型互聯網金融公司都在使用容器作為後台支撐平台,傳統金融企業也需要類似的PaaS/CaaS平台,但是本身沒有搭建和維護能力。

麵對這些需求,需要從幾個方麵解決:
• 整合係統內部資源,推行基於容器的開發、測試、生產和運維一體的PaaS平台;
• 推行DevOps,開發運維一體化,降低運維成本;
• 推行敏捷和CI/CD,加快係統交付和部署;
• 使用基於容器的彈性負載均衡係統,適配突發流量;
• 加固開源容器係統,對鏡像及鏡像倉庫進行私有化定製。
在具體的實施中,使用EcOS容器雲平台,對倉庫和鏡像進行加固,在內網和公網環境混合管理做安全隔離,借助平台自帶的CI/CD流程,標準化研發流程;借助EcOS的資源調度框架,動態資源調配。通過容器隻暴露特定端口,提升了整個係統的安全性,係統開發速度和上線速度大幅度提升,團隊整體響應速度也大幅度提升。通過商用Docker雲平台,提升了IT部門的技術能力,更好的適應了未來業務發展需求,物理資源利用率提升,能夠很好的應對突發的流量暴增,在有限資源下提升了係統並發量。

結語
國內的企業需要在使用Docker進程中選擇更本土化的容器編排係統,隻有擁有核心可控的技術才能真正開展雲計算基礎設施建設。推薦選擇能針對個性化需求做定製化解決方案的PaaS/CaaS容器雲平台——Ghostcloud EcOS。

最後更新:2017-04-07 21:05:52

  上一篇:go 標準庫舉例:sys、copy
  下一篇:go The world beyond batch: Streaming 101