軟件高可用保證的方法
【專利摘要】軟件高可用保證的方法,涉及軟件【技術(shù)領(lǐng)域】,特別是涉及一種軟件高可用保證的方法。本發(fā)明的軟件高可用保證的方法,其特征在于:程序部署包提交到部署管理器進(jìn)行驗證和分發(fā);部署管理器將程序分發(fā)給各個運行容器;為了保證程序進(jìn)程運行正常,運行容器在啟動以后將會向狀態(tài)服務(wù)器上報進(jìn)程和運行信息,并同時保持網(wǎng)絡(luò)心跳,管理器通過查詢狀態(tài)服務(wù)器和心跳直接管理進(jìn)程。本發(fā)明的軟件高可用保證的方法,信息提交滿足冪等性,保證信息不重復(fù),不丟失,最大程度保障運行穩(wěn)定和資源穩(wěn)定。
【專利說明】軟件高可用保證的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件【技術(shù)領(lǐng)域】,特別是涉及一種軟件高可用保證的方法。
【背景技術(shù)】
[0002]“高可用性”(High Availability)通常來描述一個系統(tǒng)經(jīng)過專門的設(shè)計,從而減少停工時間,而保持其服務(wù)的高度可用性。一個具備高可用性的系統(tǒng)涉及因素比較多;傳統(tǒng)方式需要分配服務(wù)器資源、隨時對服務(wù)器CPU,內(nèi)存,磁盤吞吐,網(wǎng)絡(luò)傳輸?shù)扔布h(huán)境以及數(shù)據(jù)庫的運行狀態(tài)和空間、軟件運行容器情況、線程占用情況等軟件環(huán)境進(jìn)行人工監(jiān)控。
[0003]隨著信息化建設(shè)的深入,系統(tǒng)的性能和穩(wěn)定性要求越來越高,尤其是一些關(guān)鍵業(yè)務(wù)系統(tǒng)對穩(wěn)定性要求也越高。常見很多監(jiān)控軟件可以幫助系統(tǒng)運維人員掌握系統(tǒng)情況,但是大部分監(jiān)控軟件,都是基于模擬用戶進(jìn)行:如果監(jiān)控密集度高則影響系統(tǒng)使用,系統(tǒng)訪問壓力大,同時監(jiān)控的結(jié)果需要通過網(wǎng)絡(luò)進(jìn)行反饋和收集,所以監(jiān)控動作和監(jiān)控數(shù)據(jù)實際上都帶來了網(wǎng)絡(luò)傳輸和硬件的負(fù)載;監(jiān)控不頻繁則準(zhǔn)確度不高,會給運維以及后續(xù)的操作帶來很大影響,甚至造成誤報的情況,運行維護(hù)人員從這樣的告警信息中,很難判斷后續(xù)需要做的操作。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有系統(tǒng)穩(wěn)定性基于監(jiān)控密度過高則影響系統(tǒng)使用,密度過低準(zhǔn)確度低的問題,本發(fā)明提出一種軟件高可用保證的方法。
[0005]本發(fā)明的軟件高可用保證的方法,其特征在于:程序部署包提交到部署管理器進(jìn)行驗證和分發(fā);部署管理器將程序分發(fā)給各個運行容器;為了保證程序進(jìn)程運行正常,運行容器在啟動以后將會向狀態(tài)服務(wù)器上報進(jìn)程和運行信息,并同時保持網(wǎng)絡(luò)心跳,管理器通過查詢狀態(tài)服務(wù)器和心跳直接管理進(jìn)程。
[0006]所述的心跳檢測機(jī)制,具體為:管理器需要通過網(wǎng)絡(luò)和進(jìn)程保持一個TCP長連接,每隔一個時間段通過網(wǎng)絡(luò)向狀態(tài)管理器傳遞一個TCP包。
[0007]管理器需要通過網(wǎng)絡(luò)和進(jìn)程保持一個TCP長連接。如果進(jìn)程停止運行則網(wǎng)絡(luò)連接就一定會斷開。由此判斷進(jìn)程已經(jīng)由于問題而推出。由于TCP連接建立以后,長期不使用連接會被關(guān)閉或者被操作系統(tǒng)回收。因此TCP連接建立以后,需要每隔固定一個固定時間,通過網(wǎng)絡(luò)傳遞一個TCP包。包中傳遞的內(nèi)容不需要具備特殊意義,只需要維持TCP連接即可。系統(tǒng)發(fā)送心跳包的間隔時間應(yīng)當(dāng)可以配置。默認(rèn)為3秒。
[0008]所述的程序進(jìn)程上報機(jī)制,具體為:部署管理器根據(jù)監(jiān)控情況,從整個硬件資源池中找到相對資源占用率低、運行進(jìn)程較少的硬件資源,將程序部署包相對平衡的分布在資源中的各個資源上,同時保存部署包;程序運行以后,向狀態(tài)管理器上報進(jìn)程信息,并生成一個運行時的進(jìn)程分布情況供部署管理器進(jìn)行管理,部署管理器要求上傳部署包時,提供一個的節(jié)點默認(rèn)資源需求。部署管理器根據(jù)這個資源需求和目前硬件資源池狀況,自動計算出一個節(jié)點的默認(rèn)分布情況。程序運行時,部署管理會將這個默認(rèn)分布情況和運行時分布情況進(jìn)行對比,識別出現(xiàn)故障的節(jié)點和位置,進(jìn)而處理。
[0009]因為系統(tǒng)被自動分散到整個環(huán)境中,就減小了資源征用和征用造成的死鎖問題,從資源耗用層面保證系統(tǒng)穩(wěn)定運行。
[0010]作為優(yōu)選,系統(tǒng)采用了校驗和網(wǎng)絡(luò)檢測閥值兩個策略應(yīng)對心跳檢測及上報機(jī)制失敗,具體為:
1)校驗:進(jìn)程信息上報時,會先進(jìn)行連接測試;如果無法上報,則運行模塊無法正常啟動,保證一個事務(wù)性;當(dāng)管理器讀取上報信息時,首先會做一個信息校驗,校驗方法是Crc循環(huán)冗余校驗,保證信息上報完整;
2)網(wǎng)絡(luò)檢測閥值:所以任何網(wǎng)絡(luò)故障,都會造成心跳停止:一次心跳停止認(rèn)為節(jié)點出現(xiàn)了邏輯故障;三次心跳停止則認(rèn)為是物理故障,物理故障時狀態(tài)服務(wù)器上的節(jié)點信息會消息,為了確認(rèn)故障部署管理器會再進(jìn)行一次直接向運行進(jìn)程進(jìn)行信息詢問和驗證,如果仍無法通信則判斷該故障為需要處理的故障。處理邏輯:部署管理器重新從資源池選取資源,然后將已經(jīng)保存的部署包進(jìn)行分發(fā),分發(fā)完成后重新啟動該進(jìn)程。
[0011]發(fā)生網(wǎng)絡(luò)故障時,心跳可能會停止,信息也可能無法上報。這樣造成管理器認(rèn)為發(fā)生了故障。為了處理這個問題,整個機(jī)制必須具備斷線處理和重連機(jī)制。網(wǎng)絡(luò)恢復(fù)后,機(jī)制需要感知到,且提交應(yīng)該提交的所有內(nèi)容。這樣信息才不會因為丟失而形成管理器無法識別的死角。包括心跳在內(nèi),一旦網(wǎng)絡(luò)恢復(fù),心跳隨之恢復(fù)。信息提交滿足冪等性,保證信息不重復(fù),不丟失。
[0012]部署管理器管理的進(jìn)程信息中,可能存在很多的節(jié)點。采用了心跳機(jī)制,節(jié)點信息上報狀態(tài)服務(wù)器并進(jìn)行對比和控制兩個主要功能,能夠保證模塊運行的節(jié)點數(shù)就會保持在一個正常的區(qū)間(如2-4個)。之所以保持在正常區(qū)間,是因為存在網(wǎng)絡(luò)故障等鏈路和不可抗拒因素,節(jié)點數(shù)在一個網(wǎng)絡(luò)故障的時刻,狀態(tài)管理器有可能無法精確的感知到所有運行節(jié)點,所以部署管理器初次定義部署包時,會使用一個區(qū)間來描述部署節(jié)點需求。即最大不超過多少,最小不低于多少的策略。最大程度保障運行穩(wěn)定和資源穩(wěn)定。
【專利附圖】
【附圖說明】
[0013]圖1為本發(fā)明軟件高可用性部署進(jìn)程的結(jié)構(gòu)框圖;
圖2為心跳機(jī)制實現(xiàn)過程的結(jié)構(gòu)框圖;
圖3為故障發(fā)生處理流過程的結(jié)構(gòu)框圖。
【具體實施方式】
[0014]實施例1:本發(fā)明的軟件高可用保證的方法,其特征在于:程序部署包提交到部署管理包進(jìn)行驗證和分發(fā);部署管理器將程序分發(fā)給各個運行容器;為了保證程序進(jìn)程運行正常,運行容器在啟動以后將會向狀態(tài)服務(wù)器上報進(jìn)程和運行信息,并同時保持網(wǎng)絡(luò)心跳,管理器通過查詢狀態(tài)服務(wù)器和心跳直接管理進(jìn)程。
[0015]所述的心跳檢測機(jī)制,具體為:管理器需要通過網(wǎng)絡(luò)和進(jìn)程保持一個TCP長連接,每隔一個時間段通過網(wǎng)絡(luò)向狀態(tài)管理器傳遞一個TCP包。
[0016]管理器需要通過網(wǎng)絡(luò)和進(jìn)程保持一個TCP長連接。如果進(jìn)程停止運行則網(wǎng)絡(luò)連接就一定會斷開。由此判斷進(jìn)程已經(jīng)由于問題而推出。由于TCP連接建立以后,長期不使用連接會被關(guān)閉或者被操作系統(tǒng)回收。因此TCP連接建立以后,需要每隔固定一個固定時間,通過網(wǎng)絡(luò)傳遞一個TCP包。包中傳遞的內(nèi)容不需要具備特殊意義,只需要維持TCP連接即可。系統(tǒng)發(fā)送心跳包的間隔時間應(yīng)當(dāng)可以配置。默認(rèn)為3秒。
[0017]所述的程序進(jìn)程上報機(jī)制,具體為:部署管理器根據(jù)監(jiān)控情況,從整個系統(tǒng)中找到相對資源占用率低、運行進(jìn)程較少的運行容器,將程序部署包相對平衡的分布在各個運行容器中,同時進(jìn)行儲存;程序運行以后,向狀態(tài)管理器上報進(jìn)程信息,并生成一個運行時的進(jìn)程分布情況,狀態(tài)管理器通過默認(rèn)分布情況和運行時分布情況進(jìn)行對比,識別出現(xiàn)故障的節(jié)點和位置,進(jìn)而處理。
[0018]系統(tǒng)采用了校驗和網(wǎng)絡(luò)檢測閥值兩個策略應(yīng)對心跳檢測及上報機(jī)制失敗,具體為:
1)校驗:進(jìn)程信息上報時,會先進(jìn)行連接測試;如果無法上報,則運行模塊無法正常啟動,保證一個事務(wù)性;當(dāng)管理器讀取上報信息時,首先會做一個信息校驗,校驗方法是Crc循環(huán)冗余校驗,保證信息上報完整;
2)網(wǎng)絡(luò)檢測閥值:所以任何網(wǎng)絡(luò)故障,都會造成心跳停止:一次心跳停止認(rèn)為節(jié)點出現(xiàn)了邏輯故障;三次心跳停止則認(rèn)為是物理故障,物理故障時部署管理器會再進(jìn)行一次直接向進(jìn)程進(jìn)行信息詢問和驗證,如果仍無法通信則需要處理的故障,部署管理器通知其他資源,重新啟動該進(jìn)程。
【權(quán)利要求】
1.軟件高可用保證的方法,其特征在于:程序部署包提交到部署管理包進(jìn)行驗證和分發(fā);部署管理器將程序分發(fā)給各個運行容器;為了保證程序進(jìn)程運行正常,運行容器在啟動以后將會向狀態(tài)服務(wù)器上報進(jìn)程和運行信息,并同時保持網(wǎng)絡(luò)心跳,管理器通過查詢狀態(tài)服務(wù)器和心跳直接管理進(jìn)程。
2.如權(quán)利要求1所述的軟件高可用保證的方法,其特征在于涉及的心跳檢測機(jī)制,具體為:管理器需要通過網(wǎng)絡(luò)和進(jìn)程保持一個TCP長連接,每隔一個時間段通過網(wǎng)絡(luò)向狀態(tài)管理器傳遞一個TCP包。
3.如權(quán)利要求1所述的軟件高可用保證的方法,其特征在于涉及的程序進(jìn)程上報機(jī)制,具體為:部署管理器根據(jù)監(jiān)控情況,從整個系統(tǒng)中找到相對資源占用率低、運行進(jìn)程較少的運行容器,將程序部署包相對平衡的分布在各個運行容器中,同時進(jìn)行儲存;程序運行以后,向狀態(tài)管理器上報進(jìn)程信息,并生成一個運行時的進(jìn)程分布情況,狀態(tài)管理器通過默認(rèn)分布情況和運行時分布情況進(jìn)行對比,識別出現(xiàn)故障的節(jié)點和位置,進(jìn)而處理。
4.如權(quán)利要求1所述的軟件高可用保證的方法,其特征在于系統(tǒng)采用了校驗和網(wǎng)絡(luò)檢測閥值兩個策略應(yīng)對心跳檢測及上報機(jī)制失敗,具體為: 1)校驗:進(jìn)程信息上報時,會先進(jìn)行連接測試;如果無法上報,則運行模塊無法正常啟動,保證一個事務(wù)性;當(dāng)管理器讀取上報信息時,首先會做一個信息校驗,校驗方法是crc循環(huán)冗余校驗,保證信息上報完整; 2)網(wǎng)絡(luò)檢測閥值:所以任何網(wǎng)絡(luò)故障,都會造成心跳停止:一次心跳停止認(rèn)為節(jié)點出現(xiàn)了邏輯故障;三次心跳停止則認(rèn)為是物理故障,物理故障時部署管理器會再進(jìn)行一次直接向進(jìn)程進(jìn)行信息詢問和驗證,如果仍無法通信則需要處理的故障,部署管理器通知其他資源,重新啟動該進(jìn)程。
【文檔編號】G06F11/30GK104331353SQ201410552601
【公開日】2015年2月4日 申請日期:2014年10月17日 優(yōu)先權(quán)日:2014年10月17日
【發(fā)明者】王航, 趙俊輝 申請人:云南遠(yuǎn)信數(shù)通科技有限公司