1.前言

    Mirantis 公司在2014年9月14日宣布收購 TCPCloud,然后宣布在2017年第一季度會推出全新的私有云產(chǎn)品。從那時候開始,我就一直滿懷期待。終于,今年4月19日,Mirantis 宣布推出全新的 MCP 1.0。本文根據(jù)公開的文檔,試著對該產(chǎn)品做些分析和總結(jié),并且展望一下其未來。因為只是看文檔和視頻,并沒有進行實際部署和操作,因此,可能有一些錯誤。本文會持續(xù)進行更新。

2. MCP 1.0 概況

2.1 MCP 1.0 的組成

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

 

MCP 1.0 主要包括三大部分:

  • DriveTrain:即部署和變更系統(tǒng),用于整個平臺的部署(Day 1)和部署后的變更(Day 2)。

  • 云系統(tǒng):包括支持物理機和虛機的 OpenStack,支持容器的 Kubernetes,分布式塊和對象存儲 Ceph,面向 OpenStack 集群的SDN OpenContrail,面向 Kubernetes 的 SDN Calico。

  • StackLight:即日志、監(jiān)控和告警系統(tǒng),為云平臺提供運維支持。

2.2 設(shè)計出發(fā)點

Mirantis 設(shè)計 MCP 1.0 的出發(fā)點包括但不限于:

  • 基礎(chǔ)架構(gòu)的消費模式是由公有云定義的,它的主要特征包括 API 驅(qū)動(API driven)、持續(xù)交付(continuously delivered)和托管模式(managed)。因此,MCP 1.0 就由之前的以安裝為中心的架構(gòu)(installer-centric architecture)變?yōu)橐赃\維為中心的架構(gòu)(operations-centric architecture)。

  • 面向各種工作負載的統(tǒng)一云平臺,包括為遷移到云上的傳統(tǒng)應用(cloud hosted)提供虛機和裸機;為已經(jīng)為云做過優(yōu)化的應用(cloud optimized)提供虛機;為云原生應用(cloud native)提供虛機和容器。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

 

 

  • 變更不再以6到12個月為周期,而是以周為周期進行小迭代(minor increments)而持續(xù)發(fā)生。

3. MCP 1.0 具體

下面具體分析 MCP 1.0 中的具體組件。

3.1 DriveTrain

3.1.1 概況

(1)理念:Infrasture-as-code 基礎(chǔ)架構(gòu)即代碼,將基礎(chǔ)架構(gòu)代碼化。

(2)目標:支持 Day 1 定制化安裝和 Day 2 部署后配置,包括功能和架構(gòu)變更。

(3)方法:采用 CI/CD 工具和流程,實現(xiàn) DevOps 模式。

(4)支持:當前支持 OpenStack 集群和 Kubernets 集群,將來會增加更多集群支持。

(5)界面:DriveTrain 的界面集成在 DevOps 界面中。

3.1.2 組件

DriveTrain 是 DevOps 形式的云平臺部署和配置系統(tǒng)。它主要包括以下生命周期管理工具:

  • SaltStack + Reclass:SlatStack 類似Puppet 和 Chef,提供配置管理和 MCP 集群的部署和變更;Reclass 結(jié)合 SaltStack 使用。

  • Gerrit:提供 Git 庫和代碼檢視管理系統(tǒng),保存源代碼、SaltStack 程序(formulas)、Reclass 模型(models)。

  • Jenkins:job 自動化工具。它檢測提交到 Gerrit 的針對 MCP 集群配置的變化,然后通過執(zhí)行一系列 jobs,將相應的 SaltStack 程序和Reclass 模型應用到 MCP 集群。

  • MCP Registry:保存 MCP 集群所需的軟件庫,比如 Docker 鏡像、Debian 包等。

3.1.3 部署

要部署DriveTrain,至少需要3個虛機。它的組件運行在由 Docker Swarm 管理的容器之中。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

  • 使用三節(jié)點 Docker Swarm 部署模式,每個 DriveTrain 組件運行在 Docker Swarm 容器中,確保提供高可用的服務(wù)。(mysql 如何運行在容器中,沒有具體說明)

  • 使用 GlusterFS 共享文件系統(tǒng)作為共享存儲

  • 使用 Keepalived 對各個 service 提供 HA VIP

  • 使用 nginx 提供公網(wǎng)訪問能力

3.1.4 CI/CD 流程

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

  1. 當運維人員要進行 MCP 部署或者變更時,他首先在 Gerrit 中提交 SaltStack 程序 或者 Reclass 模型的代碼檢視申請。

  2. 代碼檢視結(jié)束后,根據(jù)配置的不同(有沒有staging環(huán)境),觸發(fā)Jenkins 相應的變更 job。

  3. Jenkins job 從 Jenkins 中獲取SaltStack 程序 或者 Reclass 模型的代碼,以及從  MCP 庫中獲取二進制文件。

  4. SaltStack 將更改應用到 MCP 集群 

3.1.5 簡單分析

與Mirantis之前的 Fuel 做比較,

  • Fuel 使用 Puppet 來做配置管理,現(xiàn)在改為使用 SlatStack,應該是吸收了 TCPCloud 的成果。在 Github 上有看到有大量的 TCPCloud 寫的 Slat 程序,比如 https://github.com/tcpcloud。

  • Fuel 主要是在 Day 1 部署,而 DriveTrain 則 Day 1 部署和 Day 2 變更并重。當然,現(xiàn)在的 Day 2 變更主要還只是做一些小的變更,比如安全補丁之類的。但是,長期看,兩者都是必須的。

  • 客戶有了 DriveTrain 并接受了培訓之后,就可以自動地進行變更了,這為 Mirantis 推行新的 build-operate-transfer 交付模式提供了產(chǎn)品基礎(chǔ)。

3.2 MCP 集群

MCP 1.0 支持 OpenStack 集群和 Kubernetes 集群。

3.2.1 OpenStack 集群

一個部署實例:

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

MCP OpenStack 集群的特點:

  • 采用 DriveTrain 進行部署和變更

  • 使用 StackLight 作為 LMA(Logging, Metering, Alerting) 系統(tǒng)

  • 每個組件使用多個分布在不同物理服務(wù)器上的虛機來實現(xiàn)高可用

  • SDN 支持 OpenContrail 或者 Neutron OVS,前者是推薦配置

  • 推薦采用 Ceph 做塊和對象存儲。

  • 支持多種 OpenStack 服務(wù),支持物理機和虛機:

  • 大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓 

3.2.2 Kubernetes 集群

MCP 1.0 支持單獨部署一個 K8S 集群,也支持在 OpenStack 集群旁邊部署一個 K8S 集群。一個部署示例如下:

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

特點:

  • K8S 集群和 OpenStack 集群目前沒有關(guān)聯(lián)。

  • 采用 Calico 作為SDN。使用 OpenContrail 處于 technical preview 狀態(tài),也就是測試可用,但生產(chǎn)別用。

  • 采用 Ceph 提供卷。

  • 采用 DriveTrain 進行集群部署和變更。

  • 典型地,K8S 集群會部署在裸金屬服務(wù)器上。MCP 采用基于 Ironic 的 MaaS 組件來準備物理環(huán)境。

3.2.3 簡單分析

  • MCP 中的 OpenStack 和 K8S 集群目前是獨立的,兩者之間沒有關(guān)聯(lián)

  • OpenStack 和 K8S 集群使用同一的部署和配置工具 DriveTrain,以及 LMA 工具 StackLight。

  • Mirantis 強調(diào) 100% 開源。 

 3.3 StackLight

MCP StackLight 是 Mirantis 的日志(收集、分析、可視化)、監(jiān)控(包括設(shè)備,服務(wù),和租戶資源等)和告警系統(tǒng)。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.3.1 功能匯總

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.3.2 總體架構(gòu)

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.3.2 日志(logging)

(1)日志收集目標包括:

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

(2)特點

  • 采用 Heka 作為日志收集器。它被安裝在MCP集群的每個節(jié)點上,負責收集這些節(jié)點上的日志。

  • 采用 ElasticSearch 作為日志存儲

  • 使用 Kabana 作可視化

  • 大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.3.3 監(jiān)控 (Metering)

特點:

  • 包括云物理環(huán)境監(jiān)控和租戶環(huán)境監(jiān)控。

  • 租戶資源監(jiān)控基于 Ceilometer。它將監(jiān)控指標數(shù)據(jù)保存在 InfluxDB 中,將資源數(shù)據(jù)保存在 Elasticsearch 中。

  • 采用 InfluxDB 時間序列數(shù)據(jù)庫保存監(jiān)控數(shù)據(jù)

  • 采用 Grafana 作為可視化

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

 

3.3.4 告警(Altering)

 特點:

  • 采用  Sensu 和 Uchiwa,支持集群

  • 支持通過標準協(xié)議將告警導向第三方系統(tǒng)

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.4 DevOps Portal

MCP 1.0 還提供了處于技術(shù)預覽狀態(tài)的 DevOps 界面。它是 MCP 管理員的主要入口。它的主要內(nèi)容有:

  • 通過各種圖標和狀態(tài)等展示云環(huán)境的各種信息

  • 提供鏈接到其它工具的鏈接,包括 Grafana,Kibana 和 Rundeck等。

3.4.1 架構(gòu)

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

3.4.2 Cloud Intelligence Service (CIS,云智能服務(wù))

CIS 包括一系列用于收集系統(tǒng)信息的收集器(collectors),包括 OpenStack 集群和MaaS 等等。CIS 保存這些信息,跟蹤它們的變化,并進行分類。CIS 會查詢各種服務(wù)的API,并且連接到特定的數(shù)據(jù)庫去加速數(shù)據(jù)收集。盡管 CIS 的搜索功能很強大,但是它不能修改任何資源。

Runbooks 每隔5分鐘會運行這些收集器去收集各種信息,并保存到 ElasticSearch 中。

3.4.3 Cloud Health Service 服務(wù)(CHS,云狀態(tài)服務(wù))

CHS 也包括一組收集器,它們通過各種資源的通知來提供云的狀態(tài)概要,包括網(wǎng)絡(luò)、存儲、計算節(jié)點等。這些結(jié)果會被展示在 DevOps 界面中。

Runbook 會執(zhí)行 FCI,API 測試,并將數(shù)據(jù)保存在 LMA 中。DevOps 界面查詢 LMA,創(chuàng)建云狀態(tài)的各種圖表。云管理員監(jiān)控這些圖表。

3.4.4 Runbook 后端和UI

Runbooks Auotmation 是一個自動化服務(wù)。用戶可以在其UI中創(chuàng)建工作流任務(wù),這些任務(wù)會被定時或者周期性執(zhí)行。其它 OSS 組件會使用 Runbooks 服務(wù)來自動化執(zhí)行這些任務(wù),比如創(chuàng)建備份、監(jiān)控數(shù)據(jù)查詢、生成報表、云維護等等。Runbooks 是有 Rundeck 工具提供的,它使得用戶可以方便地添加 Rundeck 任務(wù),并將它們嵌入工作流。 Jenkins 和 SaltStack 主要用于部署和生命周期管理,Rundeck 則會幫助用戶執(zhí)行每天的運維和維護任務(wù)。

3.4.5 Capacity Management Serice (CMS, 容量管理服務(wù))

CMS 服務(wù)利用LMA 和 CIS 產(chǎn)生的數(shù)據(jù),提供多個界面來顯示云中的資源使用情況。它的內(nèi)容包括:

  • 按照可用區(qū)(AZ)分組的計算節(jié)點的 CPU 和內(nèi)存利用率

  • 在用內(nèi)存容量

  • 在用存儲容量

  • 計算節(jié)點總數(shù)

它的部分界面會集成到Horizon 中:

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

 3.5 多集群支持

3.5.1 DriveTrain 能支持多集群 

一套包含 SlatStack 和 Reclass 的 DriveTrain 環(huán)境能支持多集群的配置:

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

  • 一個 Service class 定義MCP 集群中的一個組件(component),比如 RabbitMQ,MySql 等。Service class 定義為 SlatStack 程序。

  • 一個 System class 定義 MCP 集群中的一個節(jié)點(node),比如控制節(jié)點和計算節(jié)點,以及部署在節(jié)點上的 service。

  • 一個 Cluster class 定義一個 MCP 集群,比如一個 demo OpenStack 集群,一個生產(chǎn) K8S 集群等。一個 cluster class 組合多個 system classes。

通過 DriveTrain 的 CI/CD 流程,管理員就可以定義、部署、維護多個 MCP 云環(huán)境。

3.5.2 StackLight 能支持多集群

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

 

 

4. 總結(jié)和展望

4.1 總結(jié)

根據(jù)上面的信息,對 Mirantis MCP 1.0 做個簡單的總結(jié):

  • 產(chǎn)品化思路非常直接:將合適用戶工作負載的云環(huán)境(當前是OpenStack環(huán)境和K8S環(huán)境)通過好用的部署和變更工具(DriveTrain)和 LMA 系統(tǒng)(StackLight)提供給用戶,使得這個產(chǎn)品既能解決業(yè)務(wù)需要,又好用。

  • OpenStack 地位確定:由神化(無所不能)回到人間(支持物理機和虛機),在整個 Mirantis 私有云產(chǎn)品中的分量由之前的 100% 下降到當前的 60%,將來應該會進一步下降。

  • OpenStack 功能得到聚焦:MCP 1.0 使用 Salt 而不是 OpenStack 自帶的 Magnum 項目來編排 K8S 集群,顯示出 Mirantis 有將 OpenStack 功能收縮到核心組件的趨勢,這應該和 Mirantis 減少 OpenStack 研發(fā)人員同時TCPCloud 團隊有非常強大的 SaltStack 能力有一定關(guān)系。

  • K8S 地位清晰:即定位在 CAAS 平臺。它既不能取代OpenStack,也不是 PAAS,而是在其該在的 CAAS 位置。

  • 強調(diào) Day 2 (部署后運維),推行 CI/CD 模式的自動化運維平臺。

  • 強調(diào) LMA (日志-監(jiān)控-告警),并強調(diào)事前分析告警。

4.2 展望

如本文標題,MCP 1.0 只是 Mirantis 新私有云產(chǎn)品的第一個版本,還處于 OpenStack 和  K8S 整合的第一步。不負責任地預測,將來 MCP 會:

(1)通過 OpenContrail 將 K8S 和 OpenStack 做進一步的整合,打通 物理機-虛機-容器 的網(wǎng)絡(luò)。這方面之前 TCPCloud 已經(jīng)有了很多的嘗試,相信將來會進一步利用起來。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

(2)進一步拓寬云產(chǎn)品棧,OpenStack 的分量會進一步下降,也許會到 30% 左右。

通過 DriveTrain 和 StackLight 支持更多的云產(chǎn)品,比如大數(shù)據(jù)、AI 等云技術(shù)棧。相信 Mirantis 也不會限于 OpenStack 和  K8S,而是會選擇更多的開源云產(chǎn)品。我們也許會看到 Mirantis 參與到更多的開源云項目中。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓 

(3)用戶體驗(UI)的進一步優(yōu)化,包括 DriveTrain UI, StackLight UI,DevOps 界面等的增強,以及多個界面之間的整合。

(4)DriveTrain 功能的進一步豐富。當前它更多的只能支持 Day 1 部署,將來會在 Day 2 部署后變更方面做增強,使它真正成為 DevOps 樣式的完整的系統(tǒng)。

 

http://www.cnblogs.com/sammyliu/p/6825522.html