云平臺(tái)下自動(dòng)彈性地分配資源的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云計(jì)算,尤其涉及一種云平臺(tái)下自動(dòng)彈性地分配資源的方法和系統(tǒng)。
【背景技術(shù)】
[0002]云計(jì)算是網(wǎng)格計(jì)算、分布式計(jì)算、并行計(jì)算、網(wǎng)絡(luò)存儲(chǔ)、虛擬化等傳統(tǒng)計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)發(fā)展融合的產(chǎn)物,是下一代網(wǎng)絡(luò)計(jì)算平臺(tái)的核心技術(shù),它將計(jì)算任務(wù)分布在大量物理計(jì)算機(jī)構(gòu)成的資源池上,使各種應(yīng)用能夠按需獲取計(jì)算能力、存儲(chǔ)空間和信息服務(wù),從而實(shí)現(xiàn)資源的全面透明共享,數(shù)據(jù)的可靠安全存儲(chǔ),它從根本上改變了信息發(fā)布、獲取和共享的方式。
[0003]隨著云計(jì)算時(shí)代的到來(lái),應(yīng)用的部署從單機(jī)演變?yōu)榉植际郊翰渴饋?lái)提高應(yīng)用的服務(wù)能力,但是也存在部署復(fù)雜、資源利用率低等問(wèn)題。因此,如何利用當(dāng)前流行的container (容器)虛擬化技術(shù)(如docker技術(shù))構(gòu)建云計(jì)算平臺(tái),使應(yīng)用以container作為載體直接進(jìn)行啟動(dòng)和停止,通過(guò)對(duì)性能指標(biāo)進(jìn)行監(jiān)控,根據(jù)守護(hù)和彈性規(guī)則來(lái)增減應(yīng)用數(shù)量,保證應(yīng)用健康運(yùn)行的同時(shí)提高服務(wù)器資源的利用率已經(jīng)成為一種趨勢(shì)。
[0004]Container (容器)是一種內(nèi)核虛擬化技術(shù),可以提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源,而且不需要提供指令解釋機(jī)制以及全虛擬化的其它復(fù)雜性。
[0005]Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,開(kāi)發(fā)者可以利用docker技術(shù)將應(yīng)用打包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類(lèi)似iPhone的app),幾乎沒(méi)有性能開(kāi)銷(xiāo),可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行,最重要的是,它們不依賴(lài)于任何語(yǔ)言、框架,包括系統(tǒng)。
[0006]目前本領(lǐng)域主要使用如下兩種方案進(jìn)行守護(hù)與彈性擴(kuò)展。第一種,研發(fā)人員自己實(shí)現(xiàn)守護(hù)與彈性策略;在早期的系統(tǒng)中,為了讓系統(tǒng)能具有橫向的擴(kuò)展能力,很多的研發(fā)人員會(huì)自己給系統(tǒng)增加這樣的彈性擴(kuò)展功能,能讓?xiě)?yīng)用程序在計(jì)算量巨大的時(shí)候利用更多的服務(wù)器來(lái)更快的解決問(wèn)題,典型的例子如hadoop等。第二種是手動(dòng)部署擴(kuò)展;這種方式常常用于老的系統(tǒng),系統(tǒng)在研發(fā)的時(shí)候,架構(gòu)師預(yù)留了橫向擴(kuò)展的能力,但是擴(kuò)展方式只能是手動(dòng)的增刪節(jié)點(diǎn)。對(duì)于計(jì)算量波動(dòng)不大,應(yīng)用程序不多,服務(wù)器較少的企業(yè)來(lái)說(shuō),這也是一種非常好的思路。因?yàn)橄到y(tǒng)擴(kuò)展的需求不會(huì)很頻繁,手工操作也能滿足需求。
[0007]然而,上述現(xiàn)有的第一種方法最大的缺點(diǎn)在于彈性模塊不能復(fù)用,每個(gè)系統(tǒng)由于部署方法不同,系統(tǒng)架構(gòu)不同,都需要重新實(shí)現(xiàn)彈性模塊,因此會(huì)增加很多的工作量。對(duì)于上述現(xiàn)有的第二種方法,大型互聯(lián)網(wǎng)公司由于系統(tǒng)和服務(wù)器比較多,需要太多的人力參與。而且,像電子商務(wù)等業(yè)務(wù)的流量波動(dòng)非常大,例如京東晚上的流量肯定要大于白天的流量,618等節(jié)假日的流量也要遠(yuǎn)大于平時(shí)的流量。流量分布不均勻?qū)е孪到y(tǒng)對(duì)于彈性擴(kuò)展的響應(yīng)時(shí)間有較高的要求。再者,現(xiàn)有的技術(shù)方案通常是將應(yīng)用程序直接部署到物理機(jī)上,因此在部署之前需要安裝依賴(lài)文件,拷貝配置文件,應(yīng)用下線后還需要清理系統(tǒng)環(huán)境,因此,部署流程繁瑣,需要復(fù)雜的人工操作。
[0008]因此,為了解決上述所提到的現(xiàn)有技術(shù)中進(jìn)行守護(hù)與彈性擴(kuò)展而產(chǎn)生的流程繁瑣、工作量大以及響應(yīng)不夠迅速等問(wèn)題,本發(fā)明提出了一種云平臺(tái)下自動(dòng)彈性地分配資源的方法和系統(tǒng)。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于提供一種云平臺(tái)下自動(dòng)彈性地分配資源的方法和系統(tǒng),其主要為了使得應(yīng)用程序在不需要自身實(shí)現(xiàn)守護(hù)與彈性規(guī)則的情況下,由云平臺(tái)根據(jù)其資源的使用情況,快速的進(jìn)行橫向的彈性伸縮。
[0010]本申請(qǐng)的云平臺(tái)下自動(dòng)彈性地分配資源的方法,包括以下步驟:A)應(yīng)用部署文件;B)下載應(yīng)用的部署文件、解析所述部署文件并將部署信息存儲(chǔ)到數(shù)據(jù)庫(kù);C)根據(jù)部署信息給該應(yīng)用分配所需資源;D)下載應(yīng)用鏡像文件、啟動(dòng)容器并運(yùn)行應(yīng)用,以及形成應(yīng)用容器集群;E)判斷分配的資源是否與所述部署文件一致,如果所述分配的資源不能滿足所述部署文件,未被滿足的部分部署文件等待服務(wù)器資源管理平臺(tái)的再次分配;F)自動(dòng)監(jiān)控讀取應(yīng)用容器集群的監(jiān)控?cái)?shù)據(jù),同時(shí)監(jiān)控當(dāng)前存活的應(yīng)用數(shù)量,并計(jì)算第一時(shí)間段內(nèi)應(yīng)用容器集群的平均監(jiān)控?cái)?shù)據(jù);G)比較當(dāng)前存活的應(yīng)用數(shù)量是否滿足守護(hù)規(guī)則,如果所述當(dāng)前存活的應(yīng)用數(shù)量在閾值范圍內(nèi),則重復(fù)步驟C) -G)。
[0011]優(yōu)選地,所述步驟G)具體為:a)如果所述當(dāng)前存活的應(yīng)用數(shù)量等于最小應(yīng)用數(shù)量,則等待第二時(shí)間段,繼續(xù)執(zhí)行步驟F)_G) ;b)如果所述當(dāng)前存活的應(yīng)用數(shù)量小于最小應(yīng)用數(shù)量,則重復(fù)步驟C)_G) ;c)如果所述當(dāng)前存活的應(yīng)用數(shù)量大于最小應(yīng)用數(shù)量,則進(jìn)行彈性規(guī)則判斷。
[0012]優(yōu)選地,所述步驟(G)進(jìn)一步包括:
[0013]i)如果某一指標(biāo)低于其閾值的下限值,通知服務(wù)器資源管理平臺(tái)回收資源,每次回收一個(gè)應(yīng)用資源;
[0014]ii)如果某一指標(biāo)高于或等于其閾值的上限值,通知服務(wù)器資源管理平臺(tái)根據(jù)應(yīng)用配置分配資源,每次僅分配一個(gè)應(yīng)用資源,重復(fù)步驟D)-G)。
[0015]優(yōu)選地,所述步驟D)中的所述鏡像文件包含了運(yùn)行時(shí)環(huán)境的應(yīng)用程序包。
[0016]優(yōu)選地,所述彈性規(guī)則包括..CPU利用率、內(nèi)存利用率、磁盤(pán)10、磁盤(pán)利用率以及網(wǎng)絡(luò)1的上下限閾值;是否開(kāi)啟彈性規(guī)則;以及運(yùn)行過(guò)程中閾值可調(diào)整。
[0017]本申請(qǐng)的云平臺(tái)下自動(dòng)彈性地分配資源的系統(tǒng),包括:應(yīng)用模塊A,用于應(yīng)用部署文件;下載解析模塊B,用于下載應(yīng)用的部署文件、解析所述部署文件并將部署信息存儲(chǔ)到數(shù)據(jù)庫(kù);分配模塊C,用于根據(jù)部署信息給該應(yīng)用分配所需資源;下載應(yīng)用鏡像文件模塊D,用于下載應(yīng)用鏡像文件、啟動(dòng)容器并運(yùn)行應(yīng)用以及形成應(yīng)用容器集群;判斷模塊E,用于判斷分配的資源是否與所述部署文件一致,如果所述分配的資源不能滿足所述部署文件,未被滿足的部分部署文件等待服務(wù)器資源管理平臺(tái)的再次分配;數(shù)據(jù)監(jiān)控模塊F,用于自動(dòng)監(jiān)控讀取應(yīng)用容器集群的監(jiān)控?cái)?shù)據(jù)、同時(shí)監(jiān)控當(dāng)前存活的應(yīng)用數(shù)量并計(jì)算第一時(shí)間段內(nèi)應(yīng)用容器集群的平均監(jiān)控?cái)?shù)據(jù);比較模塊G,用于比較當(dāng)前存活的應(yīng)用數(shù)量是否滿足守護(hù)規(guī)貝1J,如果所述當(dāng)前存活的應(yīng)用數(shù)量在閾值范圍內(nèi),則模塊C-G依次操作。
[0018]優(yōu)選地,所述比較模塊G具體進(jìn)行如下操作:
[0019]a)如果所述當(dāng)前存活的應(yīng)用數(shù)量等于最小應(yīng)用數(shù)量,則等待第二時(shí)間段,然后模塊F-G依次操作;
[0020]b)如果所述當(dāng)前存活的應(yīng)用數(shù)量小于最小應(yīng)用數(shù)量,則模塊C-G依次重復(fù)操作;
[0021]c)如果所述當(dāng)前存活的應(yīng)用數(shù)量大于最小應(yīng)用數(shù)量,則進(jìn)行彈性規(guī)則判斷。
[0022]優(yōu)選地,所述模塊G進(jìn)一步進(jìn)行如下操作:
[0023]i)如果某一指標(biāo)低于其閾值的下限值,通知服務(wù)器資源管理平臺(tái)回收資源,每次回收一個(gè)應(yīng)用資源;
[0024]ii)如果某一指標(biāo)高于或等于其閾值的上限值,則根據(jù)應(yīng)用配置分配資源,每次僅分配一個(gè)應(yīng)用資源,模塊D-G依次操作。
[0025]優(yōu)選地,所述模塊D中的所述鏡像文件包含了運(yùn)行時(shí)環(huán)境的應(yīng)用程序包。
[0026]優(yōu)選地,所述彈性規(guī)則包括..CPU利用率、內(nèi)存利用率、磁盤(pán)10、磁盤(pán)利用率以及網(wǎng)絡(luò)1的上下限閾值;是否開(kāi)啟彈性規(guī)則;以及運(yùn)行過(guò)程中閾值可調(diào)整。
[0027]通過(guò)采用本發(fā)明的上述技術(shù)方案,能夠獲得以下有益效果:1)簡(jiǎn)化應(yīng)用的部署流程,無(wú)需復(fù)雜的人工操作,通過(guò)鏡像文件可直接部署成功;2)支持任何的應(yīng)用程序,無(wú)需應(yīng)用程序自身實(shí)現(xiàn)彈性功能;3)規(guī)則靈活:守護(hù)規(guī)則能保證應(yīng)用程序能無(wú)中斷的服務(wù),彈性規(guī)則能讓?xiě)?yīng)用程序根據(jù)業(yè)務(wù)需求設(shè)計(jì)出不同的彈性策略;4)響應(yīng)迅速:監(jiān)控?cái)?shù)據(jù)可以做到秒級(jí),應(yīng)用守護(hù)和彈性可以做到分鐘級(jí)別。
【附圖說(shuō)明】
[0028]圖1是本申請(qǐng)的云平臺(tái)下自動(dòng)彈性地分配資源的方法的流程圖;
[0029]圖2是本申請(qǐng)的云平臺(tái)下自動(dòng)彈性地分配資源的系統(tǒng)的框圖。
【具體實(shí)施方式】
[0030]本申請(qǐng)?zhí)岢隽艘环N云平臺(tái)下自動(dòng)彈性地分配資源的方法。如圖1所示,本申請(qǐng)所述的方法主要包括以下步驟:A)應(yīng)用部署文件;B)下載應(yīng)用的部署文件、解析部署文件并將部署信息存儲(chǔ)到數(shù)據(jù)庫(kù),所述部署文件包括應(yīng)用的基礎(chǔ)信息(如應(yīng)用名稱(chēng)、版本、開(kāi)發(fā)者、維護(hù)人等)、啟動(dòng)信息(依賴(lài)的應(yīng)用、啟動(dòng)命令等)、彈性規(guī)則(CPU利用率、內(nèi)存利用率、磁盤(pán)10、磁盤(pán)利用率、網(wǎng)絡(luò)1等的上下限閾值,是否開(kāi)啟彈性規(guī)則,運(yùn)行過(guò)程中閾值可調(diào)整)、部署信息(CHJ核數(shù)、內(nèi)存大小、磁盤(pán)大小、帶寬、最小應(yīng)用數(shù)量等);C)服務(wù)器資源管理平臺(tái)根據(jù)部署信息給該應(yīng)用分配所需資源;D)下載鏡像文件,啟動(dòng)容器(container)并運(yùn)行應(yīng)用,形成應(yīng)用容器集群,其中所述鏡像文件是包含了運(yùn)行時(shí)環(huán)境的應(yīng)用程序包,任何可執(zhí)行的文件都可以制作成鏡像文件;E)判斷分配的資源是否與部署文件一致,如果所述分配的資源不能滿足所述部署文件,未被滿足的部分部署文件等待服務(wù)器資源管理平臺(tái)的再次分配;F)自動(dòng)監(jiān)控讀取