基于模型的云應(yīng)用動(dòng)態(tài)配置框架
發(fā)布時(shí)間:2020-09-28 13:49
云應(yīng)用是云計(jì)算技術(shù)在應(yīng)用層的一種重要體現(xiàn)形式,通常由分布式異構(gòu)組件構(gòu)成,且組件相互依賴,配置參數(shù)眾多。組件依賴導(dǎo)致配置參數(shù)間存在關(guān)聯(lián),使應(yīng)用運(yùn)行時(shí)彈性擴(kuò)展難以確定組件實(shí)例的配置順序并保證關(guān)聯(lián)參數(shù)的一致性,導(dǎo)致應(yīng)用擴(kuò)展后的系統(tǒng)故障和服務(wù)不可用。針對(duì)這一問(wèn)題,提出了一種基于模型的云應(yīng)用動(dòng)態(tài)自配置方法,實(shí)現(xiàn)運(yùn)行時(shí)組件實(shí)例配置順序的自動(dòng)協(xié)調(diào),保障配置參數(shù)的一致性,提高應(yīng)用運(yùn)行時(shí)彈性擴(kuò)展的可靠性。首先提出一種部署配置模型STM(Service-based Topology Model),該模型采用聲明式的方法刻畫云應(yīng)用的部署拓?fù)浣Y(jié)構(gòu),并基于服務(wù)的方式描述組件信息,實(shí)現(xiàn)組件間關(guān)聯(lián)關(guān)系的分離,涵蓋運(yùn)維部署、擴(kuò)展、運(yùn)行時(shí)服務(wù)狀態(tài)的監(jiān)測(cè)。然后基于該模型,提出了一個(gè)云應(yīng)用動(dòng)態(tài)自配置協(xié)議,其基于服務(wù)注冊(cè)發(fā)現(xiàn)機(jī)制實(shí)現(xiàn)組件間強(qiáng)依賴關(guān)系的解耦,保證動(dòng)態(tài)調(diào)整應(yīng)用實(shí)例時(shí)組件配置變化的一致性,實(shí)現(xiàn)組件部署配置的并行化;谏鲜龇椒▽(shí)現(xiàn)了一個(gè)原型系統(tǒng),通過(guò)對(duì)分布式應(yīng)用BookStore-TPCW的部署配置和運(yùn)行時(shí)彈性擴(kuò)展來(lái)驗(yàn)證方法的有效性。
【部分圖文】:
身的故障等統(tǒng)一歸結(jié)為組件服務(wù)不可用故障。應(yīng)用組件服務(wù)狀態(tài)的檢測(cè)依賴應(yīng)用拓?fù)淠P椭袑?duì)應(yīng)NodeType或者NodeTem-plate指定的check屬性,check屬性指定檢測(cè)應(yīng)用組件健康狀態(tài)的命令,如Tomcat組件可定義check命令為netstat-ntlp|grep8080。默認(rèn)故障check屬性值為提到的檢測(cè)虛機(jī)、物理機(jī)故障以及網(wǎng)絡(luò)故障,通過(guò)心跳機(jī)制與ServiceCluster交互。本文后續(xù)的故障均代指服務(wù)不可用故障。①故障檢測(cè)如圖9所示,應(yīng)用組件初始化時(shí),部署執(zhí)行器會(huì)將拓?fù)淠P椭卸x的組件check信息提交給健康診斷器。健康診斷器以一定的頻率將組件的狀態(tài)信息發(fā)送至ServiceCluster,當(dāng)時(shí)間延遲超過(guò)一定閾值或者健康診斷器診斷出應(yīng)用組件服務(wù)不可用時(shí),ServiceCluster?qū)⒃摻M件的Service狀態(tài)更改為不可用,其他依賴該組件的組件就會(huì)感知到該信息,從而啟動(dòng)動(dòng)態(tài)配置器,重新更改配置參數(shù)。圖9故障檢測(cè)與故障恢復(fù)流程圖②故障恢復(fù)當(dāng)組件產(chǎn)生故障并被檢測(cè)到時(shí),ServiceCluster?qū)⒃摻M件的Service與Attributes值標(biāo)記為不可用,同時(shí)通知監(jiān)測(cè)該組件信息的動(dòng)態(tài)配置器和Manager,重新載入模板生成新的配置文件,重新啟動(dòng)組件。組件間參照依賴關(guān)系描述,自動(dòng)協(xié)調(diào)配置順序,某一組件收到更新配置通知后,會(huì)將自身的狀態(tài)先更改為不可用,從而使依賴該組件的其他組件的動(dòng)態(tài)配置器一直處于等待狀態(tài),直到完成重新配置。Manager則將信息反饋給運(yùn)維管理人員,由運(yùn)維管理人員進(jìn)一步恢復(fù)。2)應(yīng)用組件彈性擴(kuò)展①
各個(gè)組件的初始實(shí)例數(shù),在系統(tǒng)默認(rèn)的組件倉(cāng)庫(kù)中檢測(cè)與拓?fù)淠P椭校危铮洌澹裕澹恚穑欤幔簦鍖?duì)應(yīng)的NodeType,最后將拓?fù)淠P妥詣?dòng)轉(zhuǎn)化為Puppet腳本,自動(dòng)安裝應(yīng)用的各個(gè)組件并啟動(dòng)Agent端的動(dòng)態(tài)配置器完成應(yīng)用的動(dòng)態(tài)配置。該系統(tǒng)的動(dòng)態(tài)配置依賴于服務(wù)發(fā)現(xiàn)工具Consul搭建服務(wù)發(fā)現(xiàn)和keyValue存儲(chǔ)集群,每個(gè)組件的Service以及Attributes信息將通過(guò)Agent端的ConsulAgent發(fā)送至Consul的Server集群。圖11BookStore-TPCW拓?fù)浣#祵?shí)驗(yàn)本實(shí)驗(yàn)主要為驗(yàn)證本文解決的3個(gè)問(wèn)題而設(shè)計(jì),步驟如下:1)定義BookStore-TPCW的STM模型如圖11所示,單個(gè)Tomcat節(jié)點(diǎn),單個(gè)MySQL節(jié)點(diǎn),包含50萬(wàn)條圖書數(shù)據(jù),單個(gè)Nginx節(jié)點(diǎn)。在Nginx的upstream配置模板中聲明對(duì)BookStore-TPCW服務(wù)信息的依賴:{{rangeservice“book-store-tpcw”}}server{{.Address}}∶{{.Port}}max_fails=0fail_timeout=10s;{{end}},其中{{}}定義特定的操作,rangeservice代表遍歷所有可用BookStore-TPCW服務(wù)信息,每條服務(wù)信息生成一條server配置信息。在BookStore-TPCW的context配置模板中聲明對(duì)MySQL服務(wù)信息的依賴,部署應(yīng)用并觀察壓力測(cè)試平均響應(yīng)時(shí)間,以檢測(cè)應(yīng)用是否部署成功。2)運(yùn)行時(shí)為應(yīng)用
0,MySQL版本為5.6.25。實(shí)驗(yàn)環(huán)境采用軟件所軟件工程中心研發(fā)的云平臺(tái)OnceCloud,測(cè)試虛機(jī)的配置為1核CPU,1GB內(nèi)存,壓力測(cè)試工具采用JMeter2.13。5.2實(shí)驗(yàn)結(jié)果與分析1)系統(tǒng)將模型轉(zhuǎn)化為腳本并分發(fā)至3個(gè)虛機(jī)節(jié)點(diǎn),分別對(duì)應(yīng)應(yīng)用的3個(gè)組件,啟動(dòng)動(dòng)態(tài)配置協(xié)議。MySQL節(jié)點(diǎn)等待50萬(wàn)條圖書數(shù)據(jù)初始完畢,將注冊(cè)MySQL服務(wù)信息,觸發(fā)等待中的Tomcat節(jié)點(diǎn)配置context文件并啟動(dòng),此時(shí)應(yīng)用已正確部署。如圖12所示,前1分57秒在500并發(fā)下系統(tǒng)能正確響應(yīng),此時(shí)Nginx的配置如圖13所示。2)如圖12所示,在未中斷服務(wù)的情況下,在1分57秒時(shí)系統(tǒng)自動(dòng)構(gòu)建擴(kuò)展腳本擴(kuò)展Tomcat節(jié)點(diǎn),自動(dòng)修改Nginx的upstream配置文件,觸發(fā)Nginx重新載入配置文件,此時(shí)平均響應(yīng)時(shí)間在同樣負(fù)載下較單節(jié)點(diǎn)更為穩(wěn)定,此時(shí)Nginx的配置如圖14所示。3)在Nginx關(guān)閉默認(rèn)健康檢測(cè)功能運(yùn)行場(chǎng)景下,啟動(dòng)壓力測(cè)試30秒后,關(guān)閉其中一個(gè)Tomcat節(jié)點(diǎn)模擬組件宕機(jī)故障,此時(shí)Nginx平均失敗事務(wù)數(shù)占比37.89%,如圖15所示,節(jié)點(diǎn)宕機(jī)后,失敗事務(wù)數(shù)一直高于0。圖12增加Tomcat節(jié)點(diǎn)前后的平均響應(yīng)時(shí)間upstreambookstore-tpcw{#ip_hash;keepalive20;server133.133.134.78:8081fail_timeout=10s;}圖13單節(jié)點(diǎn)后Nginx配置upstreambookst
【部分圖文】:
身的故障等統(tǒng)一歸結(jié)為組件服務(wù)不可用故障。應(yīng)用組件服務(wù)狀態(tài)的檢測(cè)依賴應(yīng)用拓?fù)淠P椭袑?duì)應(yīng)NodeType或者NodeTem-plate指定的check屬性,check屬性指定檢測(cè)應(yīng)用組件健康狀態(tài)的命令,如Tomcat組件可定義check命令為netstat-ntlp|grep8080。默認(rèn)故障check屬性值為提到的檢測(cè)虛機(jī)、物理機(jī)故障以及網(wǎng)絡(luò)故障,通過(guò)心跳機(jī)制與ServiceCluster交互。本文后續(xù)的故障均代指服務(wù)不可用故障。①故障檢測(cè)如圖9所示,應(yīng)用組件初始化時(shí),部署執(zhí)行器會(huì)將拓?fù)淠P椭卸x的組件check信息提交給健康診斷器。健康診斷器以一定的頻率將組件的狀態(tài)信息發(fā)送至ServiceCluster,當(dāng)時(shí)間延遲超過(guò)一定閾值或者健康診斷器診斷出應(yīng)用組件服務(wù)不可用時(shí),ServiceCluster?qū)⒃摻M件的Service狀態(tài)更改為不可用,其他依賴該組件的組件就會(huì)感知到該信息,從而啟動(dòng)動(dòng)態(tài)配置器,重新更改配置參數(shù)。圖9故障檢測(cè)與故障恢復(fù)流程圖②故障恢復(fù)當(dāng)組件產(chǎn)生故障并被檢測(cè)到時(shí),ServiceCluster?qū)⒃摻M件的Service與Attributes值標(biāo)記為不可用,同時(shí)通知監(jiān)測(cè)該組件信息的動(dòng)態(tài)配置器和Manager,重新載入模板生成新的配置文件,重新啟動(dòng)組件。組件間參照依賴關(guān)系描述,自動(dòng)協(xié)調(diào)配置順序,某一組件收到更新配置通知后,會(huì)將自身的狀態(tài)先更改為不可用,從而使依賴該組件的其他組件的動(dòng)態(tài)配置器一直處于等待狀態(tài),直到完成重新配置。Manager則將信息反饋給運(yùn)維管理人員,由運(yùn)維管理人員進(jìn)一步恢復(fù)。2)應(yīng)用組件彈性擴(kuò)展①
各個(gè)組件的初始實(shí)例數(shù),在系統(tǒng)默認(rèn)的組件倉(cāng)庫(kù)中檢測(cè)與拓?fù)淠P椭校危铮洌澹裕澹恚穑欤幔簦鍖?duì)應(yīng)的NodeType,最后將拓?fù)淠P妥詣?dòng)轉(zhuǎn)化為Puppet腳本,自動(dòng)安裝應(yīng)用的各個(gè)組件并啟動(dòng)Agent端的動(dòng)態(tài)配置器完成應(yīng)用的動(dòng)態(tài)配置。該系統(tǒng)的動(dòng)態(tài)配置依賴于服務(wù)發(fā)現(xiàn)工具Consul搭建服務(wù)發(fā)現(xiàn)和keyValue存儲(chǔ)集群,每個(gè)組件的Service以及Attributes信息將通過(guò)Agent端的ConsulAgent發(fā)送至Consul的Server集群。圖11BookStore-TPCW拓?fù)浣#祵?shí)驗(yàn)本實(shí)驗(yàn)主要為驗(yàn)證本文解決的3個(gè)問(wèn)題而設(shè)計(jì),步驟如下:1)定義BookStore-TPCW的STM模型如圖11所示,單個(gè)Tomcat節(jié)點(diǎn),單個(gè)MySQL節(jié)點(diǎn),包含50萬(wàn)條圖書數(shù)據(jù),單個(gè)Nginx節(jié)點(diǎn)。在Nginx的upstream配置模板中聲明對(duì)BookStore-TPCW服務(wù)信息的依賴:{{rangeservice“book-store-tpcw”}}server{{.Address}}∶{{.Port}}max_fails=0fail_timeout=10s;{{end}},其中{{}}定義特定的操作,rangeservice代表遍歷所有可用BookStore-TPCW服務(wù)信息,每條服務(wù)信息生成一條server配置信息。在BookStore-TPCW的context配置模板中聲明對(duì)MySQL服務(wù)信息的依賴,部署應(yīng)用并觀察壓力測(cè)試平均響應(yīng)時(shí)間,以檢測(cè)應(yīng)用是否部署成功。2)運(yùn)行時(shí)為應(yīng)用
0,MySQL版本為5.6.25。實(shí)驗(yàn)環(huán)境采用軟件所軟件工程中心研發(fā)的云平臺(tái)OnceCloud,測(cè)試虛機(jī)的配置為1核CPU,1GB內(nèi)存,壓力測(cè)試工具采用JMeter2.13。5.2實(shí)驗(yàn)結(jié)果與分析1)系統(tǒng)將模型轉(zhuǎn)化為腳本并分發(fā)至3個(gè)虛機(jī)節(jié)點(diǎn),分別對(duì)應(yīng)應(yīng)用的3個(gè)組件,啟動(dòng)動(dòng)態(tài)配置協(xié)議。MySQL節(jié)點(diǎn)等待50萬(wàn)條圖書數(shù)據(jù)初始完畢,將注冊(cè)MySQL服務(wù)信息,觸發(fā)等待中的Tomcat節(jié)點(diǎn)配置context文件并啟動(dòng),此時(shí)應(yīng)用已正確部署。如圖12所示,前1分57秒在500并發(fā)下系統(tǒng)能正確響應(yīng),此時(shí)Nginx的配置如圖13所示。2)如圖12所示,在未中斷服務(wù)的情況下,在1分57秒時(shí)系統(tǒng)自動(dòng)構(gòu)建擴(kuò)展腳本擴(kuò)展Tomcat節(jié)點(diǎn),自動(dòng)修改Nginx的upstream配置文件,觸發(fā)Nginx重新載入配置文件,此時(shí)平均響應(yīng)時(shí)間在同樣負(fù)載下較單節(jié)點(diǎn)更為穩(wěn)定,此時(shí)Nginx的配置如圖14所示。3)在Nginx關(guān)閉默認(rèn)健康檢測(cè)功能運(yùn)行場(chǎng)景下,啟動(dòng)壓力測(cè)試30秒后,關(guān)閉其中一個(gè)Tomcat節(jié)點(diǎn)模擬組件宕機(jī)故障,此時(shí)Nginx平均失敗事務(wù)數(shù)占比37.89%,如圖15所示,節(jié)點(diǎn)宕機(jī)后,失敗事務(wù)數(shù)一直高于0。圖12增加Tomcat節(jié)點(diǎn)前后的平均響應(yīng)時(shí)間upstreambookstore-tpcw{#ip_hash;keepalive20;server133.133.134.78:8081fail_timeout=10s;}圖13單節(jié)點(diǎn)后Nginx配置upstreambookst
【二級(jí)參考文獻(xiàn)】
相關(guān)期刊論文 前3條
1 劉亞軍;;談?wù)Z文教學(xué)如何培養(yǎng)學(xué)生的語(yǔ)感能力[J];科技致富向?qū)?2014年03期
2 張霖;;淺談怎樣在語(yǔ)文教學(xué)中培養(yǎng)學(xué)生語(yǔ)感[J];學(xué)周刊;2012年14期
3 樊俊;;淺談?wù)Z文教學(xué)中語(yǔ)感能力的培養(yǎng)[J];科技信息;2012年12期
【相似文獻(xiàn)】
相關(guān)期刊論文 前10條
1 李曉東;王子彥;;基于構(gòu)件的反射式動(dòng)態(tài)配置技術(shù)研究[J];微計(jì)算機(jī)信息;2008年33期
2 陳雅莉;艾萍;姚成霞;;動(dòng)態(tài)配置機(jī)制及其在水利信息系統(tǒng)中的應(yīng)用[J];水利信息化;2010年04期
3 文志華;周序生;廖立君;李長(zhǎng)云;;一種面向自適應(yīng)的動(dòng)態(tài)配置方法[J];湖南工業(yè)大學(xué)學(xué)報(bào);2009年01期
4 曹e
本文編號(hào):2828869
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/2828869.html
最近更新
教材專著