本發(fā)明涉及計算機網(wǎng)絡
技術領域:
,尤其涉及一種負載均衡方法、裝置和系統(tǒng)。
背景技術:
:隨著網(wǎng)絡通信技術的迅速發(fā)展、互聯(lián)網(wǎng)應用的持續(xù)深化、所承載信息的日益豐富,互聯(lián)網(wǎng)已成為人類社會重要的基礎設施,網(wǎng)絡業(yè)務量、訪問量和數(shù)據(jù)量呈現(xiàn)出爆炸式的增長。對此,單服務器的計算能力已經(jīng)捉襟見肘,各種集群技術應運而生。例如,服務器集群是一種服務器系統(tǒng),它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協(xié)作完成計算工作。在某種意義上,他們可以被看作是一臺服務器。集群中的單個服務器通常通過局域網(wǎng)連接,但也有其它的可能連接方式。為了充分發(fā)揮服務器集群各個服務器的性能,提高資源利用率與運行效率,必須通過有效的方式協(xié)調(diào)各服務器工作,平衡各節(jié)點的負載。目前,面向服務器集群的負載均衡大都只能基于ip地址進行,如果服務器集群對外提供多項服務,則此時無法對訪問不同服務的流量進行精細的區(qū)分和分流,導致負載均衡效果不佳。因此,迫切需要一種更先進的負載均衡方案。技術實現(xiàn)要素:為此,本發(fā)明提供一種負載均衡方案,以力圖解決或者至少緩解上面存在的至少一個問題。根據(jù)本發(fā)明的一個方面,提供了一種負載均衡方法,適于在基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng)中的第一網(wǎng)絡裝置處執(zhí)行,網(wǎng)絡系統(tǒng)還包括第二網(wǎng)絡裝置和服務器集群,其中第一網(wǎng)絡裝置和第二網(wǎng)絡裝置分別充當軟件定義網(wǎng)絡中的控制器和轉(zhuǎn)發(fā)元件,服務器集群以統(tǒng)一ip地址向用戶提供至少一項服務,該方法包括步驟:接收來自服務器集群中每個服務器的服務注冊請求,服務注冊請求至少包括該服務器提供的服務以及服務器集群的負載分擔策略;對于該服務器集群提供的每項服務,根據(jù)所接收的服務注冊請求生成對應于該項服務的組表表項和流表表項,流表表項包括提供該項服務的服務器集群的統(tǒng)一ip地址、端口信息以及對應于該項服務的組表表項,以便訪問服務器集群的網(wǎng)絡報文與該流表表項的統(tǒng)一ip地址和端口信息相匹配時,根據(jù)相應的組表表項以對網(wǎng)絡報文進行處理;組表表項包括多個操作,每個操作均對應于服務器集群中提供該項服務的服務器之一,以便根據(jù)該組表表項對網(wǎng)絡報文進行處理時,基于服務器集群的負載分擔策略,選擇該組表表項包含的多個操作之一執(zhí)行,從而將該網(wǎng)絡報文轉(zhuǎn)發(fā)至所選擇的操作對應的服務器;以及將服務器集群的負載分擔策略、以及所生成的流表表項和組表表項發(fā)送至第二網(wǎng)絡裝置,以便第二網(wǎng)絡裝置將訪問服務器集群提供的任一項服務的報文,通過流表表項、組表表項和負載分擔策略轉(zhuǎn)發(fā)至服務器集群中提供該項服務的某個服務器。在根據(jù)本發(fā)明的負載均衡方法中,服務信息包括該服務器提供服務的端口信息,對于該服務器集群提供的每項服務,根據(jù)所接收的服務注冊請求生成對應于該項服務的組表表項和流表表項的步驟包括:對于所接收的每個服務器的服務注冊請求,查找是否存在包含有服務器集群的統(tǒng)一ip地址和該服務注冊請求中的端口信息的流表表項;若存在,則在該流表表項對應的組表表項中增加對應于該服務器的操作;若不存在,則生成相應的流表表項和組表表項。在根據(jù)本發(fā)明的負載均衡方法中,對于每項服務,若根據(jù)對應于該項服務的組表表項對網(wǎng)絡報文進行處理時選擇轉(zhuǎn)發(fā)的服務器出現(xiàn)故障,則重新選擇該組表表項包含的多個操作中的另一個并執(zhí)行,從而將報文轉(zhuǎn)發(fā)至服務器集群中提供該項服務的另一個服務器。在根據(jù)本發(fā)明的負載均衡方法中,服務注冊請求還包括服務器的mac地址,對于每項服務,對應于該項服務的組表表項包含的每個操作指示:將網(wǎng)絡報文的目的mac地址轉(zhuǎn)換為該服務器的mac地址。在根據(jù)本發(fā)明的負載均衡方法中,該方法還包括步驟:對于服務器集群提供的每項服務,定期探測提供該項服務的服務器是否通信可達,若否,則刪除對應于該項服務的組表表項中對應于該服務器的操作。在根據(jù)本發(fā)明的負載均衡方法中,負載分擔策略包括散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個。在根據(jù)本發(fā)明的負載均衡方法中,服務器集群的統(tǒng)一ip地址由第一網(wǎng)絡裝置創(chuàng)建并返回至該服務器集群中的每個服務器。根據(jù)本發(fā)明的另一個方面,提供了一種負載均衡方法,適于在基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng)中的第二網(wǎng)絡裝置處執(zhí)行,網(wǎng)絡系統(tǒng)還包括第一網(wǎng)絡裝置和服務器集群,其中第一網(wǎng)絡裝置和第二網(wǎng)絡裝置分別充當軟件定義網(wǎng)絡中的控制器和轉(zhuǎn)發(fā)元件,服務器集群以統(tǒng)一ip地址向用戶提供至少一項服務,第二網(wǎng)絡裝置還預先存儲有服務器集群的負載分擔策略、對應于該服務器集群提供的每項服務的組表表項和流表表項,該方法包括步驟:響應于接收到訪問所述服務器集群、與提供某項服務的服務器集群的統(tǒng)一ip地址和端口信息相匹配的網(wǎng)絡報文,查找對應于該項服務的流表表項;獲取查找到的流表表項包含的對應于該項服務的組表表項,以便根據(jù)該組表表項對網(wǎng)絡報文進行處理;以及基于服務器集群的負載分擔策略,選擇對應于該項服務的組表表項包含的多個操作之一執(zhí)行,從而將網(wǎng)絡報文轉(zhuǎn)發(fā)至所選擇的操作對應的服務器,其中對應于該項服務的組表表項包含的每個操作均對應于服務器集群中提供該項服務的服務器之一。在根據(jù)本發(fā)明的負載均衡方法中,該方法還包括步驟:若根據(jù)對應于該項服務的組表表項對網(wǎng)絡報文進行處理時選擇轉(zhuǎn)發(fā)的服務器出現(xiàn)故障,則重新選擇該組表表項包含的多個操作中的另一個并執(zhí)行,從而將網(wǎng)絡報文轉(zhuǎn)發(fā)至服務器集群中提供該項服務的另一個服務器。在根據(jù)本發(fā)明的負載均衡方法中,對于服務器集群提供的每項服務,對應于該項服務的組表表項包含的每個操作均指示將網(wǎng)絡報文的目的mac地址轉(zhuǎn)換為服務器集群中對應于該操作的服務器的mac地址。在根據(jù)本發(fā)明的負載均衡方法中,負載分擔策略包括散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個。在根據(jù)本發(fā)明的負載均衡方法中,該方法還包括步驟:接收來自第一網(wǎng)絡裝置的對應于服務器集群提供的每項服務的組表表項和流表表項;更新存儲的對應表項。根據(jù)本發(fā)明的另一個方面,提供了一種負載均衡方法,適于在基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng)中執(zhí)行,網(wǎng)絡系統(tǒng)包括第一網(wǎng)絡裝置、第二網(wǎng)絡裝置和服務器集群,其中第一網(wǎng)絡裝置和第二網(wǎng)絡裝置分別充當軟件定義網(wǎng)絡中的控制器和轉(zhuǎn)發(fā)元件,服務器集群以統(tǒng)一ip地址向用戶提供至少一項服務,該方法包括步驟:在第一網(wǎng)絡裝置處執(zhí)行根據(jù)本發(fā)明所述的負載均衡方法;在第二網(wǎng)絡裝置處執(zhí)行根據(jù)本發(fā)明所述的負載均衡方法;以及在服務器集群中的每個服務器處,建立對應于該統(tǒng)一ip地址的環(huán)回接口,以處理發(fā)送至該統(tǒng)一ip地址的報文;以及向第一網(wǎng)絡裝置發(fā)送服務注冊請求,服務注冊請求至少包括該服務器提供的服務信息以及服務器集群的負載分擔策略。在根據(jù)本發(fā)明的負載均衡方法中,服務器集群的統(tǒng)一ip地址由第一網(wǎng)絡裝置響應于服務注冊請求而創(chuàng)建并返回至服務器集群中的每個服務器。根據(jù)本發(fā)明的另一個方面,提供了一種充當軟件定義網(wǎng)絡中的控制器的第一網(wǎng)絡裝置,包括:一個或多個處理器;存儲器;以及一個或多個程序,其中一個或多個程序存儲在存儲器中并被配置為由一個或多個處理器執(zhí)行,一個或多個程序包括用于執(zhí)行根據(jù)本發(fā)明的負載均衡方法中的任一方法的指令。根據(jù)本發(fā)明的另一個方面,提供了一種存儲一個或多個程序的計算機可讀存儲介質(zhì),一個或多個程序包括指令,指令當由第一網(wǎng)絡裝置執(zhí)行時,使得第一網(wǎng)絡裝置執(zhí)行根據(jù)本發(fā)明的負載均衡方法中的任一方法。根據(jù)本發(fā)明的另一個方面,提供了一種充當軟件定義網(wǎng)絡中的轉(zhuǎn)發(fā)元件的第二網(wǎng)絡裝置,包括:一個或多個處理器;存儲器;以及一個或多個程序,其中一個或多個程序存儲在存儲器中并被配置為由一個或多個處理器執(zhí)行,一個或多個程序包括用于執(zhí)行根據(jù)本發(fā)明的負載均衡方法中的任一方法的指令。根據(jù)本發(fā)明的另一個方面,提供了一種存儲一個或多個程序的計算機可讀存儲介質(zhì),一個或多個程序包括指令,指令當由第二網(wǎng)絡裝置執(zhí)行時,使得第二網(wǎng)絡裝置執(zhí)行根據(jù)本發(fā)明的負載均衡方法中的任一方法。根據(jù)本發(fā)明的還有一個方面,提供了一種基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng),包括:根據(jù)本發(fā)明的充當軟件定義網(wǎng)絡中的控制器的第一網(wǎng)絡裝置;至少一個根據(jù)本發(fā)明的充當軟件定義網(wǎng)絡中的轉(zhuǎn)發(fā)元件的第二網(wǎng)絡裝置;以及以統(tǒng)一ip地址向用戶提供至少一項服務的服務器集群,其中每個服務器建立有對應于該統(tǒng)一ip地址的環(huán)回接口,以處理發(fā)送至該統(tǒng)一ip地址的報文,并適于向第一網(wǎng)絡裝置發(fā)送服務注冊請求,服務注冊請求至少包括該服務器提供的服務以及服務器集群的負載分擔策略。在根據(jù)本發(fā)明的網(wǎng)絡系統(tǒng)中,服務器集群的統(tǒng)一ip地址由第一網(wǎng)絡裝置響應于服務注冊請求而創(chuàng)建并返回至服務器集群中的每個服務器。根據(jù)本發(fā)明的負載均衡方法方案,通過在充當軟件定義網(wǎng)絡中的控制器的第一網(wǎng)絡裝置處為服務器集群分配統(tǒng)一ip地址,使得該服務器集群內(nèi)的服務器可以對外呈現(xiàn)出一個ip地址,便于管理。進一步地,還通過在第一網(wǎng)絡裝置處為服務器集群提供的每項服務生成對應的流表表項和組表表項,并發(fā)送至充當軟件定義網(wǎng)絡中的轉(zhuǎn)發(fā)元件的第二網(wǎng)絡裝置,使得第二網(wǎng)絡裝置可以在接收到訪問服務器集群提供的任意一項服務的網(wǎng)絡報文時,先匹配到對應于該項服務的流表表項,而后又匹配到對應于該項服務的組表表項,基于服務器集群的負載分擔策略將報文轉(zhuǎn)發(fā)到提供該項服務的服務器中,從而精細地區(qū)分開了訪問不同服務的流量,實現(xiàn)對訪問不同服務的流量的均衡。附圖說明為了實現(xiàn)上述以及相關目的,本文結合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護的主題的范圍內(nèi)。通過結合附圖閱讀下面的詳細描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯。遍及本公開,相同的附圖標記通常指代相同的部件或元素。圖1示出了根據(jù)本發(fā)明的一個示例性實施方式的基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng)100的結構框圖;圖2示出了根據(jù)本發(fā)明一個示例性實施方式的服務器200的結構框圖;圖3示出了根據(jù)本發(fā)明一個示例性實施方式的服務注冊方法300的流程圖;圖4示出了根據(jù)本發(fā)明一個示例性實施方式的第一網(wǎng)絡裝置120的結構框圖;圖5示出了根據(jù)本發(fā)明一個示例性實施方式的服務注冊方法500的流程圖;圖6示出了根據(jù)本發(fā)明一個示例性實施方式的負載均衡方法600的流程圖;圖7示出了根據(jù)本發(fā)明一個示例性實施方式的第二網(wǎng)絡裝置140的結構框圖;以及圖8示出了根據(jù)本發(fā)明一個示例性實施方式的負載均衡方法800的流程圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。圖1示出了根據(jù)本發(fā)明一個示例性實施方式的基于軟件定義網(wǎng)絡的網(wǎng)絡系統(tǒng)100的結構框圖。如圖1所示,該網(wǎng)絡系統(tǒng)100包括第一網(wǎng)絡裝置120、至少一個第二網(wǎng)絡裝置140(圖1僅示例性地示出一個第二網(wǎng)絡裝置140)、以及服務器集群200。其中,第一網(wǎng)絡裝置120和第二網(wǎng)絡裝置140分別充當軟件定義網(wǎng)絡中的控制器和轉(zhuǎn)發(fā)元件,第一網(wǎng)絡裝置120可以通過與第二網(wǎng)絡裝置140之間的連接、使用例如openflow之類的控制平面通信協(xié)議來控制第二網(wǎng)絡裝置140。服務器集群160則可以通過第二網(wǎng)絡裝置140分別與第一網(wǎng)絡裝置120、用戶進行通信,并向用戶提供至少一項服務。服務器集群160包括多個獨立的服務器200,該服務器200可以實現(xiàn)為例如文件服務器、數(shù)據(jù)庫服務器、應用程序服務器和網(wǎng)絡服務器等,也可以實現(xiàn)為包括桌面計算機和筆記本計算機配置的個人計算機。此外,還可以實現(xiàn)為小尺寸便攜(或者移動)電子設備的一部分,這些電子設備可以是諸如蜂窩電話、個人數(shù)字助理(pda)、個人媒體播放器設備、無線網(wǎng)絡瀏覽設備、個人頭戴設備、應用專用設備、或者可以包括上面任何功能的混合設備。圖2示出了根據(jù)本發(fā)明一個示例性實施方式的服務器200的結構框圖。在基本的配置202中,服務器200典型地包括系統(tǒng)存儲器206和一個或者多個處理器204。存儲器總線208可以用于在處理器204和系統(tǒng)存儲器206之間的通信。取決于期望的配置,處理器204可以是任何類型的處理,包括但不限于:微處理器((μp)、微控制器(μc)、數(shù)字信息處理器(dsp)或者它們的任何組合。處理器204可以包括諸如一級高速緩存210和二級高速緩存212之類的一個或者多個級別的高速緩存、處理器核心214和寄存器216。示例的處理器核心214可以包括運算邏輯單元(alu)、浮點數(shù)單元(fpu)、數(shù)字信號處理核心(dsp核心)或者它們的任何組合。示例的存儲器控制器218可以與處理器204一起使用,或者在一些實現(xiàn)中,存儲器控制器218可以是處理器204的一個內(nèi)部部分。取決于期望的配置,系統(tǒng)存儲器206可以是任意類型的存儲器,包括但不限于:易失性存儲器(諸如ram)、非易失性存儲器(諸如rom、閃存等)或者它們的任何組合。系統(tǒng)存儲器206可以包括操作系統(tǒng)220、一個或者多個程序222以及數(shù)據(jù)224。數(shù)據(jù)224可以包括可用于執(zhí)行指令的程序數(shù)據(jù)228。在一些實施方式中,程序222可以被配置為在操作系統(tǒng)220上由一個或者多個處理器204利用程序數(shù)據(jù)228執(zhí)行指令。服務器200還可以包括有助于從各種接口設備(例如,輸出設備242、外設接口244和通信設備246)到基本配置202經(jīng)由總線/接口控制器230的通信的接口總線240。示例的輸出設備242包括圖形處理單元248和音頻處理單元250。它們可以被配置為有助于經(jīng)由一個或者多個a/v端口252與諸如顯示器或者揚聲器之類的各種外部設備進行通信。示例外設接口244可以包括串行接口控制器254和并行接口控制器256,它們可以被配置為有助于經(jīng)由一個或者多個i/o端口258和諸如輸入設備(例如,鍵盤、鼠標、筆、語音輸入設備、觸摸輸入設備)或者其他外設(例如打印機、掃描儀等)之類的外部設備進行通信。示例的通信設備246可以包括網(wǎng)絡控制器260,其可以被布置為便于經(jīng)由一個或者多個通信端口264與一個或者多個其他設備262(例如用戶、第一網(wǎng)絡裝置120和第二網(wǎng)絡裝置140等)通過網(wǎng)絡通信鏈路的通信。網(wǎng)絡通信鏈路可以是通信介質(zhì)的一個示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波或者其他傳輸機制之類的調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結構、程序模塊,并且可以包括任何信息遞送介質(zhì)。“調(diào)制數(shù)據(jù)信號”可以這樣的信號,它的數(shù)據(jù)集中的一個或者多個或者它的改變可以在信號中編碼信息的方式進行。作為非限制性的示例,通信介質(zhì)可以包括諸如有線網(wǎng)絡或者專線網(wǎng)絡之類的有線介質(zhì),以及諸如聲音、射頻(rf)、微波、紅外(ir)或者其它無線介質(zhì)在內(nèi)的各種無線介質(zhì)。這里使用的術語計算機可讀介質(zhì)可以包括存儲介質(zhì)和通信介質(zhì)二者。需要注意的是,整個服務器集群160對外呈現(xiàn)唯一的統(tǒng)一ip地址,以便于管理。其中,每個服務器200均建立有對應于該統(tǒng)一ip地址的環(huán)回接口,以處理發(fā)送至該統(tǒng)一ip地址的報文。該統(tǒng)一ip地址可以由管理員預先配置,也可以通過向第一網(wǎng)絡裝置120注冊而獲取。下面結合圖3對服務器集群160向第一網(wǎng)絡裝置120注冊并獲取其統(tǒng)一ip地址的過程進行描述。對于每個服務器200,其存儲的一個或多個程序222均包括用于執(zhí)行根據(jù)本發(fā)明的服務注冊方法300中任一方法的指令。圖3示出了根據(jù)本發(fā)明一個示例性實施方式的服務注冊方法300的流程圖。如圖3所示,該服務注冊方法300始于步驟s320。在步驟s320中,向第一網(wǎng)絡裝置120發(fā)送服務注冊請求,該服務注冊請求至少可以包括該服務器200提供的服務信息以及服務器集群160的負載分擔策略,該服務信息通常可以包括服務器200提供該項服務的端口。當然,服務注冊請求也會包括該服務器200的ip地址和mac地址(也就是服務器實際用于接收報文的接口的ip地址和mac地址)。而后在步驟s340中,接收第一網(wǎng)絡裝置120響應于服務注冊請求而返回的對應于服務器集群160的統(tǒng)一ip地址,該統(tǒng)一ip地址由第一網(wǎng)絡裝置120為該服務器集群160唯一創(chuàng)建。接收到該統(tǒng)一ip地址之后,在步驟s360中,在服務器200本地建立對應于該統(tǒng)一ip地址的環(huán)回接口,以處理發(fā)送至該統(tǒng)一ip地址的報文。這樣,服務器集群160內(nèi)所有服務器200即可共用同一個ip地址對外提供服務,操作便利,無需人工配置。圖4示出了根據(jù)本發(fā)明一個示例性實施方式的第一網(wǎng)絡裝置120的結構框圖。在基本的配置中,第一網(wǎng)絡裝置120典型地包括一個或者多個處理器121和存儲器122。存儲器總線可以用于在處理器121和系統(tǒng)存儲器122之間的通信。處理器121可以是任何類型的處理,包括但不限于:微處理器((μp)、微控制器(μc)、數(shù)字信息處理器(dsp)或者它們的任何組合。處理器121還可以包括諸如一級高速緩存和二級高速緩存之類的一個或者多個級別的高速緩存、處理器核心和寄存器。示例的存儲器控制器可以與處理器121一起使用,或者在一些實現(xiàn)中,存儲器控制器可以是處理器121的一個內(nèi)部部分。存儲器122可以是任意類型的存儲器,包括但不限于:易失性存儲器(諸如ram)、非易失性存儲器(諸如rom、閃存等)或者它們的任何組合。存儲器122可以包括操作系統(tǒng)、一個或者多個程序123以及程序數(shù)據(jù)。在一些實施方式中,操作系統(tǒng)可以提供基本處理、i/o和網(wǎng)絡能力,程序123可以被配置為在操作系統(tǒng)上由一個或者多個處理器121利用程序數(shù)據(jù)執(zhí)行指令。在一些實施方式中,第一網(wǎng)絡裝置120可以對服務器集群160提供的至少一項服務進行注冊,并創(chuàng)建對應于該服務器集群160的統(tǒng)一ip地址。相應地,第一網(wǎng)絡裝置120的一個或多個程序123可以包括用于執(zhí)行根據(jù)本發(fā)明的服務注冊方法500中任一方法的指令。圖5示出了根據(jù)本發(fā)明一個示例性實施方式的服務注冊方法500的流程圖。如圖5所示,該服務注冊方法500始于步驟s520。在步驟s520中,接收來自服務器集群160中每個服務器200的服務注冊請求,該服務注冊請求如前所述,至少可以包括服務器集群160的負載分擔策略、該服務器200提供的服務信息、以及服務器200的ip地址和mac地址。而后在步驟s540中,創(chuàng)建對應于該服務器集群160的統(tǒng)一ip地址并返回至該服務器集群160中的每個服務器200。具體地,對于每個服務器200的服務注冊請求,可以先查找是否已為該服務器200所屬的服務器集群160創(chuàng)建統(tǒng)一ip地址,若是,則返回該統(tǒng)一ip地址,否則創(chuàng)建對應的統(tǒng)一ip地址并返回。根據(jù)本發(fā)明的一個實施方式,根據(jù)所接收的服務注冊請求,第一網(wǎng)絡裝置120可以生成并存儲服務注冊信息表。對于每個服務器集群160,服務注冊信息表可以記錄有該服務器集群160的統(tǒng)一ip地址、負載分擔策略、所提供的服務、每項服務對應的服務器200的端口、ip地址和mac地址,例如下表1的示例:該服務注冊信息表中的記錄可以根據(jù)所接收的服務注冊請求進行更新或創(chuàng)建,以配合服務器集群160中的配置變化。進一步地,對于服務器集群160提供的每項服務,還可以定期探測提供該項服務的服務器是否通信可達,若否,則刪除服務注冊信息表對應于該服務器的記錄。這樣,就在第一網(wǎng)絡裝置120處實現(xiàn)了對服務器集群160的注冊和維護。其中,若服務器集群160的統(tǒng)一ip地址不是由第一網(wǎng)絡裝置120創(chuàng)建,則服務注冊請求還需要包括服務器集群160的統(tǒng)一ip地址。第一網(wǎng)絡裝置120的一個或多個程序123還可以包括用于執(zhí)行根據(jù)本發(fā)明的負載均衡方法600中任一方法的指令。圖6示出了根據(jù)本發(fā)明一個示例性實施方式的負載均衡方法600的流程圖。如圖6所示,該負載均衡方法300始于步驟s620。步驟s620如前述步驟s520相同,接收來自服務器集群160中每個服務器200的服務注冊請求,服務注冊請求至少可以包括該服務器提供的服務信息以及服務器集群的負載分擔策略。而后在步驟s640中,對于該服務器集群160提供的每項服務,根據(jù)所接收的服務注冊請求生成對應于該項服務的組表表項和流表表項。該組表表項和流表表項均遵循第一網(wǎng)絡裝置120與第二網(wǎng)絡裝置140通信采用的協(xié)議(例如openflow)而生成。其中,流表表項包括提供該項服務的服務器集群的統(tǒng)一ip地址、端口信息以及對應于該項服務的組表表項,以便訪問服務器集群的網(wǎng)絡報文與該流表表項的統(tǒng)一ip地址和端口信息相匹配時,根據(jù)相應的組表表項對網(wǎng)絡報文進行處理。具體地,對于每項服務,若網(wǎng)絡報文的目的ip地址為服務器集群160的統(tǒng)一ip地址、目的端口為提供該項服務的端口,則認為該報文為訪問該項服務的報文,與對應于該項服務的流表表項相匹配,進而可以執(zhí)行該流表表項包含的動作,該動作指示:根據(jù)對應于該項服務的組表表項對該報文進行處理。下表2是一個流表表項的示例:目的ip地址目的端口動作192.168.1.128244組表表項groupid=5若用戶的報文的目的ip地址為192.168.1.128(即前述表1中集群a的統(tǒng)一ip地址)、目的端口為244(即前述表1中集群a提供的服務1對應的端口),則該報文為訪問前述表1中集群a提供的服務1的報文,可以匹配到本示例的流表表項,也就是對應于前述表1中集群a提供的服務1的流表表項。同時,執(zhí)行該流表表項中的動作:根據(jù)組表標識為5的組表表項來對報文進行處理,組表標識為5的組表表項即對應于服務1的組表表項。可以理解地,流表表項的匹配條件還可以包括更多,例如ethernet包頭,ip包頭,tcp/udp包頭,vlanid等,本發(fā)明對此不作限制。對于每項服務,對應于該項服務的組表表項包括多個操作,每個操作均對應于服務器集群中提供該項服務的服務器之一,以便根據(jù)該組表表項對網(wǎng)絡報文進行處理時,基于服務器集群的負載分擔策略,選擇該組表表項包含的多個操作之一執(zhí)行,從而將該網(wǎng)絡報文轉(zhuǎn)發(fā)至所選擇的操作對應的服務器。根據(jù)本發(fā)明的一個實施方式,其中每個操作可以指示:將網(wǎng)絡報文的目的mac地址轉(zhuǎn)換為該服務器的mac地址。下表3是一個組表表項的示例:其中,groupid為組表標識,grouptype為組表類型,actionbuckets為該組表表項包含的多個操作,組表類型為select類型表示:基于調(diào)度算法,僅僅執(zhí)行組表表項中的某一個actionbucket。那么根據(jù)本示例的對應于前述表1中集群a提供的服務1的組表表項對網(wǎng)絡報文進行處理時,可以基于負載分擔策略,選擇該組表表項包含的三個操作中的一個去執(zhí)行,這三個操作分別對應于前述表1中集群a提供的服務1對應的三個服務器,也就是說最后將訪問服務1的報文轉(zhuǎn)發(fā)到了提供服務1的這三個服務器中的一個。這里負載分擔策略由管理員預先為服務器集群160配置,可以為任何實現(xiàn)負載均衡的算法,例如散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個,本發(fā)明對此不作限制。另外,對于每項服務,若根據(jù)對應于該項服務的組表表項對網(wǎng)絡報文進行處理時選擇轉(zhuǎn)發(fā)的服務器200出現(xiàn)故障,還可以重新選擇該組表表項包含的多個操作中的另一個執(zhí)行,以將報文轉(zhuǎn)發(fā)至服務器集群160中提供該項服務的另一個服務器200,而不是直接丟棄報文。這樣大大地減少了業(yè)務的中斷。進一步地,考慮到服務器的故障問題,根據(jù)本發(fā)明的一個實施方式,對于服務器集群160提供的每項服務,還可以定期探測提供該項服務的服務器200是否通信可達,若否,則刪除對應于該項服務的組表表項中對應于該服務器200的操作,減少不必要的轉(zhuǎn)發(fā)失敗操作。根據(jù)本發(fā)明的一個實施方式,在前述生成對應于該項服務的組表表項和流表表項之前,對于所接收的每個服務器的服務注冊請求,可以先查找是否已經(jīng)存在有包含有服務器集群的統(tǒng)一ip地址和該服務注冊請求中的端口信息的流表表項。若存在,則在該流表表項對應的組表表項中增加對應于該服務器的操作。若不存在,則再生成相應的流表表項和組表表項。綜上,生成對應于服務器集群160提供的每項服務的組表和流表之后,在步驟s660中,將服務器集群的負載分擔策略、以及所生成的流表表項和組表表項發(fā)送至第二網(wǎng)絡裝置140,以便第二網(wǎng)絡裝置140將訪問服務器集群160提供的任一項服務的報文,通過這些流表表項、組表表項和負載分擔策略轉(zhuǎn)發(fā)至服務器集群160中提供該項服務的某個服務器200。圖7示出了根據(jù)本發(fā)明一個示例性實施方式的第二網(wǎng)絡裝置140的結構框圖。在基本的配置中,第二網(wǎng)絡裝置140典型地包括一個或者多個處理器141和存儲器142。存儲器總線可以用于在處理器141和系統(tǒng)存儲器142之間的通信。處理器141可以是任何類型的處理,包括但不限于:微處理器((μp)、微控制器(μc)、數(shù)字信息處理器(dsp)或者它們的任何組合。處理器141還可以包括諸如一級高速緩存和二級高速緩存之類的一個或者多個級別的高速緩存、處理器核心和寄存器。示例的存儲器控制器可以與處理器141一起使用,或者在一些實現(xiàn)中,存儲器控制器可以是處理器141的一個內(nèi)部部分。存儲器142可以是任意類型的存儲器,包括但不限于:易失性存儲器(諸如ram)、非易失性存儲器(諸如rom、閃存等)或者它們的任何組合。存儲器142可以包括操作系統(tǒng)、一個或者多個程序143以及程序數(shù)據(jù)。在一些實施方式中,操作系統(tǒng)可以提供基本處理、i/o和網(wǎng)絡能力,程序143可以被配置為在操作系統(tǒng)上由一個或者多個處理器141利用程序數(shù)據(jù)執(zhí)行指令。其中,第二網(wǎng)絡裝置140的一個或多個程序143可以包括用于執(zhí)行根據(jù)本發(fā)明的負載均衡方法800中任一方法的指令。圖8示出了根據(jù)本發(fā)明一個示例性實施方式的負載均衡方法800的流程圖。如圖8所示,該負載均衡方法800始于步驟s820。顯然地,第二網(wǎng)絡裝置140可以接收來自第一網(wǎng)絡裝置120的對應于服務器集群160提供的每項服務的組表表項和流表表項,并將其存儲或者更新其存儲的對應表項,流表表項和組表表項的內(nèi)容可參見前述內(nèi)容。同時,也可以接收來自第一網(wǎng)絡裝置120的服務器集群160的負載分擔策略,并將其作為組表類型為select的組表表項的調(diào)度算法。因此,在步驟s820中,可以直接響應于接收到訪問服務器集群的網(wǎng)絡報文、且該網(wǎng)絡報文與提供某項服務的服務器集群的統(tǒng)一ip地址和端口信息相匹配,查找與該網(wǎng)絡報文相匹配的、對應于該項服務的流表表項。也就是說,若網(wǎng)絡報文的目的ip地址和目的端口分別為服務器集群160的統(tǒng)一ip地址和提供該服務器集群160的某項服務的端口,則可以查找對應于該項服務、同樣包含有服務器集群160的統(tǒng)一ip地址和提供該項服務的端口的流表表項。而后在步驟s840中,獲取查找到的流表表項包含的對應于該項服務的組表表項,以便根據(jù)該組表表項對網(wǎng)絡報文進行處理。最后在步驟s860中,基于服務器集群160的負載分擔策略,選擇對應于該項服務的組表表項包含的多個操作之一執(zhí)行,從而將網(wǎng)絡報文轉(zhuǎn)發(fā)至所選擇的操作對應的服務器。其中對應于該項服務的組表表項包含的每個操作均對應于服務器集群160中提供該項服務的一個服務器,并可以指示將網(wǎng)絡報文的目的mac地址轉(zhuǎn)換為服務器集群160中對應于該操作的服務器200的mac地址。根據(jù)本發(fā)明的一個實施方式,若根據(jù)對應于該項服務的組表表項對網(wǎng)絡報文進行處理時選擇轉(zhuǎn)發(fā)的服務器200出現(xiàn)故障,則可以重新選擇該組表表項包含的多個操作中的另一個執(zhí)行,從而將報文轉(zhuǎn)發(fā)至服務器集群160中提供該項服務的另一個服務器200。此外,這里負載分擔策略為可以實現(xiàn)負載均衡的算法,例如可以包括散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個,本發(fā)明對此不作限制。其中,散列調(diào)度算法例如可以是:基于網(wǎng)絡報文的目標ip地址或者源ip地址生成散列鍵(hashkey),根據(jù)該散列鍵從靜態(tài)分配的散列表中找出對應的服務器。輪詢調(diào)度算法例如可以是:將網(wǎng)絡報文按順序輪流分配至服務器集群中的服務器上,每個服務器不論實際連接和負載、均地位相等。最少連接調(diào)度算法例如可以是:根據(jù)目前所有活躍連接,動態(tài)地將網(wǎng)絡報文轉(zhuǎn)發(fā)至當前服務器集群中建立最少連接的服務器。加權調(diào)度算法例如可以是:根據(jù)服務器集群中每個服務器的權重值(例如預先配置的優(yōu)先級或者當前負載狀態(tài))來進行網(wǎng)絡報文的轉(zhuǎn)發(fā)。以上在結合圖6對在第一網(wǎng)絡裝置120處執(zhí)行的負載均衡方法600的具體描述中已經(jīng)對各步驟的相應處理進行了詳細解釋,這里不再對重復內(nèi)容進行贅述。應當理解,這里描述的各種技術可結合硬件或軟件,或者它們的組合一起實現(xiàn)。從而,本發(fā)明的方法和設備,或者本發(fā)明的方法和設備的某些方面或部分可采取嵌入有形媒介,例如軟盤、cd-rom、硬盤驅(qū)動器或者其它任意機器可讀的存儲介質(zhì)中的程序代碼(即指令)的形式,其中當程序被載入諸如計算機之類的機器,并被該機器執(zhí)行時,該機器變成實踐本發(fā)明的設備。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設備一般包括處理器、處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件),至少一個輸入裝置,和至少一個輸出裝置。其中,存儲器被配置用于存儲程序代碼;處理器被配置用于根據(jù)該存儲器中存儲的該程序代碼中的指令,執(zhí)行本發(fā)明的各種方法。以示例而非限制的方式,計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)存儲諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)等信息。通信介質(zhì)一般以諸如載波或其它傳輸機制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。以上的任一種的組合也包括在計算機可讀介質(zhì)的范圍之內(nèi)。本發(fā)明還可以包括:a4、如a1-3中任一個所述的方法,其中,所述服務注冊請求還包括該服務器的mac地址,對于每項服務,對應于該項服務的組表表項包含的每個操作指示:將所述網(wǎng)絡報文的目的mac地址轉(zhuǎn)換為該服務器的mac地址。a5、如a1-4中任一個所述的方法,其中,所述方法還包括步驟:對于服務器集群提供的每項服務,定期探測提供該項服務的服務器是否通信可達,若否,則刪除對應于該項服務的組表表項中對應于該服務器的操作。a6、如a1-5中任一個所述的方法,其中,所述負載分擔策略包括散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個。a7、如a1-6中任一個所述的方法,其中,所述服務器集群的統(tǒng)一ip地址由所述第一網(wǎng)絡裝置創(chuàng)建并返回至該服務器集群中的每個服務器。b11、如b8-10中任一個所述的方法,其中,所述負載分擔策略包括散列調(diào)度算法、輪詢調(diào)度算法、最少連接調(diào)度算法和加權調(diào)度算法中的任意一個。b12、如b8-11中任一個所述的方法,其中,所述方法還包括步驟:接收來自所述第一網(wǎng)絡裝置的對應于所述服務器集群提供的每項服務的組表表項和流表表項;更新存儲的對應表項。c14、如c13所述的方法,其中,所述服務器集群的統(tǒng)一ip地址由所述第一網(wǎng)絡裝置響應于服務注冊請求而創(chuàng)建并返回至服務器集群中的每個服務器。d16、一種存儲一個或多個程序的計算機可讀存儲介質(zhì),所述一個或多個程序包括指令,所述指令當由第一網(wǎng)絡裝置執(zhí)行時,使得所述第一網(wǎng)絡裝置執(zhí)行根據(jù)a1-7所述的方法中的任一方法。e18、一種存儲一個或多個程序的計算機可讀存儲介質(zhì),所述一個或多個程序包括指令,所述指令當由第二網(wǎng)絡裝置執(zhí)行時,使得所述第二網(wǎng)絡裝置執(zhí)行根據(jù)b8-12所述的方法中的任一方法。f20、如f19所述的網(wǎng)絡系統(tǒng),其中,所述服務器集群的統(tǒng)一ip地址由所述第一網(wǎng)絡裝置響應于服務注冊請求而創(chuàng)建并返回至服務器集群中的每個服務器。應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。本領域那些技術人員應當理解在本文所公開的示例中的設備的模塊或單元或組件可以布置在如該實施例中所描述的設備中,或者可替換地可以定位在與該示例中的設備不同的一個或多個設備中。前述示例中的模塊可以組合為一個模塊或者此外可以分成多個子模塊。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。此外,所述實施例中的一些在此被描述成可以由計算機系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實施的方法或方法元素的組合。因此,具有用于實施所述方法或方法元素的必要指令的處理器形成用于實施該方法或方法元素的裝置。此外,裝置實施例的在此所述的元素是如下裝置的例子:該裝置用于實施由為了實施該發(fā)明的目的的元素所執(zhí)行的功能。如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對象僅僅表示涉及類似對象的不同實例,并且并不意圖暗示這樣被描述的對象必須具有時間上、空間上、排序方面或者以任意其它方式的給定順序。盡管根據(jù)有限數(shù)量的實施例描述了本發(fā)明,但是受益于上面的描述,本
技術領域:
內(nèi)的技術人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設想其它實施例。此外,應當注意,本說明書中使用的語言主要是為了可讀性和教導的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權利要求書的范圍和精神的情況下,對于本
技術領域:
的普通技術人員來說許多修改和變更都是顯而易見的。對于本發(fā)明的范圍,對本發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權利要求書限定。當前第1頁12