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 的組成
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)提供虛機和容器。
變更不再以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 管理的容器之中。
使用三節(jié)點 Docker Swarm 部署模式,每個 DriveTrain 組件運行在 Docker Swarm 容器中,確保提供高可用的服務(wù)。(mysql 如何運行在容器中,沒有具體說明)
使用 GlusterFS 共享文件系統(tǒng)作為共享存儲
使用 Keepalived 對各個 service 提供 HA VIP
使用 nginx 提供公網(wǎng)訪問能力
3.1.4 CI/CD 流程
當運維人員要進行 MCP 部署或者變更時,他首先在 Gerrit 中提交 SaltStack 程序 或者 Reclass 模型的代碼檢視申請。
代碼檢視結(jié)束后,根據(jù)配置的不同(有沒有staging環(huán)境),觸發(fā)Jenkins 相應的變更 job。
Jenkins job 從 Jenkins 中獲取SaltStack 程序 或者 Reclass 模型的代碼,以及從 MCP 庫中獲取二進制文件。
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 集群
一個部署實例:
MCP OpenStack 集群的特點:
采用 DriveTrain 進行部署和變更
使用 StackLight 作為 LMA(Logging, Metering, Alerting) 系統(tǒng)
每個組件使用多個分布在不同物理服務(wù)器上的虛機來實現(xiàn)高可用
SDN 支持 OpenContrail 或者 Neutron OVS,前者是推薦配置
推薦采用 Ceph 做塊和對象存儲。
支持多種 OpenStack 服務(wù),支持物理機和虛機:
3.2.2 Kubernetes 集群
MCP 1.0 支持單獨部署一個 K8S 集群,也支持在 OpenStack 集群旁邊部署一個 K8S 集群。一個部署示例如下:
特點:
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)。
3.3.1 功能匯總
3.3.2 總體架構(gòu)
3.3.2 日志(logging)
(1)日志收集目標包括:
(2)特點
采用 Heka 作為日志收集器。它被安裝在MCP集群的每個節(jié)點上,負責收集這些節(jié)點上的日志。
采用 ElasticSearch 作為日志存儲
使用 Kabana 作可視化
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 作為可視化
3.3.4 告警(Altering)
特點:
采用 Sensu 和 Uchiwa,支持集群
支持通過標準協(xié)議將告警導向第三方系統(tǒ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)
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 中:
3.5 多集群支持
3.5.1 DriveTrain 能支持多集群
一套包含 SlatStack 和 Reclass 的 DriveTrain 環(huán)境能支持多集群的配置:
一個 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 能支持多集群
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)有了很多的嘗試,相信將來會進一步利用起來。
(2)進一步拓寬云產(chǎn)品棧,OpenStack 的分量會進一步下降,也許會到 30% 左右。
通過 DriveTrain 和 StackLight 支持更多的云產(chǎn)品,比如大數(shù)據(jù)、AI 等云技術(shù)棧。相信 Mirantis 也不會限于 OpenStack 和 K8S,而是會選擇更多的開源云產(chǎn)品。我們也許會看到 Mirantis 參與到更多的開源云項目中。
(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