2013年運維研發(fā)計劃 - 中國云計算-云計算資料和交 …_第1頁
已閱讀1頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于CloudFoundry的私有云平臺,@王煒煜,百度運維部weibo.com/wwy16402013-7-19,內(nèi)容,背景與目標(biāo)實踐與改造(Part 1、2)流程與標(biāo)準(zhǔn)改變運維未來計劃,1. 背景與目標(biāo),運維與PaaS,Storage,Servers,Networking,O/S,Middleware,Virtualization,Data,Applications,Runtime,OP(SRE),運維,PaaS (a

2、nd IaaS),目標(biāo),自動化業(yè)務(wù)的生命周期管理,如變更、監(jiān)控、故障處理等資源利用率、彈性標(biāo)準(zhǔn)化流程實例標(biāo)準(zhǔn)系統(tǒng)環(huán)境、runtime、framework一體化集成第三方服務(wù),如DB、Cache、log、FS等與其他系統(tǒng)平臺聯(lián)動,Why CloudFoundry ?,,自動化,標(biāo)準(zhǔn)化,一體化,機(jī)器管理(下游部門),Why CF ?,,自動化,一體化,標(biāo)準(zhǔn)化,2. 實踐與改造(Part1)Java,base on c

3、f 1.0,Java Apps,產(chǎn)品種類 >100APP >200實例>2000平均單實例10G(內(nèi)存)日均總pv > 10億APP的開發(fā)及測試人員 > 700人Tomcat5/6/7、jdk1.5/1.6、Standalone,開始實施,準(zhǔn)備工作,,基于CentOS的相關(guān)改造獨立部署各個CF組件拆解BOSH、chef,基于物理機(jī)實施OS環(huán)境初始化apt-get 改為 yumUbunt

4、u-cmd to CentOSDEA(v1.0),agent.rb、secure.rb,yum install -y make gcc gcc-c++ kernel-devel.x86_64 openssl-devel.x86_64 libxml2.x86_64 libxml2-devel.x86_64 libxslt.x86_64 libxslt-devel.x86_64 git.x86_64 sqlite.x86_64 rub

5、y-sqlite3.x86_64 sqlite-devel.x86_64 unzip.x86_64 zip.x86_64 ruby-devel.x86_64 ruby-mysql.x86_64 mysql-devel.x86_64 curl-devel.x86_64 postgresql-libs.x86_64 postgresql-devel.x86_64 zlib-devel.x86_64 readline-devel.x86_6

6、4 ImageMagick.x86_64 ImageMagick-devel.x86_64 php-magickwand.x86_64,集群容量評估,,實例數(shù)量,NATS容量評估單臺DEA承載的實例數(shù)(<100),對NATS-Server壓力影響不大單NATS-Server,保守估計可承受330臺DEA,單臺實例數(shù)5~30個多NATS-Server,可擴(kuò)展,延時(ms),DEA臺數(shù) (10 ~ 340臺),單DEA實例數(shù)

7、(5 ~ 30個),臨界線330臺DEA,集群內(nèi),組件冗余、LB設(shè)計,,NATS使用cluster版,多NATS,心跳同步Client 端緩存信息,如果網(wǎng)絡(luò)中斷,則不斷reconnect多NATS負(fù)載均衡(Client > 0.5.beta.6),NATS-Server1,NATS-Server2,,NATS-Client(caching message),NATS-Server1/2, Random list,,,多

8、集群冗余設(shè)計,,多個獨立的集群,邏輯互不影響第一層切換,修改DNS A記錄,對多個域名(CNAME到此A記錄),統(tǒng)一切到不同的集群第二層切換,修改“接入層”(其應(yīng)用層的功能,可簡單理解為nginx的反向代理)保證好APP(無狀態(tài))的容量,或快速擴(kuò)容的預(yù)案,以防止流量切過來以后,出現(xiàn)過載,Baidu GateWayFront End,Router,A記錄,Baidu GateWayFront End,Router,app1,ap

9、p1,CNAME(正式域名),CNAME(正式域名),www.baidu.com CNAME www.a.shifen.com. www.baidu.cn CNAME www.a.shifen.com. www.a.shifen.com. A 119.75.218.77 www.a.shifen.com. A 119.75.217.56,核心組件,分布,Router_1,NATS_1,,,,Route

10、r,NATS,CCHMStager,,,DEA,PG_DBRedis,整體結(jié)構(gòu)(cf1.0),,DEA,Logging,Name Service,Monitoring,jvm,Stager,FilePersistence,HM,Router,CC,Baidu GateWay / Front End,jvm,jvm,API Bridge,UAA,jvm,jvm,jvm,jvm,jvm,,,,,,,,,Router(Cluster

11、02),NATS,DB,,新增功能,支持RPC、單實例多端口單實例開啟多個端口,并提供API實時查詢IP、端口號與“名稱服務(wù)”聯(lián)動,同步動態(tài)ip端口與名稱的對應(yīng)關(guān)系RPC調(diào)用方,根據(jù)名稱直連實例,DEA server,支持RPC、單實例多端口,Instance01:port,Instance02:port,API Bridge,,NS server,,,TXT記錄 ip:port ip:port,RPC調(diào)用

12、方,NS client,,,Domain ip:port ip:port,ip_local_port_range10000 ~ 60000,Port池(分配后,有凍結(jié)期)61000 ~ 65000,新增功能,支持JMXAPI實時查詢ip與Jconsole端口號,實現(xiàn)JMX數(shù)據(jù)實時采集,DEA,支持 JMX,Instance01: Jconsole 端口,Instance02: Jconsole 端口,{ "i

13、nstances": [ { "index": 0, "state": "RUNNING", "since": 438249600, "jconsole_ip": "10.1.1.1", "jconsole_port":

14、61111 }, { "index": 1, "state": "RUNNING", "since": 438249600, "jconsole_ip": "10.1.1.1", "jconsole_port": 62222

15、},Monitoring Metrics,,,CpuUseRateDaemonThreadCount MemPool_OldGen_UseRate NonHeapMemoryUsage_used TotalCompilationTime TotalPeakThreadCount TotalStartedThreadCount UnloadedClassCount GC_Major_Frequency GC_Major_Time…

16、…,Stager:java \-Dcom.sun.management.jmxremote.port={VCAP_JCONSOLE_PORT}-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false,新增功能,加強(qiáng)健康檢查七層檢測文件句柄數(shù)檢測,DEA Server,,DEA agent.rb,Heal

17、th Manger,,instance,http可用性,,,instance,CPU,MEM,DISK,……,,,report,加強(qiáng)健康檢查,句柄,DEA(v1.0),邏輯改進(jìn),端口管理問題描述單DEA多實例,并行的端口分配與啟動,沒有臨界區(qū),有端口競爭的問題解決方案借鑒了DEA(v2.0)的邏輯(注:即 DEA_NG,與CF1.0不兼容)設(shè)定 ip_local_port_range 為 10000~61000,作為動態(tài)端口的

18、范圍將61001~65000,作為DEA的調(diào)度分配端口對分配的端口,增加“[釋放時間、端口號]”的數(shù)據(jù)結(jié)構(gòu)通過延時釋放端口,解決了端口競爭的問題備注CF2.0中,已解決此問題,方法同上,DEA(v1.0),邏輯改進(jìn),實例資源信息管理問題描述du命令算實例磁盤空間,時間較長,隨后執(zhí)行其他計算命令,信息已不一致CPU計算的方法,沒有考慮主機(jī)核數(shù)解決方案調(diào)整相關(guān)命令的順序CPU利用率計算時,除以核數(shù)備注CF2.0中,

19、已解決此問題,新增功能(與外圍系統(tǒng)聯(lián)動),文件持久化使用MFS(Moose File System)DEA 部署MFS-Client,并 mount /mfs/path,供實例使用MFS服務(wù)端提供HTTP接口,獲取數(shù)據(jù)基于URI的路由,區(qū)分APPfoo.baidu.com/app1 ? app1.foo.baidu.comfoo.baidu.com/app2 ? app2.foo.baidu.c

20、om監(jiān)控聯(lián)動APP的生命周期,與外部監(jiān)控系統(tǒng)的API交互,實現(xiàn)監(jiān)控項的自動增刪改開發(fā)者工具包自動化發(fā)布(封裝vmc)文件查看,主要改造點匯總(cf v1.0),,基于CentOS的相關(guān)改造使用NATS-Cluster、NATS-Client重試與緩存支持RPC、單實例多端口支持動態(tài)JMX、Jconsole加強(qiáng)健康檢查端口管理實例資源信息管理外圍組件:文件持久化、監(jiān)控聯(lián)動、URI路由、開發(fā)者工具包,2. 實踐與

21、改造(Part2)C/C++,base on cf 2.0,C/C++ Apps,幾大核心問題,Container 的運行環(huán)境與資源隔離Kernel/GNU資源隔離快照,Core Dump單實例多進(jìn)程健康檢查進(jìn)程運行順序?qū)嵗齼?nèi),進(jìn)程間通信多端口多實例的同構(gòu)性,C/C++ Apps,幾大核心問題,大實例實例個數(shù)多(10萬)數(shù)據(jù)量大(單實例,2TB)內(nèi)存占用高(單實例,100G)啟動時間長(30分鐘)流量大(

22、單實例,日總PV2億)漂移時,防止資源不足APP通信網(wǎng)絡(luò)層通信,權(quán)限、流量控制輸出文件,需要外部抓取輸入文件,需要外部推送RPC,非HTTP協(xié)議,不包含PATH信息,無法路由,實例的 OS-Level 環(huán)境準(zhǔn)備,Container的運行環(huán)境Kernel 與宿主機(jī)一致訂制Container的文件環(huán)境,warden/warden/root/linux/rootfs/setup.sh,if grep -q -i centos

23、 /etc/issuethen exec $(dirname $0)/centos.sh $@fi,Container與宿主機(jī)的關(guān)系,,Warden,Networking,Bridge / NAT / Firewall / FlowControl,DEA,,,包管理,Buildpack APIdetect , 檢查complie,環(huán)境準(zhǔn)備目錄結(jié)構(gòu)程序文件,及相關(guān)配套程序啟動腳本,保證進(jìn)程的啟動順序,等等監(jiān)控腳本,

24、可以周期性執(zhí)行,檢測整個實例的健康程度release,發(fā)布信息Procfile,參數(shù)傳遞(如端口號).profile.d,環(huán)境變量,健康檢查,改造點,自定義監(jiān)控腳本自定義監(jiān)控腳本,隨實例一起發(fā)布,周期性改寫stat_file文件內(nèi)容DEA定期檢查stat_file文件,,實例,stat_file,monitor.sh,process-1,process-2,DEA,HM,,APP的改造,針對RPC,支持NS Client動態(tài)

25、配置文件,代替路由端口管理,凍結(jié)時間輸入輸出文件輸入文件,主動抓取輸出文件,推到中轉(zhuǎn)處(如云存儲),或基于NS服務(wù)多進(jìn)程的管理,啟動腳本多進(jìn)程,啟動順序控制進(jìn)程控制文件持久化遠(yuǎn)程日志使用云存儲,整體結(jié)構(gòu)(CF2.0),DEA,Logging,Name Service,Monitoring,FilePersistence,HM,gorouter(RPC,不適用),CC,Baidu GateWay / Front En

26、d,API Bridge,UAA,,,,,,,,,(Cluster 02),NATS,Warden,NS Client,DB,,主要改造點匯總(cf v2.0),,基于CentOS的相關(guān)改造Container環(huán)境的訂制Buildpack的訂制支持RPC、單實例多端口加強(qiáng)健康檢查外圍組件:文件持久化、監(jiān)控聯(lián)動、URI路由、開發(fā)者工具包,3. 流程與標(biāo)準(zhǔn),工作流程,簡述,,標(biāo)準(zhǔn)與容量,舉例,標(biāo)準(zhǔn)信息采集App相關(guān)名稱、相關(guān)

27、接口人(R&D、QA、運維、相關(guān)經(jīng)理,等)Runtime與容器版本無狀態(tài)、RPC、URI路由動靜態(tài)文件分離文件持久化容量信息采集PV、QPS單實例 CPU、內(nèi)存、磁盤、帶寬、重啟時間實例數(shù)量,SLA,舉例,服務(wù)對象Java 應(yīng)用(以下簡稱“APP”)符合標(biāo)準(zhǔn)的APP服務(wù)時間24×365全年無休溝通方式Mail、Tel、接口人信息穩(wěn)定性相關(guān)指標(biāo)核心組件,可用性>99.99%(

28、每月),MTTR5天控制服務(wù),可用性>99.95%(全年)APP自身SLA,不因平臺本身,造成負(fù)面影響?注:APP自身問題,不在此SLA范圍內(nèi),如:?程序bug、容量預(yù)估錯誤、外部系統(tǒng)故障(如DB、Cache)等,組織關(guān)系,層級,產(chǎn)品線(Org)模塊(Space)分組(APP)版本(APP-*),產(chǎn)品線-2,產(chǎn)品線-1 (Org),模塊-2,模塊-1 (Space),分組-1(A),分組-2(B),實例,版本-1(A

29、PP-1-1),實例,版本-2(APP-1-2),實例,版本-1(APP-2-1),實例,版本-2(APP-2-2),實例,版本-1(A-1),實例,版本-2(A-2),實例,版本-1(B-1),實例,版本-2(B-2),,虛線內(nèi),相當(dāng)于一個APP,且有多個實例,對CC進(jìn)一步封裝,,產(chǎn)品線(Org)OrgName模塊(Space)OrgName_SpaceName模塊分組 OrgName_SpaceNa

30、me_GroupTag模塊版本 OrgName_SpaceName_GroupTag_VersionTag實例(id唯一)OrgName_SpaceName_GroupTag_VersionTag_Index,GroupTag、VersionTag,,GroupTag可以區(qū)分:配置文件、機(jī)房、機(jī)架等維度的不同VersionTag可以區(qū)分:程序、數(shù)據(jù)、配置文件等包含:四位版本號、時間戳實例完整名稱,例子Org

31、_Space_GroupA_1-1-1-1-438249600_1Org_Space_GroupB_1-1-1-1-438249600_1,審批與發(fā)布,發(fā)審批單APP信息(程序版本、容量信息、相關(guān)說明,等等)審批人(相關(guān)經(jīng)理、需知曉的人)操作者、操作時間監(jiān)控信息(監(jiān)控策略、接口人等)開始發(fā)布操作,并添加監(jiān)控發(fā)布前,對應(yīng)審批流必須通過操作人、程序版本、MD5、時間等信息,必須與審批流一致都一致,且流程通過,則可以開始發(fā)

32、布發(fā)布成功后,添加監(jiān)控,發(fā)單,審批,發(fā)布APP,,,監(jiān)控添加,,預(yù)發(fā)布、發(fā)布、回滾,app_v1instance01,app_v1.paas.baidu.com,app_v1instance02,app_v2instance01,app_v2instance02,,,app_v3instance01,app_v3instance02,app_v3.paas.baidu.com,,app.baidu.com,泛域名、 map

33、/unmap、 app的多版本并存,前進(jìn),發(fā)布,后退,回滾,預(yù)發(fā)布,線下內(nèi)網(wǎng)觀察,基本的灰度發(fā)布,app_v1instance01,app_v1.paas.baidu.com,app_v1instance02,app_v2instance01,app_v2instance02,,,app_v3instance01,app_v3instance02,,app.baidu.com,1、將一個正式域名,同時指向多個app2、調(diào)

34、整多個app的實例數(shù)比例,即調(diào)整了流量的比例,app.baidu.com,app_v2instance03,通過調(diào)整app實例的數(shù)量,灰度流量的分配比例,“布道之道”,平臺的推廣,軍功章,有誰的一半?APP的支持新服務(wù),需遵守PaaS的相關(guān)標(biāo)準(zhǔn)、思想老服務(wù),需R&D改造,QA需回歸測試外圍的支持DB、Cache、存儲、接入、安全、監(jiān)控,等等明確收益,建立共贏的生態(tài)圈交付更快、資源更省、事情變得簡單一站式的一體

35、化服務(wù),攜手推廣,一些方法,給用戶(APP開發(fā)人員),尊貴的帝王般的享受對重點的APP,有針對性的重點服務(wù)對重要的管理者,有一套更完整、及時的溝通方式,如報表等原則是“資本主義”,而不是社會主義事件“營銷”如“struts2 0day”積極配合R&D、QA做問題排查、修復(fù)與實施積極通報進(jìn)展,做好事件管理后期,針對此事,積極推進(jìn)、參與討論與決策,如與安全、架構(gòu)組合作原則是“共贏”,而不是推卸責(zé)任,4. 改變運維

36、,,改變運維,“NoOps”,PaaS(and IaaS) 的完整功能 >= 傳統(tǒng)運維工作,Storage,Servers,Networking,O/S,Middleware,Virtualization,Data,Applications,Runtime,OP(SRE),運維,PaaS (and IaaS),如何改變,舉例,故障自動恢復(fù)在傳統(tǒng)監(jiān)控之上,增加了健康檢查機(jī)制實例的自動重啟與“漂移”傳統(tǒng)的報警大量減少,人力減少

37、只有自動恢復(fù)失敗時,才報警,監(jiān)控,,完整實例名_1ip:port,,,… …,,健康檢查,API,… …,真實的實例_1ip:port,漂移后的實例_1,“漂移”是正?,F(xiàn)象,無需報警“漂移”失敗,才需報警監(jiān)控細(xì)化到實例,每次根據(jù)名字,探測返回的ip:port,如何改變,舉例,更加敏捷讓開發(fā)者“忘記服務(wù)器”,轉(zhuǎn)而面向資源有完整的配置管理,與自動化部署功能發(fā)布、預(yù)發(fā)布、回滾,極其簡單,且不需要額外復(fù)雜的部署工具彈性擴(kuò)展,極其

38、簡單使用Buildpack,實現(xiàn)“云端編譯”,并直接運行一體化一站式的體驗從發(fā)單、發(fā)布,到增刪改監(jiān)控,工作流程全自動整合第三方服務(wù),統(tǒng)一管理入口,5. 未來計劃,未來計劃,回饋社區(qū)針對私有云的功能,盡量封裝原生組件(基于CF2.0),將新的組件開源如影響到原生組件的改動,盡量爭取merge進(jìn)主干編寫豐富的文檔,以及心得,并積極參與交流開發(fā)方向針對大型應(yīng)用(大實例)的相關(guān)功能智能調(diào)度相關(guān)信息安全更深入的持續(xù)集成

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論