日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DockOne微信分享( 九十):猎豹移动基于CoreOS在AWS上的项目实践

發(fā)布時間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DockOne微信分享( 九十):猎豹移动基于CoreOS在AWS上的项目实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本文講的是DockOne微信分享( 九十):獵豹移動基于CoreOS在AWS上的項目實踐【編者的話】本次分享介紹基于AWS的EC2服務(wù)如何設(shè)計和搭建適合自己業(yè)務(wù)的架構(gòu)方案實現(xiàn)全球多region部署,介紹模型案例:CoreOS的使用技巧與運維經(jīng)驗,把一個集群當(dāng)成一臺機(jī)器管理心得,包括:
  • 為什么選擇AWS和Docker
  • 為什么選擇CoreOS部署我們的應(yīng)用
  • CoreOS在AWS平臺上如何快速構(gòu)建集群并且進(jìn)行管理
  • 應(yīng)用過程中遇到的問題與解決方案

  • 1、為什么選擇AWS和Docker


    首先我先介紹一下獵豹移動的一些業(yè)務(wù),如圖, 我們在海外有著龐大的用戶群體,接近16E下載量,月活用戶4.94E,71%來自海外,戰(zhàn)略合作伙伴主要以阿里、百度、騰訊、小米……?

    這么大的海外用戶量我們是這么做業(yè)務(wù)部署和服務(wù)的呢?

    首先在選擇服務(wù)商的方面我們選擇了實力最強(qiáng)的亞馬遜AWS作為我們的云服務(wù)商,我們海外幾乎所有的服務(wù)都是架構(gòu)在AWS的平臺上面。

    這給我們帶來了什么好處呢,總結(jié)起來有3點:
  • 便捷的全球化部署
    因為我們的用戶遍布全球,所以便捷的全球化部署是我們非常看重的,我們使用了AWS全球9個地區(qū)的region,其中包括美國3個,歐洲1個,亞太地區(qū)3個,南美洲1個,遍布全球 。
  • 彈性的擴(kuò)展
    對于云服務(wù),彈性的擴(kuò)展是最為便捷的,可以在幾分鐘(而不是幾小時或幾天)內(nèi)增加或減少服務(wù)器。可以同時管理一個、數(shù)百個,甚至數(shù)千個服務(wù)器實例。當(dāng)然,因為這全是通過Web服務(wù)或API控制。
  • 成本的優(yōu)化
    而且無需前期的投資,持續(xù)的成本優(yōu)惠與調(diào)整;提高了資源利用率,按需付費;無需出國,管理世界各地的服務(wù)器,節(jié)約人力成本。

  • 介紹完我們基礎(chǔ)平臺的選擇后,為了更好的自動化,集群化,我們開始接觸容器技術(shù),而且是如何在AWS平臺上實現(xiàn)容器化。

    我們把容器的概念進(jìn)行理解:給你的應(yīng)用程序“打包”,能夠執(zhí)行一個“進(jìn)程”,同時能把你執(zhí)行的內(nèi)容和其他“進(jìn)程隔離”開來的東西,容器化有什么好處呢??

    這些好處在所有網(wǎng)站上看到的東西,聽完這個介紹,感覺有點空洞,還是不知道是什么,我們用到的一些package,我再所有的系統(tǒng)里面都可以運行這些進(jìn)程,而且進(jìn)程隔離開,為什么還要Docker,這也是我們團(tuán)隊剛剛接觸時遇到的困惑,除了Linux系統(tǒng),最早提出容器化的VMware、Microsoft都有這方面的嘗試,只不過他們的容器是虛擬機(jī),而互聯(lián)網(wǎng)的發(fā)展需要一個輕量級的容器。

    這個圖是借鑒了Yahoo的架構(gòu),非常的可愛形象,比普通的架構(gòu)圖更加生動,我們獵豹有很多廣告業(yè)務(wù),商業(yè)的開發(fā)同學(xué)做的ADserver,也會有很多流式數(shù)據(jù)實時處理的系統(tǒng),通過data highway匯聚到大數(shù)據(jù)處理系統(tǒng),Hadoop、Spark計算,后端儲存我們用的是aws-s3。如果要完成這套系統(tǒng),基礎(chǔ)架構(gòu),需要多少人力物力呢?可想而知,單單運維方面上百人的團(tuán)隊就這樣建立起來了。

    以往,我們一批機(jī)器只做一件事,比如100個adserver只做廣告接口,另外100臺機(jī)器只做廣告檢索,再有100臺機(jī)器做數(shù)據(jù)傳輸處理,某個模塊出問題去擴(kuò)容或者處理某個模塊,這是大家最常見的方法。這對架構(gòu)的高可用設(shè)計是個很大學(xué)問,需要多機(jī)房冗余,多地部署等等。如果引入微服務(wù)的概念呢??

    如左邊圖,一臺機(jī)器上面只運行各自的模塊和依賴,不同機(jī)器各司其職,出問題處理問題模塊。而右邊微服務(wù)的設(shè)計,我無所謂我的程序如何分布,每臺host都可以部署多個模塊混合復(fù)用,自定義哪些模塊可以和哪些分配到同一臺host,哪些模塊不能和哪些模塊分配到同一臺host,一旦某個模塊掛掉,調(diào)度編排工具可以幫助馬上啟動一個新的docker替代工作。擴(kuò)容的時候不需要針對不通模塊去部署和發(fā)布,只需要調(diào)整一下各個docker的數(shù)量即可。

    2、為什么選擇CoreOS部署我們的應(yīng)用

    下面我介紹一下我們線上穩(wěn)定運行很久的一個RCV日志處理集群的容器化改造過程,下圖是我們開始的架構(gòu)圖:?

    開始我們的架構(gòu)很簡單,前端接收,經(jīng)過各個模塊處理后存儲,然后統(tǒng)一進(jìn)行處理分析,報表延遲很長,而且經(jīng)常出問題需要手動補(bǔ)數(shù)據(jù)。

    后來我們對架構(gòu)進(jìn)行了容器話的改造,而且引入了數(shù)據(jù)流式處理,每個region部署一個收集集群,frontend的數(shù)據(jù)可以buffer一周的時間,并且可以故障后續(xù)傳,通過Kafka匯總到我們的中央region的nrt系統(tǒng)進(jìn)行準(zhǔn)實時的數(shù)據(jù)匯總和分析,報表延遲可以控制到5分鐘以內(nèi),而且每個region的集群都可以像管理一臺機(jī)器一樣管理。?

    這套系統(tǒng)我們團(tuán)隊為他命名為Meissa,是獵戶座最亮的一顆星,他底層搭建在CoreOS上,用CoreOS只帶的etcd和Fleet進(jìn)行集群的服務(wù)發(fā)現(xiàn)和編排管理,程序使用Docker進(jìn)行打包,利用Jenkins進(jìn)行發(fā)布,images保存在自建的docker-registry里面供集群使用。


    3、CoreOS在AWS平臺上如何快速構(gòu)建集群,并且進(jìn)行管理

    在AWS上面開通一套CoreOS 的集群非常方便,只需要在AWS的鏡像倉庫里面 選擇合適的CoreOS版本,編寫好user-data(Linux的cloud-init)傳入正確的cloud-config即可,這個可以參考CoreOS的官網(wǎng)。這里說一下etcd token的使用,etcd的功能和ZooKeeper很相似,可以在私網(wǎng)自己通過IP定義leader的節(jié)點和數(shù)量,也可以通過官網(wǎng)進(jìn)行token注冊,比較方便。

    這里舉個例子:

    一個集群都用這個配置文件(可以根據(jù)不同用途修改metadata的名字),開機(jī)后會自動發(fā)現(xiàn)集群并且注冊到一起,如下圖:

    這個是集群列表,標(biāo)注每個host的名字方便調(diào)度

    這個是units列表,看這個@符號,后面有1234,4臺機(jī)器上運行,之前服務(wù)端的同學(xué)寫個while true 腳本或者使用supervisor去判斷程序是否啟動,掛了拉起來,而且不可以跨服務(wù)器去守護(hù)進(jìn)程,fleet可以幫你在符合條件的units任意一臺上面啟動這個服務(wù),可以跨服務(wù)器。

    etcd的discovery key已經(jīng)把各個leader節(jié)點信息記錄到token的url里面,同步到各個節(jié)點,去個各個節(jié)點做服務(wù)注冊和發(fā)現(xiàn)。?

    使用fleetctl可以隨需求安排程序的啟動,fleet相當(dāng)于集群版systemd。

    4、應(yīng)用過程中遇到的問題與解決方案

    fleet 配置文件編寫的一些技巧,如何合理編排自己的服務(wù) 。

    CMD ENTRYPOINT不建議使用,add和cp都一樣,ENTRYPOINT可以傳參數(shù),還是寫到run里面ENTRYPOINT后面寫命令,“一個參數(shù) 空格 一個參數(shù)”,這樣寫的話轉(zhuǎn)義就出問題了,這是Docker的問題,用數(shù)組的方式[bash,-c];關(guān)閉進(jìn)程用stop,不要直接kill進(jìn)程,因為如果你寫了個shell腳本啟動你的程序,那么這個進(jìn)程的pid=1為bash,kill掉的是bash,而不是你的容器程序, 或者使用exec,這樣會把子進(jìn)程替換父進(jìn)程;docker的stop會有一個tw時間,默認(rèn)應(yīng)該是60s,如果你的程序關(guān)閉比較慢,比如kafka需要落磁盤,60秒不夠怎么辦,可以手動傳入比較長的timeout時間;Docker默認(rèn)的ulimit是1024,有時候發(fā)現(xiàn)你的Docker總是莫名重啟,可以看看是不是ulimit用盡了。

    Q&A

    Q:沒有用到Flannel,網(wǎng)絡(luò)實現(xiàn)是什么,未來對CoreOS的容器管理工具rkt的計劃?
    A:網(wǎng)絡(luò)上我們直接使用的host的方式,容器主要是看中了CI和CD的便利好沒有往高密度的場景設(shè)計的計劃,rkt是個好東西,更有開源的感覺,看后期Docker社區(qū)發(fā)展情況是否越來越封閉。 Q:registry怎么ha的,是在容器還是VM?
    A:這個問題之前也是一直困擾著我們,我們用AWS的ELB做負(fù)載均衡,后端放2臺EC2,鏡像存到S3,緩存寫在Redis里,我們是使用官方的image,隨時用隨時上傳和使用,掛了就再啟動一個,不依賴長期有效的hub。 Q:最近暴漏的安全問題需要內(nèi)核升級才能解決,這正是CoreOS的優(yōu)勢、不必重啟系統(tǒng),獵豹是否在線上有這種經(jīng)驗?實際中CoreOS在升級內(nèi)核時是否真那么方便?
    A:這個是我們非常喜歡的一個特性,自動升級內(nèi)核,做過運維的同學(xué)都知道,做一次內(nèi)核升級是多么痛苦,我們最開始用的是stable766.4,現(xiàn)在都不用我們?nèi)ド壘妥詣訋臀覀兩壍?xx的stable版本了。 Q:集群中etcd節(jié)點數(shù)目是多少,奇數(shù)個etcd節(jié)點的優(yōu)勢具體怎么體現(xiàn)的,以及etcd的代理節(jié)點在業(yè)務(wù)中的價值?
    A:etcd很類似于ZooKeeper,leader節(jié)點必須是奇數(shù)個,我們一般是3個,最多5個,所有節(jié)點都會主動和leader節(jié)點通訊,leader節(jié)點可以運行在集群任何節(jié)點上,也可以通過API接口手動調(diào)整leader節(jié)點所在的底層服務(wù)器,很靈活,任何一臺都可以選舉成leader,不用部署任何額外配置,省心。 Q:編排調(diào)度都是自己開發(fā)的系統(tǒng)嗎,如何管理那么多的容器?
    A:用的CoreOS自帶的模塊,etcd+fleet+systemd,很底層,登陸任何一臺機(jī)器做操作就可以管理整個集群,就像管理一臺機(jī)器一樣,我們把日常發(fā)布等操作基本都用Jenkins代勞了。

    以上內(nèi)容根據(jù)2016年10月25日晚微信群分享內(nèi)容整理。分享人齊海澎(Kuma Qi),獵豹移動高級運維工程師。負(fù)責(zé)獵豹移動商業(yè)廣告產(chǎn)品與大數(shù)據(jù)相關(guān)產(chǎn)品的運維團(tuán)隊管理,作為獵豹移動運維部的管理團(tuán)隊成員,負(fù)責(zé)商業(yè)廣告業(yè)務(wù)和大數(shù)據(jù)計算在AWS服務(wù)上的穩(wěn)定運行,并幫助公司開展容器技術(shù)的初步嘗試。3年AWS服務(wù)使用與運維經(jīng)驗,運維全球8個region數(shù)以千計的計算服務(wù)資源,搭建并運維起跨5個地區(qū)的基于CoreOS的Docker集群。 DockOne每周都會組織定向的技術(shù)分享,歡迎感興趣的同學(xué)加微信:liyingjiesz,進(jìn)群參與,您有想聽的話題或者想分享的話題都可以給我們留言。

    原文發(fā)布時間為:2016-10-31

    本文作者:齊海澎

    本文來自云棲社區(qū)合作伙伴Dockerone.io,了解相關(guān)信息可以關(guān)注Dockerone.io。

    原文標(biāo)題:DockOne微信分享( 九十):獵豹移動基于CoreOS在AWS上的項目實踐

    總結(jié)

    以上是生活随笔為你收集整理的DockOne微信分享( 九十):猎豹移动基于CoreOS在AWS上的项目实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。