国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種負(fù)載均衡系統(tǒng)中的健康檢查方法及裝置與流程

      文檔序號(hào):11263554閱讀:336來源:國知局
      一種負(fù)載均衡系統(tǒng)中的健康檢查方法及裝置與流程

      本發(fā)明涉及負(fù)載均衡領(lǐng)域,尤其涉及一種負(fù)載均衡系統(tǒng)中的健康檢查方法及裝置。



      背景技術(shù):

      健康檢查是負(fù)載均衡服務(wù)中非常重要的功能之一。負(fù)載均衡系統(tǒng)中的一個(gè)負(fù)載均衡服務(wù)主要包括以下幾個(gè)元素:服務(wù)ip地址,服務(wù)端口,后端服務(wù)器ip地址,后端服務(wù)器端口。用于提供負(fù)載均衡服務(wù)的負(fù)載均衡器將流量轉(zhuǎn)發(fā)到后端服務(wù)器上,并且通過周期性的健康檢查來探測(cè)后端服務(wù)器是否在正常提供服務(wù)。

      當(dāng)前的健康檢查方式是:對(duì)每個(gè)負(fù)載均衡服務(wù)的每個(gè)后端服務(wù)器分別進(jìn)行健康檢查,并分別根據(jù)對(duì)每個(gè)后端服務(wù)器健康檢查的結(jié)果決定是否向該后端服務(wù)器進(jìn)行流量轉(zhuǎn)發(fā)。

      健康檢查涉及以下幾個(gè)參數(shù):

      (1)健康檢查地址(dst),即負(fù)載均衡器對(duì)后端服務(wù)器進(jìn)行健康檢查的目標(biāo)地址和端口;

      (2)健康檢查源地址(src),即負(fù)載均衡器進(jìn)行健康檢查時(shí)的源地址;

      (3)健康檢查時(shí)間間隔(interval),即負(fù)載均衡器對(duì)后端服務(wù)器進(jìn)行健康檢查的時(shí)間間隔;

      (4)健康檢查超時(shí)時(shí)間(timeout),如果在這段時(shí)間內(nèi)負(fù)載均衡器沒有和后端服務(wù)器成功建立tcp(transmissioncontrolprotocol傳輸控制協(xié)議)連接,或者建立tcp連接成功但是后端服務(wù)器在這段時(shí)間內(nèi)沒有給予負(fù)載均衡器響應(yīng),那么就認(rèn)為健康檢查失?。?/p>

      (5)健康檢查正常閾值(rise),當(dāng)某臺(tái)后端服務(wù)器已經(jīng)處于異常狀態(tài), 對(duì)它健康檢查連續(xù)成功rise次,就認(rèn)為這臺(tái)后端服務(wù)器恢復(fù)到正常狀態(tài);

      (6)健康檢查異常閾值(fall),當(dāng)某臺(tái)后端服務(wù)器已經(jīng)處于正常狀態(tài),對(duì)它健康檢查連續(xù)失敗fall次,就認(rèn)為這臺(tái)后端服務(wù)器處于異常狀態(tài)。

      對(duì)于一個(gè)負(fù)載均衡服務(wù),健康檢查的流程是這樣的:

      一臺(tái)后端服務(wù)器初始狀態(tài)為正常(也可以初始狀態(tài)為異常,取決于用戶的配置需求)。

      負(fù)載均衡器對(duì)后端服務(wù)器以interval的時(shí)間間隔分別對(duì)每臺(tái)后端服務(wù)器(無論是正常狀態(tài)還是異常狀態(tài))進(jìn)行健康檢查。對(duì)于原本狀態(tài)為正常的后端服務(wù)器,如果連續(xù)fall次健康檢查失敗,則將這臺(tái)后端服務(wù)器標(biāo)記為異常,并且不會(huì)再對(duì)它進(jìn)行流量轉(zhuǎn)發(fā)。對(duì)于原本狀態(tài)為異常的后端服務(wù)器,如果連續(xù)rise次健康檢查成功,則將這臺(tái)后端服務(wù)器標(biāo)記為正常,并且開始對(duì)它進(jìn)行流量轉(zhuǎn)發(fā)。

      這里,健康檢查失敗的定義是,負(fù)載均衡器和后端服務(wù)器建立tcp連接出錯(cuò),或者在timeout時(shí)間內(nèi)建立tcp連接失敗,或者是建立tcp連接成功,但是在timeout時(shí)間內(nèi)后端服務(wù)器沒有給負(fù)載均衡器返回響應(yīng)。

      本申請(qǐng)的發(fā)明人在設(shè)計(jì)本申請(qǐng)的過程中發(fā)現(xiàn),現(xiàn)有的健康檢查方式存在如下問題:

      往往同一臺(tái)后端服務(wù)器會(huì)被配置在多個(gè)負(fù)載均衡服務(wù)里,對(duì)于每個(gè)負(fù)載均衡服務(wù),負(fù)載均衡器會(huì)針對(duì)配置在該負(fù)載均衡服務(wù)里的每個(gè)后端服務(wù)器分別按照上述流程進(jìn)行健康檢查。這意味著如果一個(gè)后端服務(wù)器被配置在多個(gè)負(fù)載均衡服務(wù)中,該后端服務(wù)器就可能承受多個(gè)健康檢查的流量,并且這些流量隨著配置該后端服務(wù)器的負(fù)載均衡服務(wù)數(shù)量的增加而線性增加,將會(huì)給該后端服務(wù)器帶來一定的壓力。假定一臺(tái)后端服務(wù)器被配置在m個(gè)負(fù)載均衡服務(wù)中,那么對(duì)于該后端服務(wù)器來說,一個(gè)interval內(nèi)接收到的健康檢查次數(shù)就為m。如果由于業(yè)務(wù)的豐富變化,需要將這臺(tái)后端服務(wù)器配置到其他負(fù)載均衡服務(wù)中,即增大m,那么該后端服務(wù)器一個(gè)interval內(nèi)接收到的健康檢查次數(shù)也會(huì)增大。如果后端服務(wù)器本身的性能不特別強(qiáng)大,那么健康檢查的次數(shù)增大后,產(chǎn)生的流量就會(huì)給后端服務(wù)器帶來一定的負(fù)擔(dān)。如果后端 服務(wù)器上的配置不夠優(yōu)化,那么健康檢查的次數(shù)增大后,也會(huì)造成過多的垃圾日志。



      技術(shù)實(shí)現(xiàn)要素:

      本申請(qǐng)?zhí)峁┝艘环N負(fù)載均衡系統(tǒng)中的健康檢查方法及裝置,可以解決當(dāng)一個(gè)后端服務(wù)器被配置在多個(gè)負(fù)載均衡服務(wù)中時(shí),該后端服務(wù)器可能承受多個(gè)健康檢查的流量的問題。

      本申請(qǐng)采用如下技術(shù)方案。

      一種負(fù)載均衡系統(tǒng)中的健康檢查方法,包括:

      將所述負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并;所述預(yù)定參數(shù)至少包括健康檢查地址;

      周期性對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行合并后的健康檢查任務(wù)。

      可選地,所述預(yù)定參數(shù)還包括以下任一個(gè)或任幾個(gè):健康檢查源地址、健康檢查時(shí)間間隔、健康檢查超時(shí)時(shí)間。

      可選地,所述將負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并包括:

      當(dāng)所述負(fù)載均衡系統(tǒng)中新增一個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù)后,解析出新增的健康檢查任務(wù)的所述預(yù)定參數(shù);

      在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢,如果已保存的任務(wù)中存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的第一任務(wù),則將所述新增的健康檢查任務(wù)作為所述第一任務(wù)的子任務(wù),將所述第一任務(wù)作為合并后的健康檢查任務(wù);如果已保存的任務(wù)中不存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的任務(wù),則新建第二任務(wù)并保存,將所述新增的健康檢查任務(wù)作為所述第二任務(wù)的子任務(wù),將所述新增的健康檢查任務(wù)的預(yù)定參數(shù)作為所述第二任務(wù)的預(yù)定參數(shù),將所述第二任務(wù)作為合并后的健康檢查任務(wù)。

      可選地,所述在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢包括:

      對(duì)所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到哈希值;以所述哈希值作為關(guān)鍵字, 在已保存的任務(wù)中查詢是否存在以相同哈希值作為索引的任務(wù);其中,每個(gè)所述已保存的任務(wù)的索引分別是以該任務(wù)的所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到的哈希值。

      可選地,所述的方法還包括:

      每次對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行所述合并后的健康檢查任務(wù)之后,對(duì)于所述合并后的健康檢查任務(wù)所包括的每個(gè)子任務(wù),分別進(jìn)行如下操作:

      如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為正常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)fall次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為異常;其中,fall為該子任務(wù)的健康檢查異常閾值;

      如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為異常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)rise次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為正常;其中,rise為該子任務(wù)的健康檢查正常閾值。

      一種負(fù)載均衡系統(tǒng)中的健康檢查裝置,包括:

      合并模塊,用于將所述負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并;所述預(yù)定參數(shù)至少包括健康檢查地址;

      執(zhí)行模塊,用于周期性對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行合并后的健康檢查任務(wù)。

      可選地,所述預(yù)定參數(shù)還包括以下任一個(gè)或任幾個(gè):健康檢查源地址、健康檢查時(shí)間間隔、健康檢查超時(shí)時(shí)間。

      可選地,所述合并模塊包括:

      解析單元,用于當(dāng)所述負(fù)載均衡系統(tǒng)中新增一個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù)后,解析出新增的健康檢查任務(wù)的所述預(yù)定參數(shù);

      更新單元,用于在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢,如果已保存的任務(wù)中存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的第一任務(wù), 則將所述新增的健康檢查任務(wù)作為所述第一任務(wù)的子任務(wù),將所述第一任務(wù)作為合并后的健康檢查任務(wù);如果已保存的任務(wù)中不存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的任務(wù),則新建第二任務(wù)并保存,將所述新增的健康檢查任務(wù)作為所述第二任務(wù)的子任務(wù),將所述新增的健康檢查任務(wù)的預(yù)定參數(shù)作為所述第二任務(wù)的預(yù)定參數(shù),將所述第二任務(wù)作為合并后的健康檢查任務(wù)。

      可選地,所述更新單元在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢包括:

      所述更新單元對(duì)所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到哈希值;以所述哈希值作為關(guān)鍵字,在已保存的任務(wù)中查詢是否存在以相同哈希值作為索引的任務(wù);其中,每個(gè)所述已保存的任務(wù)的索引分別是以該任務(wù)的所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到的哈希值。

      可選地,所述的裝置還包括:

      狀態(tài)設(shè)置模塊,用于每次對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行所述合并后的健康檢查任務(wù)之后,對(duì)于所述合并后的健康檢查任務(wù)所包括的每個(gè)子任務(wù),分別進(jìn)行如下操作:如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為正常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)fall次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為異常;其中,fall為該子任務(wù)的健康檢查異常閾值;如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為異常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)rise次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為正常;其中,rise為該子任務(wù)的健康檢查正常閾值。

      本申請(qǐng)包括以下優(yōu)點(diǎn):

      本申請(qǐng)的一個(gè)備選方案能夠根據(jù)健康檢查配置的參數(shù)進(jìn)行聚合,從而減少后端服務(wù)器上健康檢查任務(wù)的數(shù)量。

      本申請(qǐng)的一個(gè)備選方案在新增健康檢查任務(wù)時(shí)首先查找是否已存在預(yù)定參數(shù)相同的任務(wù),如果已存在則直接加入相應(yīng)任務(wù),如果不存在則新建任 務(wù)并保存、加入,這樣可以將每個(gè)健康檢查任務(wù)的除了預(yù)定參數(shù)以外的參數(shù)保留在子任務(wù)中。

      本申請(qǐng)的一個(gè)備選方案中,根據(jù)哈希值查找是否已存在預(yù)定參數(shù)相同的任務(wù),加快了查找效率。

      本申請(qǐng)的一個(gè)備選方案能夠根據(jù)每個(gè)子任務(wù)的健康檢查正常閾值、健康檢查異常閾值分別反饋健康檢查的結(jié)果。

      當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。

      附圖說明

      圖1是實(shí)施例一的負(fù)載均衡系統(tǒng)中的健康檢查方法的流程圖;

      圖2是示例的流程示意圖;

      圖3是實(shí)施例二的負(fù)載均衡系統(tǒng)中的健康檢查裝置的示意圖。

      具體實(shí)施方式

      下面將結(jié)合附圖及實(shí)施例對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行更詳細(xì)的說明。

      需要說明的是,如果不沖突,本申請(qǐng)實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié)合,均在本申請(qǐng)的保護(hù)范圍之內(nèi)。另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

      在一個(gè)典型的配置中,客戶端或認(rèn)證系統(tǒng)的計(jì)算設(shè)備可包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存(memory)。

      內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。內(nèi)存可能包括模塊1,模塊2,……,模塊n(n為大于2的整數(shù))。

      計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由 任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom),快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

      實(shí)施例一、一種負(fù)載均衡系統(tǒng)中的健康檢查方法,如圖1所示,包括步驟s110~s120:

      s110、將所述負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并;所述預(yù)定參數(shù)至少包括健康檢查地址,即健康檢查的目標(biāo)地址和端口;

      s120、周期性對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行合并后的健康檢查任務(wù)。

      本實(shí)施例對(duì)后端服務(wù)器發(fā)起健康檢查時(shí),可以將同一個(gè)后端服務(wù)器上多個(gè)屬于不同負(fù)載均衡服務(wù)、但目標(biāo)地址和端口相同的健康檢查任務(wù)(即:針對(duì)同一臺(tái)后端服務(wù)器的同一個(gè)端口進(jìn)行的健康檢查)進(jìn)行聚合,從而達(dá)到對(duì)該后端服務(wù)器只發(fā)起一個(gè)健康檢查任務(wù)的效果。

      本實(shí)施例可以但不限于應(yīng)用在負(fù)載均衡器中。

      本實(shí)施例的一種備選方案中,所述預(yù)定參數(shù)還可以包括以下任一個(gè)或任幾個(gè):健康檢查源地址、健康檢查時(shí)間間隔、健康檢查超時(shí)時(shí)間。

      本備選方案中,如果預(yù)定參數(shù)包括健康檢查時(shí)間間隔,則意味著進(jìn)行合并的健康檢查任務(wù)的周期相同,因此周期性執(zhí)行合并后的健康檢查任務(wù)時(shí),就是按照健康檢查時(shí)間間隔執(zhí)行,無需額外計(jì)算或選擇執(zhí)行周期/時(shí)間間隔。在其它備選方案中,健康檢查時(shí)間間隔不同的健康檢查也可以合并,合并時(shí)在參與合并的健康檢查的參數(shù)中,挑選最短的健康檢查時(shí)間間隔作為執(zhí)行合 并后的健康檢查任務(wù)的時(shí)間間隔。

      本備選方案中,如果預(yù)定參數(shù)包括健康檢查源地址,則意味著進(jìn)行合并的健康檢查任務(wù)都是同一個(gè)負(fù)載均衡器發(fā)起的,該負(fù)載均衡器上直接可以得到執(zhí)行結(jié)果。在其它備選方案中,也可以采用負(fù)載均衡器之外的設(shè)備執(zhí)行合并后的健康檢查任務(wù),此時(shí)健康檢查源地址不同的健康檢查也可以合并,合并時(shí)記錄參與合并的每個(gè)健康檢查的健康檢查源地址,執(zhí)行完成后向所記錄的每個(gè)健康檢查源地址對(duì)應(yīng)的負(fù)載均衡器分別反饋執(zhí)行結(jié)果。

      本備選方案中,如果預(yù)定參數(shù)包括健康檢查超時(shí)時(shí)間,則意味著進(jìn)行合并的健康檢查任務(wù)的失敗判斷標(biāo)準(zhǔn)是相同的,因此可以對(duì)于合并后的健康檢查任務(wù)一次性判斷出是否失敗。在其它備選方案中,健康檢查超時(shí)時(shí)間不同的健康檢查也可以合并,合并時(shí)記錄參與合并的每個(gè)健康檢查的健康檢查超時(shí)時(shí)間,執(zhí)行合并后的健康檢查任務(wù)時(shí),分別按照所記錄的健康檢查超時(shí)時(shí)間判斷是否失敗。

      本實(shí)施例的一種備選方案中,所述將負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并可以包括:

      當(dāng)所述負(fù)載均衡系統(tǒng)中新增一個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù)后,解析出新增的健康檢查任務(wù)的所述預(yù)定參數(shù);

      在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢,如果已保存的任務(wù)中存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的第一任務(wù),則將所述新增的健康檢查任務(wù)作為所述第一任務(wù)的子任務(wù),將所述第一任務(wù)作為合并后的健康檢查任務(wù);如果已保存的任務(wù)中不存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的任務(wù),則新建第二任務(wù)并保存,將所述新增的健康檢查任務(wù)作為所述第二任務(wù)的子任務(wù),將所述新增的健康檢查任務(wù)的預(yù)定參數(shù)作為所述第二任務(wù)的預(yù)定參數(shù),將所述第二任務(wù)作為合并后的健康檢查任務(wù)。

      本備選方案中,每個(gè)已保存的任務(wù)即合并后的健康檢查任務(wù),其中包括一個(gè)或多個(gè)子任務(wù),一個(gè)已保存的任務(wù)中所包括的所有子任務(wù)的預(yù)定參數(shù)都相同。其中,每個(gè)子任務(wù)相當(dāng)于一個(gè)健康檢查任務(wù),即針對(duì)一個(gè)負(fù)載均衡服務(wù)的一個(gè)后端服務(wù)器所進(jìn)行的健康檢查;每個(gè)子任務(wù)對(duì)應(yīng)于一個(gè)負(fù)載均衡服務(wù)。每個(gè)已保存的任務(wù)的預(yù)定參數(shù)即該任務(wù)中每個(gè)子任務(wù)的預(yù)定參數(shù)。

      本備選方案中,所述已保存的任務(wù)可以但不限于保存在任務(wù)列表中。

      其它備選方案中,也可以采用其它方式進(jìn)行合并操作;比如每次新增健康檢查任務(wù)時(shí)記錄參數(shù),為所有預(yù)定參數(shù)相同的健康檢查任務(wù)設(shè)置相同的標(biāo)識(shí),一個(gè)標(biāo)識(shí)的健康檢查任務(wù)只執(zhí)行一次。

      本備選方案的一種實(shí)施方式中,所述在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢可以包括:

      對(duì)所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到哈希值;以所述哈希值作為關(guān)鍵字,在已保存的任務(wù)中查詢是否存在以相同哈希值作為索引的任務(wù);其中,每個(gè)所述已保存的任務(wù)的索引分別是以該任務(wù)的所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到的哈希值。

      比如保存的任務(wù)為任務(wù)1和任務(wù)2,任務(wù)1和任務(wù)2都是合并后的健康檢查任務(wù),各自包含一個(gè)或多個(gè)預(yù)定參數(shù)相同的子任務(wù)。假設(shè)預(yù)定參數(shù)為健康檢查地址dst、健康檢查源地址src、健康檢查時(shí)間間隔interval和健康檢查超時(shí)時(shí)間timeout,則任務(wù)1的索引為:對(duì)任務(wù)1的dst、src、interval、timeout(即任務(wù)1所包含的每個(gè)子任務(wù)的dst、src、interval、timeout)進(jìn)行哈希運(yùn)算得到的哈希值hash-1;任務(wù)2的索引為:對(duì)任務(wù)2的dst、src、interval、timeout(即任務(wù)2所包含的每個(gè)子任務(wù)的dst、src、interval、timeout)進(jìn)行哈希運(yùn)算得到的哈希值hash-2。假設(shè)新增的健康檢查任務(wù)的預(yù)定參數(shù)與任務(wù)1的預(yù)定參數(shù)完全相同,則對(duì)新增的健康檢查任務(wù)的預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到的結(jié)果也是hash-1,根據(jù)hash-1將可以查找出任務(wù)1。

      其它實(shí)施方式中,也可以采用別的方式比較預(yù)定參數(shù)是否相同,比如可以直接用新增健康檢查任務(wù)的預(yù)定參數(shù)和每個(gè)保存的任務(wù)的預(yù)定參數(shù)對(duì)應(yīng)進(jìn)行比較。

      本備選方案中,一個(gè)保存的任務(wù)中如果包含兩個(gè)或兩個(gè)以上的子任務(wù),則這些子任務(wù)的其它參數(shù)可以相同,也可以不同(全部不同或部分不同)。這里的其它參數(shù)可以但不限于是指健康檢查涉及的上述6個(gè)參數(shù)中所述預(yù)定參數(shù)之外的參數(shù)。

      本備選方案的一種實(shí)施方式中,所述方法還可以包括:

      每次對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行所述合并后的健康檢查任務(wù)之后,對(duì)于所述合并后的健康檢查任務(wù)所包括的每個(gè)子任務(wù),分別進(jìn)行如下操作:

      如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為正常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)fall次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為異常;其中,fall為該子任務(wù)的健康檢查異常閾值;

      如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為異常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)rise次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為正常;其中,rise為該子任務(wù)的健康檢查正常閾值。

      本實(shí)施方式中,一個(gè)合并后的健康檢查任務(wù)中所包括的不同子任務(wù)的rise和fall可以相同,也可以不同;在進(jìn)行正常/異常狀態(tài)的轉(zhuǎn)換時(shí),是分別針對(duì)每個(gè)子任務(wù)進(jìn)行判斷。因此,當(dāng)兩個(gè)子任務(wù)的rise和fall不同而timeout相同時(shí),在健康檢查連續(xù)失敗幾次后,有可能同一臺(tái)后端服務(wù)器針對(duì)一個(gè)負(fù)載均衡服務(wù)的狀態(tài)仍保持正常,針對(duì)另一個(gè)負(fù)載均衡服務(wù)的狀態(tài)則從正常改為異常。在進(jìn)行負(fù)載均衡服務(wù)時(shí),對(duì)于狀態(tài)為正常的后端服務(wù)器進(jìn)行流量轉(zhuǎn)發(fā),對(duì)于狀態(tài)為異常的后端服務(wù)器則不轉(zhuǎn)發(fā)流量,因此對(duì)于配置到多個(gè)負(fù)載均衡服務(wù)中的同一臺(tái)后端服務(wù)器而言,有可能轉(zhuǎn)發(fā)一部分負(fù)載均衡服務(wù)的流量,不轉(zhuǎn)發(fā)另一部分負(fù)載均衡服務(wù)的流量。

      可見,本實(shí)施方式在合并執(zhí)行的情況下,能夠針對(duì)不同的負(fù)載均衡服務(wù)獨(dú)立設(shè)置、判斷狀態(tài)的轉(zhuǎn)換條件,可以滿足不同負(fù)載均衡服務(wù)的個(gè)性化需求。

      本實(shí)施方式中,健康檢查失敗的含義可以為:和后端服務(wù)器建立tcp連接出錯(cuò),或者在timeout時(shí)間內(nèi)建立tcp連接失敗,或者是建立tcp連接成功,但是在timeout時(shí)間內(nèi)后端服務(wù)器沒有返回響應(yīng)。

      本實(shí)施方式中,對(duì)于合并后的健康檢查任務(wù)中所包含的每個(gè)子任務(wù)各自對(duì)應(yīng)的負(fù)載均衡服務(wù)而言,同一個(gè)后端服務(wù)器的初始狀態(tài)可以相同或不同;設(shè)置成不同時(shí)的例子如下:比如合并后的健康檢查任務(wù)包含子任務(wù)a和子任務(wù)b,針對(duì)子任務(wù)a對(duì)應(yīng)的負(fù)載均衡服務(wù),后端服務(wù)器x的初始狀態(tài)設(shè) 置為正常,針對(duì)子任務(wù)b對(duì)應(yīng)的負(fù)載均衡服務(wù),后端服務(wù)器x的初始狀態(tài)設(shè)置為異常。

      本實(shí)施方式中,還可以保存每個(gè)子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的標(biāo)識(shí)。

      在其它實(shí)施方式中,不同子任務(wù)的參數(shù)中,除了rise、fall及預(yù)定參數(shù)以外的參數(shù)如果不同,則也可以按照子任務(wù)分別進(jìn)行處理。比如預(yù)定參數(shù)不包括健康檢查超時(shí)時(shí)間的情況下,一個(gè)已保存的任務(wù)中包括兩個(gè)子任務(wù):子任務(wù)a和子任務(wù)b。假設(shè)子任務(wù)a和子任務(wù)b的健康檢查超時(shí)時(shí)間不相同,則根據(jù)子任務(wù)a的timeout判斷對(duì)于子任務(wù)a是否健康檢查失敗,根據(jù)子任務(wù)b的timeout判斷對(duì)于子任務(wù)b是否健康檢查失敗。假設(shè)子任務(wù)a的timeout長于子任務(wù)b的timeout,則有可能對(duì)于同一臺(tái)后端服務(wù)器進(jìn)行合并后的健康檢查任務(wù)后,確定對(duì)于子任務(wù)b而言健康檢查失敗,對(duì)于子任務(wù)a則成功。

      下面用一個(gè)示例說明上述實(shí)施例,該示例中定義了一個(gè)健康檢查任務(wù)列表checker_queue,這個(gè)列表中的每個(gè)元素對(duì)應(yīng)著一個(gè)合并后的健康檢查任務(wù)checker。每個(gè)checker又包含一個(gè)或多個(gè)子任務(wù)sub_checker,每個(gè)sub_checker分別對(duì)應(yīng)不同的負(fù)載均衡服務(wù),每個(gè)sub_checker的參數(shù)來源于所對(duì)應(yīng)的負(fù)載均衡服務(wù)的健康檢查配置。

      當(dāng)新增一個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù)時(shí),發(fā)起健康檢查任務(wù)的流程如圖2所示,包括步驟201~206:

      201、解析出新增的健康檢查任務(wù)的健康檢查配置(即參數(shù)),主要是預(yù)定參數(shù),本示例中預(yù)定參數(shù)為src、dst、interval、timeout,將這四個(gè)預(yù)定參數(shù)作為一個(gè)(src,dst,interval,timeout)四元組信息。

      202、利用上述四元組信息,根據(jù)哈希算法計(jì)算出一個(gè)哈希值,以這個(gè)哈希值作為關(guān)鍵字在checker_queue中判斷是否已經(jīng)存在預(yù)定參數(shù)與新增的健康檢查任務(wù)相同的checker。checker_queue中,每個(gè)checker的索引為對(duì)該checker的上述四元組信息進(jìn)行哈希計(jì)算得到的哈希值。如果已經(jīng)存在則進(jìn)行步驟203,不存在則進(jìn)行步驟204。

      203、取出該預(yù)定參數(shù)相同的checker,進(jìn)行步驟205。

      204、根據(jù)新增的健康檢查任務(wù)的健康檢查配置新建一個(gè)checker,并插入到checker_queue中,進(jìn)行步驟205。

      205、根據(jù)新增的健康檢查任務(wù)的信息(包括但不限于:預(yù)定參數(shù)以外的參數(shù)、所屬負(fù)載均衡服務(wù)的標(biāo)識(shí)等)生成sub_checker,并加入到步驟203取出的checker中或步驟204新建的checker中。

      206、針對(duì)新增的健康檢查任務(wù)所加入的checker啟動(dòng)健康檢查任務(wù);本步驟中可以按照該checker的參數(shù)(也就是新增的健康檢查任務(wù)的參數(shù))相應(yīng)啟動(dòng)健康檢查任務(wù),比如根據(jù)dst對(duì)相應(yīng)后端服務(wù)器執(zhí)行健康檢查,根據(jù)interval來確定健康檢查的時(shí)間間隔等。

      本示例中,對(duì)于checker_queue中的每個(gè)checker只啟動(dòng)一個(gè)健康檢查任務(wù);因此,對(duì)于四元組(src,dst,interval,timeout)相同的多個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù),也只會(huì)有一個(gè)checker,因此只會(huì)啟動(dòng)一個(gè)健康檢查任務(wù)。

      本實(shí)施例中,雖然同一個(gè)checker當(dāng)中的sub_checker的四元組(src,dst,interval,timeout)完全相同,但是另外兩個(gè)元素rise和fall不一定相同。

      對(duì)于一個(gè)健康檢查任務(wù)來說,它對(duì)應(yīng)于一個(gè)checker,以及其下的多個(gè)sub_checker。當(dāng)對(duì)一臺(tái)后端服務(wù)器的一次健康檢查完成之后,針對(duì)每個(gè)sub_checker分別獲取rise和fall值后按照如下流程進(jìn)行處理:

      如果這臺(tái)后端服務(wù)器對(duì)于該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)的狀態(tài)為正常,且連續(xù)fall次健康檢查失敗,則針對(duì)該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù),將這臺(tái)后端服務(wù)器標(biāo)記為異常;這也就意味著在狀態(tài)改為正常前,該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)中不會(huì)再對(duì)該后端服務(wù)器進(jìn)行流量轉(zhuǎn)發(fā)(相當(dāng)于在該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)中刪除該后端服務(wù)器)。

      如果這臺(tái)后端服務(wù)器對(duì)于該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)的狀態(tài)為異常,且連續(xù)rise次健康檢查成功,則針對(duì)該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù),將這臺(tái)后端服務(wù)器標(biāo)記為正常;這也就意味著在狀態(tài)改為異常前,該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)中會(huì)對(duì)該后端服務(wù)器進(jìn)行流量轉(zhuǎn)發(fā)(相當(dāng)于在該sub_checker對(duì)應(yīng)的負(fù)載均衡服務(wù)中添加該后端服務(wù)器)。

      本示例通過對(duì)健康檢查配置相同的負(fù)載均衡服務(wù)進(jìn)行健康檢查任務(wù)的 聚合,來減少健康檢查任務(wù)的數(shù)量。負(fù)載均衡器根據(jù)健康檢查配置(src,dst,interval,timeout)四元組進(jìn)行聚合,對(duì)這個(gè)四元組相同的健康檢查任務(wù)只發(fā)起一個(gè)健康檢查任務(wù),在這個(gè)任務(wù)執(zhí)行過程中還可以進(jìn)行后端服務(wù)器的添加和刪除。通過這樣的設(shè)計(jì)可以減少健康檢查的次數(shù),使得健康檢查流量不會(huì)因?yàn)樨?fù)載均衡服務(wù)的增加而增加,可以達(dá)到降低健康檢查流量對(duì)后端服務(wù)器壓力的目的。

      實(shí)施例二、一種負(fù)載均衡系統(tǒng)中的健康檢查裝置,如圖3所示,包括:

      合并模塊21,用于將所述負(fù)載均衡系統(tǒng)中預(yù)定參數(shù)相同的健康檢查任務(wù)進(jìn)行合并;所述預(yù)定參數(shù)至少包括健康檢查地址;

      執(zhí)行模塊22,用于周期性對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行合并后的健康檢查任務(wù)。

      本實(shí)施例中,所述合并模塊21是所述裝置中負(fù)責(zé)合并健康檢查任務(wù)的部分,可以是軟件、硬件或兩者的結(jié)合。

      本實(shí)施例中,所述執(zhí)行模塊22是所述裝置中負(fù)責(zé)執(zhí)行合并后的健康檢查任務(wù)的部分,可以是軟件、硬件或兩者的結(jié)合。

      本實(shí)施例的一個(gè)備選方案中,所述預(yù)定參數(shù)還可以包括以下任一個(gè)或任幾個(gè):健康檢查源地址、健康檢查時(shí)間間隔、健康檢查超時(shí)時(shí)間。

      本實(shí)施例的一個(gè)備選方案中,所述合并模塊可以包括:

      解析單元,用于當(dāng)所述負(fù)載均衡系統(tǒng)中新增一個(gè)負(fù)載均衡服務(wù)的健康檢查任務(wù)后,解析出新增的健康檢查任務(wù)的所述預(yù)定參數(shù);

      更新單元,用于在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢,如果已保存的任務(wù)中存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的第一任務(wù),則將所述新增的健康檢查任務(wù)作為所述第一任務(wù)的子任務(wù),將所述第一任務(wù)作為合并后的健康檢查任務(wù);如果已保存的任務(wù)中不存在與所述新增的健康檢查任務(wù)的預(yù)定參數(shù)相同的任務(wù),則新建第二任務(wù)并保存,將所述新增的健康檢查任務(wù)作為所述第二任務(wù)的子任務(wù),將所述新增的健康檢查任務(wù)的預(yù)定參數(shù)作為所述第二任務(wù)的預(yù)定參數(shù),將所述第二任務(wù)作為合并后的健康檢查 任務(wù)。

      本備選方案中,所述解析單元是所述合并模塊中負(fù)責(zé)解析預(yù)定參數(shù)的部分,可以是軟件、硬件或兩者的結(jié)合。

      本備選方案中,所述更新單元是所述合并模塊中負(fù)責(zé)合并健康檢查任務(wù)的部分,可以是軟件、硬件或兩者的結(jié)合。

      本備選方案的一種實(shí)施方式中,所述更新單元在已保存的任務(wù)中根據(jù)所述預(yù)定參數(shù)進(jìn)行查詢可以包括:

      所述更新單元對(duì)所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到哈希值;以所述哈希值作為關(guān)鍵字,在已保存的任務(wù)中查詢是否存在以相同哈希值作為索引的任務(wù);其中,每個(gè)所述已保存的任務(wù)的索引分別是以該任務(wù)的所述預(yù)定參數(shù)進(jìn)行哈希運(yùn)算得到的哈希值。

      本備選方案的一種實(shí)施方式中,所述的裝置還可以包括:

      狀態(tài)設(shè)置模塊,用于每次對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器執(zhí)行所述合并后的健康檢查任務(wù)之后,對(duì)于所述合并后的健康檢查任務(wù)所包括的每個(gè)子任務(wù),分別進(jìn)行如下操作:如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為正常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)fall次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為異常;其中,fall為該子任務(wù)的健康檢查異常閾值;如果所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器針對(duì)該子任務(wù)所對(duì)應(yīng)的負(fù)載均衡服務(wù)的當(dāng)前狀態(tài)為異常,且對(duì)所述健康檢查地址對(duì)應(yīng)的后端服務(wù)器連續(xù)rise次健康檢查失敗,則將該后端服務(wù)器針對(duì)該子任務(wù)的狀態(tài)標(biāo)記為正常;其中,rise為該子任務(wù)的健康檢查正常閾值。

      其它實(shí)施細(xì)節(jié)可參見實(shí)施例一。

      本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn)。相應(yīng)地,上述實(shí)施例中的各模塊/單元可以 采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。本申請(qǐng)不限制于任何特定形式的硬件和軟件的結(jié)合。

      當(dāng)然,本申請(qǐng)還可有其他多種實(shí)施例,在不背離本申請(qǐng)精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本申請(qǐng)作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本申請(qǐng)的權(quán)利要求的保護(hù)范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1