1. 程式人生 > >中移蘇研DCOS實踐之路完整篇

中移蘇研DCOS實踐之路完整篇

一、實踐背景

1.1現網生產系統存在的問題

在中國移動內部各省市公司,因為技術迭代、裝置更新的原因,裝置繁雜,有x86伺服器 、VMware虛擬機器、OpenStack虛擬機器以及不同廠商的物理機(如IBM Power伺服器),裝置與系統各異,無法整合。在資源充裕的情況下,卻面臨著機器不夠用,資源利用率低的困境。

具體來講,客戶面臨的難題有以下幾點:

①、機器資源利用率低

資料中心擁有多套業務系統執行,開發、測試到最終的產品釋出,每套系統使用獨立的伺服器或虛擬機器用於部署。

②機器管理成本不斷攀升

伺服器和虛擬機器的數量太多難以管理,新伺服器和應用的部署時間長,硬體維護需要數天/周的變更管理準備和數小時的維護視窗。

④、應用部署、管理、運維和升級難度大:

應用廠商眾多,架構差異較大,應用部署、上線、擴容對資源需求不同,應用生命週期的管理難度大,導致運維成本居高不下。

因此,隨著資料中心應用和使用者對資源的需求的多樣化,需要一個類似“作業系統”的統一資源管理系統來整合與協調各類資源,提升資源複用率,為客戶解決現網生產系統存在的問題。

資料中心作業系統(DataCenter Operating System,簡稱DCOS)是為整個資料中心提供分散式排程與協調功能,實現資料中心級彈性伸縮能力的軟體棧(software stack)。主要功能為:

1) 為整個資料中心提供分散式排程與協調功能,統一協調各類資源,實現資料中心級的彈性伸縮能力。

2) 提供一個高效率、可靠、安全的管理資料中心的平臺,確保各類資源隨著應用的需求動態排程,同時簡化應用程式的開發、部署難度。

1.2 DCOS理解

狹義DCOS:軟體定義資料中心的具體實現(特指Mesos),將資料中心中的資源聚合,支援多種計算框架並行執行,提高資源利用率,實現資料中心級彈性伸縮能力,將資料中心抽象為一臺巨型計算機供使用者使用。

廣義資料中心作業系統(DCOS):實現軟體定義資料中心概念的軟體組合,介於IaaS層與PaaS層,將資源從資料中心擴充套件到公有云、私有云,實現跨雲的彈性伸縮能力,真正實現“小云”聚合成“大雲”。

資料中心作業系統旨在提供一個通用的標準化運維繫統,高效率可靠安全地管理資料中心,同時簡化應用程式的開發、部署難度,協調各類資源,確保各類資源隨著應用的需求動態排程。

資料中心作業系統的特徵包括彈性伸縮、應用管理、敏捷、高可用等。

1

圖1.1

1.3 DCOS發展歷程

早在十多年前,Google就開始使用第一代叢集管理Borg技術管理資料中心。

2009年加州大學伯克利分校AMPLab首先開發出Apache Mesos,這是一款開源叢集管理軟體,其核心研發成員Benjamin Hindman隨後將其引入Twitter,於是Twitter、Facebook、蘋果等大型IT企業開始陸續打造結合自身業務特點的基於Mesos的資料中心管理方案。

2012年,圍繞Mesos開展商業活動的初創公司Mesosphere誕生。正是該公司提出了基於Mesos的DCOS,希望企業能像使用一臺計算機一樣使用整個資料中心。Mesos是目前應用最廣泛的資源管理系統。

二、蘇研DCOS方案

2.1 技術選型

Mesos由加州大學伯克利分校AMPLab開發,後在Twitter推廣使用,被廣泛用作資料中心作業系統的kernel。Mesos架構如圖2.1所示。Mesos中將任務排程和資源分配相分離。任務排程是Mesos的核心,而排程框架則負責實現具體的任務排程。Mesos架構中包含了Master和Slave節點。Mesos Master負責將資源分配給各個框架(如Hadoop框架),而各個框架的Scheduler進一步將資源分配給各個Mesos Slave節點並通知Mesos Slave執行相關Task任務,Mesos Slave接到通知後根據各個框架的Executor最終執行相關Task任務。

2

圖2.1

Marathon 是一個 mesos 框架,能夠支援執行長服務,比如 web 應用 等。是叢集的分散式 Init.d,能夠原樣執行任何 Linux 二進位制釋出版本, 如 Tomcat Play 等等,可以叢集的多程序管理,實現服務的發現,為部 署提供提供 REST API 服務,SSL 與基礎認證、配置約束,通過 HAProxy、 DNS 實現服務發現和負載平衡,可定製化監控策略實現 Task(一個 App 對應多個 Task)的自動擴縮 。

2.2 技術架構

以開源技術Mesos 、Marathon 、Docker、HAProxy為基礎,在其上開發了DCOS控制檯、資源管理模組、鑑權模組、統一日誌中心、彈性擴縮容排程模組、監控管理模組、持續整合平臺、應用映象管理模組。DCOS的軟體棧與功能模組如下:

3

Mesos:作為DCOS的核心元件之一,作用相當於Linux核心,管理著資料中心所有的CPU、記憶體以及儲存等物理資源,實現資源的統一管理和分配。

Marathon:作為DCOS基礎元件之一,相當於Linux中Iinit/systemd程序,管理DCOS中其他的軟體包,實現安裝、解除安裝其他框架和應用的功能。

Haproxy、Etcd、confd:使用ETC的和confd實現DCOS內應用的服務自動註冊與發現,配合使用Haproxy作為負載均衡器,實現應用的動態引流和負載均衡。

Kubernetes: Kubernetes是google開源的容器編排系統,現已能夠作為Mesos的框架很好地與Mesos融合使用,在蘇研的方案中也作為一個可選的元件供使用者使用。

大資料服務框架:此外還可以在DCOS執行一些大資料框架如kafka、spark、hadoop,用於大資料的處理與分析;

DCOS Manager Platform:DCOS核心如基礎軟體MESOS和Marathon對管理員和使用者透明,並不直接操作。所有使用者通過DCOS Manager Platform進行操作,管理DCOS中所有應用的生命週期和資料中心的運維。這樣的設計保證了底層軟體的變更不會過多的影響使用者的使用習慣。

其他:如chronos,用於批處理任務的執行。

DCOS具有的優勢在於:

①、資源整合 ,提高資源利用率;通過Mesos單資料中心物理資源整合成“巨型計算機”;通過Mesos將“小云“整合成”大雲”

②、容器化,通過Docker將應用容器化

③、跨資料中心和混合雲,通過Mesos實現跨資料中心的PaaS和SaaS

④、跨平臺,通過容器映象(Docker hub)倉庫,實現應用的跨平臺部署和執行

⑤、容錯與擴充套件,更高效的管理系統,支援應用的橫向擴充套件;如果一臺伺服器發生故障,它的工作負載可以自動遷移到別的地方

⑥、應用部署便捷、管理高效,利用容器封裝,實現多種框架任務之間的隔離。保證應用的快速啟動(ms級別),一次打包,到處執行,實現應用的自由遷移。

2.3 應用遷移改造實踐

應用從狀態的角度劃分,主要分為:有狀態應用與無狀態應用。無狀態請求是每個請求都是與之前任何請求都無關的獨立事務;有狀態應用是HTTP協議與session、cookies等狀態機制以及其他輔助的機制。

從資料流向的層次劃分,可以分為:web前端、中間層、業務邏輯層與資料持久化層。

web server無狀態的兩種實現:

①、將狀態放到請求中或者採用無狀態的session,cookies框架,對應用開發有要求

②、將session等集中儲存,增加session共享儲存層,從而使得Web Server無狀態

中間層:絕大多數中介軟體都不涉及狀態

業務層:雖然會去讀取session中的狀態,但是絕大多數業務層自身都不涉及狀態

資料持久化儲存:儲存本身就是對某種狀態的記錄,所以可以理解成帶有狀態的

應用容器化或者應用向DCOS遷移的前提條件是:無狀態應用或者是有狀態應用的無狀態模組。

電渠業務活動系統具備典型的三層架構特徵,WEB層及APP層基本採用分散式技術實現,具備進行DCOS平臺應用的前提條件,DB層本次暫不予考慮。

4

目前應用改造的注意點:

①、快取伺服器、資料庫等,需要以環境變數的方式傳遞,而不能寫在程式碼中。

②、應用層級通訊時使用服務發現功能,不使用IP

③、docker映象功能單一、追求極簡

④、應用監聽埠使用固定埠

⑤、資料儲存放在外部

⑥、容器執行程序單一化

三、後期規劃

目前DCOS不支援儲存容器化方案,需要完成儲存容器化功能,並推進彈性排程功能,資源隔離、複雜應用編排等功能。同時對Kubernetes、Swarm與Mesos的整合方案進行跟蹤、測試和比較,構建高效穩定的DCOS平臺能力。

本文作者:中移蘇研-鄒能人、曹高晉

如果想了解更多蘇研DCOS相關的資訊,請關注微信!

qrcode_for_gh_f74128c040ae_430(1)