客服系統(tǒng)mesos/marathon遷移到DC/OS的探索(1)

我們客服系統(tǒng)使用mesos/marathon來管理springboot微服務(wù)已經(jīng)有一年半了,沒出現(xiàn)過任何故障,運行十分穩(wěn)定涂召。在這期間, 基于mesos/marathon開發(fā)的DCOS又提供了很多新特性還有豐富的framework, e.g. Cassandra,ES,mr-redis,mq等framework麻捻,這些framework都實現(xiàn)了高可用,快速擴容縮容兼蕊。其中mr-redis提供的高可用初厚,主從自動切換,快速部署等特性允許我們重新定義redis的運維方式孙技,可以減少很多工作量产禾,所以我們在考慮把mesos/marathon遷移到DCOS。

在今年6月北京國家會議中心的MesosCon大會上牵啦,通過講師們的深入講解亚情,讓我對DCOS有了進一步了解,于是就想在我們的系統(tǒng)中嘗試一下DCOS......

先說明一下我們客服系統(tǒng)是如何使用mesos/marathon的哈雏,還有使用過程中遇到的相關(guān)問題

  • 使用方式

      github -> nexus-> marathon shell pull jar && run jar (`mesos container
      a.k.a unified container`)
    
      1. 開發(fā)提交代碼到github, build出的package自動傳到nexus
    
         最初我們也嘗試過用docker來部署楞件,當時在build出jar包的同時會build一個對應(yīng)docker
         image,并傳到私有的docker registry, 但是這個嚴重拖延了部署時間, 最后我們選擇
         直接部署jar包,即使用mesos container裳瘪,這種方式提高了部署效率
    
      2. marathon中的task會從nexus下載jar包土浸,然后通過shell命令直接運行,整個運行環(huán)境
         是受cgroups的isolator限制的
    
    
  • 問題

1. mesos container 運行springboot程序的部署方式在dcos上是否可行彭羹?(之前我一直以為
    dcos只支持docker)
    
2. 曾經(jīng)服務(wù)升級過程中遇到的一個坑黄伊,新版本的服務(wù)部署過程中由于配置或者起他未知問題hang
    住無法啟動成功,于是我手動kill了hang住的task皆怕,但是之前運行正常的服務(wù)task也被kill
    了, 因此 nginx 對應(yīng)的接口報了502, 整個服務(wù)不可用毅舆。這種情況為什么會發(fā)生?

我也是帶著這2個問題來參加MesosCon會議的,幸運的是會議上Mesosphere公司的工程師J?rg Schad愈腾, Vinod Kone & Gregory Mann在問答階段解釋了這2個問題:

     第一個問題答案: Schad 回答說DCOS支持原生的mesos container, 同時也支持
     universal container, 大家也稱原生的container為unified container, 這么多
     稱呼很容易讓人迷惑憋活。聽到這個答案后我就覺得mesos/marathon 遷移到dcos完全可行。
    
     第二個問題答案:Vinod Kone & Gregory Mann在講解Executor 生命周期的過程中提到
     了Task group, task是如何工作的虱黄, 同一個Task group 里的task認為都是相同的悦即,如
     果新加的task 健康檢查沒有通過,整個Task group里的task都會被kill掉。 這個特性就
     解釋了我們在升級sprintboot服務(wù)Webapp從v1到v2版本過程中v2啟動有問題辜梳,手動kill后粱甫,
     所有的 webapp服務(wù)都被kill, nginx直接返回502. Vinod Kone & Gregory Mann 解
     釋說他們也從用戶收到新的需求更改Task group管理task的這種方式,

     但是這個pr還沒有排期作瞄,所以我們只能通過比較tricky的方式來解決茶宵,e.g: 當發(fā)現(xiàn)Task 
     group A中的新版服務(wù)無法正常啟動的時候,我們可以另外新建一個Task group B來部署舊
     版服務(wù)宗挥,等這個Task group B 中的task通過健康檢測可以提供服務(wù)的時候,再手動kill掉
     Task group A的服務(wù)并分析原因乌庶,這樣就會保證 Webapp 這個服務(wù)一直是可用的。

經(jīng)過MesosCon會議中的學(xué)習契耿,回到公司以后瞒大,我就簡單閱讀了一下DCOS文檔并搭建了一套環(huán)境來做測試 , 也有了初步的結(jié)論,即遷移到DCOS有好處也有壞處搪桂,需要針對不同場景需求作出取舍透敌。

阿里云ECS server節(jié)點配置

  • 1個bootstrap節(jié)點 (2 core, 16G, SSD)
  • 1個master節(jié)點 (4 core, 16G, SSD)
  • 2個agent節(jié)點 (4 core, 16G, SSD)

部署試驗

當dcos部署以后,我遷移了一個crm的sprintboot 程序到dcos, 部署過程中突然發(fā)現(xiàn)啟動時間增加了很多踢械,于是就分場景做了測試

  1. ECS直接run crm.jar

  2. marathon shell 部署crm.jar

  3. dcos 使用mesos-container部署crm.jar

  4. 在使用marathon和dcos部署過程中對cpu的配額做了微調(diào)

下面是記錄了jar的啟動時間如下:

Service ECS bare runtime Mesos/Marathon runtime DC/OS
CRM (1 cpu, 756MB mem) 35s 38s 100s
CRM (0.5 cpu, 756MB mem) 35s 40s 200s

試驗總結(jié):

  • Marathon即使設(shè)置了isolator (cpu/cgroups,mem/cgroups)酗电,在jar啟動過程中(a.k.a container創(chuàng)建的過程), cgroups的limit 并沒有生效, 所以0.5 cpu和 1個cpu對啟動時間沒有什么影響裸燎。

這個特性也保證了jar能很快的啟動顾瞻,即使比起在ecs直接起jar也慢不了太多。

  • DCOS 啟動這么慢和cpu的配額有一部分原因德绿,從結(jié)果可以推斷dcos在container創(chuàng)建中對資源做了限制荷荤。

這個特性嚴格限制了資源的使用率,對控制服務(wù)器的load有好處移稳,但是dcos啟動jar的時間還是很慢蕴纳,這個時間差對SLA來講卻是至關(guān)重要的

我們可以用到的dcos特性

  • pod特性
    pod把多個container可以看成一個服務(wù),可以共享network, health check 等个粱,如果一個container有問題古毛,會全部重啟,或者整體遷移到另外的節(jié)點重新部署, 對有依賴的服務(wù)來說這個特性很有幫助都许,這幾個有依賴的服務(wù)可以直接通過localhost:port 來訪問稻薇,提供了訪問速度。

  • dashboard
    可以查看整個集群的資源使用情況胶征,相比原生的監(jiān)控塞椎,這個界面更友好,而且都整合到一個平臺睛低,方便運維人員查看案狠。

  • dcos cli

    dcos讓習慣通過terminal來管理系統(tǒng)的運維人員能更方便快捷的來管理整個集群服傍。

最后總結(jié)

DCOS啟動jar慢可能與dcos加了很多起他組件(security)有關(guān),在沒有完全搞清楚為什么啟動慢之前骂铁,暫時我們先不會把mesos/marathon上的服務(wù)遷移到DCOS上吹零,畢竟SLA更重要。

下一步計劃

準備把mr-redis(https://github.com/mesos/mr-redis)這個framework porting到當前的mesos/marathon中拉庵,這樣就解決了快速部署和高可用的需求灿椅,現(xiàn)在已經(jīng)完成了一部分工作,等全部完成后會再分享出來


Note: 對于dcos啟動jar慢的問題钞支,歡迎大家提建議阱扬,一起討論一起學(xué)習...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伸辟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馍刮,老刑警劉巖信夫,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卡啰,居然都是意外死亡静稻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門匈辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來振湾,“玉大人,你說我怎么就攤上這事亡脸⊙禾拢” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵浅碾,是天一觀的道長大州。 經(jīng)常有香客問我,道長垂谢,這世上最難降的妖魔是什么厦画? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮滥朱,結(jié)果婚禮上根暑,老公的妹妹穿的比我還像新娘。我一直安慰自己徙邻,他們只是感情好排嫌,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹃栽,像睡著了一般躏率。 火紅的嫁衣襯著肌膚如雪躯畴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天薇芝,我揣著相機與錄音蓬抄,去河邊找鬼。 笑死夯到,一個胖子當著我的面吹牛嚷缭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耍贾,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阅爽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荐开?” 一聲冷哼從身側(cè)響起付翁,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晃听,沒想到半個月后百侧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡能扒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年佣渴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片初斑。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辛润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出见秤,到底是詐尸還是另有隱情砂竖,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布鹃答,位于F島的核電站晦溪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挣跋。R本人自食惡果不足惜三圆,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望避咆。 院中可真熱鬧舟肉,春花似錦、人聲如沸查库。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽樊销。三九已至整慎,卻和暖如春脏款,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裤园。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工撤师, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拧揽。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓剃盾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淤袜。 傳聞我的和親對象是個殘疾皇子痒谴,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容