華文網

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

作者:精靈雲

前言

早在十多年前國內外的一些大廠就開始投入研發和使用容器技術,比如Google,對他們來說,使用容器能夠充分利用計算資源節省硬體成本。而這幾年——眾所周知——真正把容器技術發揚光大的是Docker。

Docker的slogan“Build,Ship & Run anywhere”定位非常清晰,Docker的出現打破了傳統運維模式裡從打包到部署的過程中環境、語言、平臺不一致的亂象,將這一整套開發運維模式標準化了,從而真正幫助企業實踐了DevOps和微服務化。

但是,國內的大型企業面臨技術轉型的的時候,歷史包袱太沉重,對Docker的接受和部署非常緩慢。同樣地,多數的中小型企業也並未把Docker作為生產環境上部署和管理服務的標配,

而選擇繼續使用傳統的運維方案。造成這種現象的原因是什麼呢?可能原因之一是企業從業人員對Docker的學習認知並不夠。之二是目前市面上Docker的容器編排系統很多,常見的就有K8s,Mesos,Swarm,Rancher,Newben,編排系統的學習和認知成本也進一步提升了企業應用Docker的難度。

企業為什麼要使用Docker

這個問題的本質是企業用Docker究竟能做什麼,要回答這個問題,需要我們回歸到Docker本身來分析。Docker本身只是提供了一個運行環境,除了把服務跑起來之外,要讓多個服務容器協同起來工作,實際還需要一個容器編排系統。一般來說企業期望編排系統能説明實現如下幾個目的:

 定義服務棧

提供一種機制,可以用設定檔來定義服務的網路埠,鏡像及版本,

在需要的時候通過配置可再現的創建出一整套服務。

 服務發現、註冊和登出

需要在創建服務後自動創建DNS記錄用於訪問相關容器,容器狀態健康後註冊SRV資訊。

 健康檢查

可以精細化控制服務註冊時機,以支援容器正常啟動後的初始化完成後再註冊服務,以對外提供穩定可用的服務。

 自動擴容和縮容

即時監測容器CPU和記憶體使用情況,當容器平均性能指標超過閾值一段時間後啟動自動擴容,

創建更多容器以達到閾值要求,當沒有主機資源運行新容器時,自動申請新主機。當一段時間負載持續低於閾值啟動縮容優先刪除新創建容器和主機,以釋放資源和降低運營成本。

 合理的調度

要求最大限度的榨取主機資源避免浪費,並可實現快速的創建容器,減少鏡像拉取時間和磁碟空間浪費。

 負載均衡和高可用

使用Docker的三個階段

根據我們的觀察,

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

 階段一:利用開源工具實現一定功能

由於一個Docker容器只是一個(或一組)進程的封裝,一個容器需要綁定宿主機的埠來向宿主機之外的網路提供服務,為了避免埠衝突,對於需要暴露埠的容器,Docker會隨機綁定一個宿主機埠,這個時候就需要服務發現來説明不同機器上的服務來進行通信了。舉例一個簡單的方案:Docker-discover和Docker-register。

這個方案提供了一套系統的幾個基本功能:應用發佈,服務發現,負載均衡和進程守護。除了提供一致的運行環境使服務的發佈和回滾比較可控,這套簡單的系統在發佈流程上還是像傳統運維一樣需要遠端執行腳本,功能比較簡單,適用於小企業,隨著後端系統成長起來,很快就不夠用了。

 階段二:開源容器編排工具

第二個階段是選擇開源容器編排框架來管理,常見的開源容器編排工具有Kubernetes,Swarm和Mesos 。市面上也有同時支持這三種開源容器編排引擎的容器管理打包方案,通常作為入門級容器管理平臺使用。這種入門級的方案雖然是開源的,但技術上的文檔明顯欠缺,社區中的使用難題也很少有公司之外的contributor,當暴露一些難題的時候就很難解決,這點和Kubernetes有很大不同。

Kubernetes提供的是一個框架,要求使用者對他的元件有一定程度瞭解,使用之前需要不少配置工作,對Docker入門者來說,學習能力要求很高,不過好在社區有各種contributor,提供了很多幫助部署的installer。除了對學習能力有要求以外,對中小企業來說,對基礎設施的投入肯定不如大企業,一般沒有專人去熟悉Kubernetes這種大型開源項目。

當然,像Kubernetes這樣的容器編排系統本身很複雜,體量很大,很多企業也出現過當丟包嚴重的時候問題排查起來很困難的局面,畢竟要深入到龐大的代碼中定位問題本身就是件很不容易的事情。

雖然現在Kubernetes是容器調度主力軍,但我們認為調度引擎是容器最核心的模組,在PaaS這個關鍵的雲計算領域不應該由國外來主導,特別是在軍工、政務、金融等領域,我們需要自主研發的調度引擎,只有這樣我們才能掌握雲計算基礎架構的核心技術。於是就有了第三個階段的使用建議:高定制化的容器雲平臺。

基於Docker的PaaS/CaaS平臺

為了適應國內的企業需求,出現了很多運用Docker開源調度框架的容器雲平臺,這些平臺大都有一個特點:“服務當地語系化,核心開源化”。我們認為這並不是真正的當地語系化,真正的當地語系化應該是在滿足不同領域不同企業的上雲和轉型需求的同時能隨時回應定制化需求。基於這樣的思想,被稱為“中國的K8s”的容器調度引擎Newben應運而生。

Newben是精靈雲全自主研發的容器調度引擎,也是目前國內唯一自研引擎,具備多項技術專利和著作專利,定制能力強、支撐功能豐富,能為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能。如下圖所示,將Newben、K8s、Mesos和Swarm進行詳細對比,會發現Newben事實上吸取了各開源調度引擎的長處,在網路、服務發現、負載均衡、彈性伸縮、高可用、CI/CD集成、鏡像集成、日誌監控等方面都有著非常大的優勢。

(Newben和開源容器調度框架的對比)

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

(EcOS的平臺架構)

Ghostcloud EcOS的應用場景

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

(EcOS應用場景)

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

面對這些需求,需要從幾個方面解決:

• 整合系統內部資源,推行基於容器的開發、測試、生產和運維一體的PaaS平臺;

• 推行DevOps,開發運維一體化,降低運維成本;

• 推行敏捷和CI/CD,加快系統交付和部署;

• 使用基於容器的彈性負載均衡系統,適配突發流量;

• 加固開源容器系統,對鏡像及鏡像倉庫進行私有化定制。

在具體的實施中,使用EcOS容器雲平臺,對倉庫和鏡像進行加固,在內網和公網環境混合管理做安全隔離,借助平臺自帶的CI/CD流程,標準化研發流程;借助EcOS的資源調度框架,動態資源調配。通過容器只暴露特定埠,提升了整個系統的安全性,系統開發速度和上線速度大幅度提升,團隊整體回應速度也大幅度提升。通過商用Docker雲平臺,提升了IT部門的技術能力,更好的適應了未來業務發展需求,物理資源利用率提升,能夠很好的應對突發的流量暴增,在有限資源下提升了系統併發量。

結語

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

舉例一個簡單的方案:Docker-discover和Docker-register。

這個方案提供了一套系統的幾個基本功能:應用發佈,服務發現,負載均衡和進程守護。除了提供一致的運行環境使服務的發佈和回滾比較可控,這套簡單的系統在發佈流程上還是像傳統運維一樣需要遠端執行腳本,功能比較簡單,適用於小企業,隨著後端系統成長起來,很快就不夠用了。

 階段二:開源容器編排工具

第二個階段是選擇開源容器編排框架來管理,常見的開源容器編排工具有Kubernetes,Swarm和Mesos 。市面上也有同時支持這三種開源容器編排引擎的容器管理打包方案,通常作為入門級容器管理平臺使用。這種入門級的方案雖然是開源的,但技術上的文檔明顯欠缺,社區中的使用難題也很少有公司之外的contributor,當暴露一些難題的時候就很難解決,這點和Kubernetes有很大不同。

Kubernetes提供的是一個框架,要求使用者對他的元件有一定程度瞭解,使用之前需要不少配置工作,對Docker入門者來說,學習能力要求很高,不過好在社區有各種contributor,提供了很多幫助部署的installer。除了對學習能力有要求以外,對中小企業來說,對基礎設施的投入肯定不如大企業,一般沒有專人去熟悉Kubernetes這種大型開源項目。

當然,像Kubernetes這樣的容器編排系統本身很複雜,體量很大,很多企業也出現過當丟包嚴重的時候問題排查起來很困難的局面,畢竟要深入到龐大的代碼中定位問題本身就是件很不容易的事情。

雖然現在Kubernetes是容器調度主力軍,但我們認為調度引擎是容器最核心的模組,在PaaS這個關鍵的雲計算領域不應該由國外來主導,特別是在軍工、政務、金融等領域,我們需要自主研發的調度引擎,只有這樣我們才能掌握雲計算基礎架構的核心技術。於是就有了第三個階段的使用建議:高定制化的容器雲平臺。

基於Docker的PaaS/CaaS平臺

為了適應國內的企業需求,出現了很多運用Docker開源調度框架的容器雲平臺,這些平臺大都有一個特點:“服務當地語系化,核心開源化”。我們認為這並不是真正的當地語系化,真正的當地語系化應該是在滿足不同領域不同企業的上雲和轉型需求的同時能隨時回應定制化需求。基於這樣的思想,被稱為“中國的K8s”的容器調度引擎Newben應運而生。

Newben是精靈雲全自主研發的容器調度引擎,也是目前國內唯一自研引擎,具備多項技術專利和著作專利,定制能力強、支撐功能豐富,能為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能。如下圖所示,將Newben、K8s、Mesos和Swarm進行詳細對比,會發現Newben事實上吸取了各開源調度引擎的長處,在網路、服務發現、負載均衡、彈性伸縮、高可用、CI/CD集成、鏡像集成、日誌監控等方面都有著非常大的優勢。

(Newben和開源容器調度框架的對比)

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

(EcOS的平臺架構)

Ghostcloud EcOS的應用場景

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

(EcOS應用場景)

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

面對這些需求,需要從幾個方面解決:

• 整合系統內部資源,推行基於容器的開發、測試、生產和運維一體的PaaS平臺;

• 推行DevOps,開發運維一體化,降低運維成本;

• 推行敏捷和CI/CD,加快系統交付和部署;

• 使用基於容器的彈性負載均衡系統,適配突發流量;

• 加固開源容器系統,對鏡像及鏡像倉庫進行私有化定制。

在具體的實施中,使用EcOS容器雲平臺,對倉庫和鏡像進行加固,在內網和公網環境混合管理做安全隔離,借助平臺自帶的CI/CD流程,標準化研發流程;借助EcOS的資源調度框架,動態資源調配。通過容器只暴露特定埠,提升了整個系統的安全性,系統開發速度和上線速度大幅度提升,團隊整體回應速度也大幅度提升。通過商用Docker雲平臺,提升了IT部門的技術能力,更好的適應了未來業務發展需求,物理資源利用率提升,能夠很好的應對突發的流量暴增,在有限資源下提升了系統併發量。

結語

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