本發(fā)明涉及一種數(shù)據(jù)交互領(lǐng)域,尤其涉及一種負載均衡方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,客戶端與服務器之間數(shù)據(jù)交互量也日趨增多,通過部署服務器集群可以有效提高網(wǎng)絡服務的效率?,F(xiàn)有在網(wǎng)絡集群中通常會設置負載均衡設備,用來將客戶端的數(shù)據(jù)包根據(jù)負載均衡算法分配到同一集群中的各個服務器中。一般情況下,客戶端發(fā)起一次業(yè)務處理流程,例如一次交易流程通常需要與服務器進行多次數(shù)據(jù)交互,例如一次交易流程中可能會涉及到輸入登錄密碼、輸入金額、輸入支付密碼等等多次交互。
然而,采用現(xiàn)有的負載均衡算法,負載均衡設備可能會將同一客戶端的一次業(yè)務處理流程中發(fā)起的多次數(shù)據(jù)交互分配給不同的服務器,從而導致該客戶端的業(yè)務處理流程中斷,例如在客戶端發(fā)送登錄請求時,負載均衡設備為該客戶端分配服務器A來處理登錄請求,服務器A驗證該客戶端的登錄請求并通過后發(fā)送登錄成功響應給客戶端,接著客戶端發(fā)送支付請求,此時,采用現(xiàn)有負載均衡算法負載均衡設備可能分配服務器B來處理支付請求,由于服務器B沒有對客戶端的登錄請求進行過驗證,此時服務器B可能會向客戶端返回需要重新進行登錄的響應,從而導致客戶端本次的交易流程異常中斷。
技術(shù)實現(xiàn)要素:
本發(fā)明旨在解決上述問題。
本發(fā)明的主要目的在于提供一種負載均衡方法;
本發(fā)明的另一目的在于提供一種負載均衡系統(tǒng)。
為達到上述目的,本發(fā)明的技術(shù)方案具體是這樣實現(xiàn)的:
本發(fā)明一方面提供了一種負載均衡方法,包括:負載均衡設備接收客戶端發(fā)送的第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述負載均衡設備的虛擬IP;所述負載均衡設備根據(jù)客戶端與服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;所述負載均衡設備對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭為源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;所述負載均衡設備按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;所述目標服務器接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù);所述目標服務器基于所述響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述客戶端發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭為源IP為所述目標服務器的虛擬IP、目的IP為所述客戶端的IP。
本發(fā)明一方面還提供一種負載均衡方法,包括:前置負載均衡設備接收客戶端發(fā)送的原始請求數(shù)據(jù)包,所述原始請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述前置負載均衡設備的IP;所述前置負載均衡設備基于所述原始請求數(shù)據(jù)包生成第一請求數(shù)據(jù)包,并根據(jù)所述客戶端與負載均衡設備的預設映射關(guān)系確定與所述客戶端對應的負載均衡設備,并向所述負載均衡設備發(fā)送所述第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述負載均衡設備的虛擬IP;所述負載均衡設備接收所述第一請求數(shù)據(jù)包;所述負載均衡設備根據(jù)客戶端與服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;所述負載均衡設備對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭中源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;所述負載均衡設備按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;所述目標服務器接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù);所述目標服務器基于所述響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述前置負載均衡設備發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭中源IP為所述目標服務器的虛擬IP、目的IP為所述前置負載均衡設備的IP;所述前置負載均衡設備接收所述響應數(shù)據(jù)包,并按照轉(zhuǎn)發(fā)IP頭向所述客戶端轉(zhuǎn)發(fā)所述響應數(shù)據(jù)包,所述轉(zhuǎn)發(fā)IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述客戶端的IP。
其中,所述負載均衡設備確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP包括:所述負載均衡設備在客戶端與服務器的預設映射關(guān)系中查找是否與所述客戶端對應的目標服務器;若未查找到,則所述負載均衡設備為所述客戶端分配目標服務器,獲取所述目標服務器的IP,并記錄所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系;若查找到,則所述負載均衡設備獲取所述目標服務器的IP。
其中,所述負載均衡設備為所述客戶端分配目標服務器,包括:所述負載均衡設備獲取所述目標服務器的可用連接數(shù);根據(jù)所述目標服務器的可用連接數(shù)為所述客戶端分配目標服務器。
其中,還包括:所述負載均衡設備更新所述目標服務器的可用連接數(shù);所述負載均衡設備更新所述目標服務器的可用連接數(shù)包括:所述負載均衡設備在為所述客戶端分配目標服務器之后,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備接收所述目標服務器發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備接收所述客戶端發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備定期向所述目標服務器發(fā)送狀態(tài)查詢請求,接收所述目標服務器發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器的可用連接數(shù)。
其中,所述客戶端的唯一標識信息包括:所述客戶端的IP地址和端口號;或者,所述客戶端的唯一標識信息包括:所述客戶端的MAC地址;或者,所述客戶端的唯一標識信息包括:對所述客戶端的IP地址和端口號進行不可逆運算得到的數(shù)值;或者,所述客戶端的唯一標識信息包括:對所述客戶端的MAC地址進行不可逆運算得到的數(shù)值。
本發(fā)明另一方面提供一種負載均衡系統(tǒng),包括:負載均衡設備,用于接收客戶端發(fā)送的第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述負載均衡設備的虛擬IP,并用于根據(jù)客戶端與服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;還用于對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭為源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;以及還用于按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;所述目標服務器,用于接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù),以及基于所述響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述客戶端發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭為源IP為所述目標服務器的虛擬IP、目的IP為所述客戶端的IP。
本發(fā)明另一方面還提供一種負載均衡系統(tǒng),包括:前置負載均衡設備,用于接收客戶端發(fā)送的原始請求數(shù)據(jù)包,所述原始請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述前置負載均衡設備的IP;以及基于所述原始請求數(shù)據(jù)包生成第一請求數(shù)據(jù)包,并根據(jù)所述客戶端與負載均衡設備的預設映射關(guān)系確定與所述客戶端對應的負載均衡設備,并向所述負載均衡設備發(fā)送所述第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述負載均衡設備的虛擬IP;所述負載均衡設備,用于接收所述第一請求數(shù)據(jù)包;并根據(jù)客戶端與服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;還用于對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭中源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;以及還用于按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;所述目標服務器,用于接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù);并基于所述響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述前置負載均衡設備發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭中源IP為所述目標服務器的虛擬IP、目的IP為所述前置負載均衡設備的IP;所述前置負載均衡設備,還用于接收所述響應數(shù)據(jù)包,并按照轉(zhuǎn)發(fā)IP頭向所述客戶端轉(zhuǎn)發(fā)所述響應數(shù)據(jù)包,所述轉(zhuǎn)發(fā)IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述客戶端的IP。
其中,所述負載均衡設備,具體用于查找是否與所述客戶端對應的目標服務器;所述負載均衡設備,具體還用于若未查找到,則為所述客戶端分配目標服務器,獲取所述目標服務器的IP,并記錄所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系;所述負載均衡設備,具體還用于若查找到,則所述負載均衡設備獲取所述目標服務器的IP。
其中,所述負載均衡設備,具體用于獲取所述目標服務器的可用連接數(shù);并根據(jù)所述目標服務器的可用連接數(shù)為所述客戶端分配目標服務器。
其中,所述負載均衡設備,還用于更新所述目標服務器的可用連接數(shù);所述負載均衡設備,具體用于在為所述客戶端分配目標服務器之后,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備,具體用于接收所述目標服務器發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備,具體用于接收所述客戶端發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);或者,所述負載均衡設備,具體用于定期向所述目標服務器發(fā)送狀態(tài)查詢請求,接收所述目標服務器發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器的可用連接數(shù)。
其中,所述客戶端的唯一標識信息包括:所述客戶端的IP地址和端口號;或者,所述客戶端的唯一標識信息包括:所述客戶端的MAC地址;或者,所述客戶端的唯一標識信息包括:對所述客戶端的IP地址和端口號進行不可逆運算得到的數(shù)值;或者,所述客戶端的唯一標識信息包括:對所述客戶端的MAC地址進行不可逆運算得到的數(shù)值。
采用本發(fā)明提供的技術(shù)方案,在客戶端的一次業(yè)務處理流程中,負載均衡設備接收到客戶端的請求數(shù)據(jù)包后,按照該客戶端與目標服務器的預設映射關(guān)系可以每次為該客戶端確定同一個目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他附圖。
圖1為本發(fā)明實施例1提供的負載均衡方法的流程圖;
圖2為本發(fā)明實施例1提供的負載均衡系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例2提供的負載均衡方法的流程圖;
圖4為本發(fā)明實施例2提供的負載均衡系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。
在本發(fā)明的描述中,需要理解的是,術(shù)語“中心”、“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或數(shù)量或位置。
在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內(nèi)部的連通。對于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。
下面將結(jié)合附圖對本發(fā)明實施例作進一步地詳細描述。
實施例1
本實施例中,負載均衡設備連接至一個或多個服務器,負載均衡設備與該一個或多個服務器屬于同一網(wǎng)絡集群,具有相同的虛擬IP(Internet Protocol、網(wǎng)絡之間互連的協(xié)議)地址。該負載均衡設備在接收到客戶端發(fā)送的數(shù)據(jù)包時,采用本發(fā)明的負載均衡方法從多個服務器中確定與客戶端對應的目標服務器,并將來自客戶端的數(shù)據(jù)包發(fā)送至目標服務器。
本實施例提供一種負載均衡方法,如圖1所示,該方法包括如下步驟:
101、負載均衡設備接收客戶端發(fā)送的第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述負載均衡設備的虛擬IP;
其中,該客戶端可以是讀卡器、手機、個人電腦、電子簽名設備、智能手環(huán)等具有網(wǎng)絡通信功能的設備。
客戶端與所述負載均衡設備可以處于同一局域網(wǎng),也可以處于不同的網(wǎng)絡環(huán)境中??梢岳斫獾氖?,當客戶端與負載均衡設備處于不同網(wǎng)絡環(huán)境中,客戶端與負載均衡設備需要借助網(wǎng)關(guān)、路由器等網(wǎng)絡中轉(zhuǎn)設備進行數(shù)據(jù)交互。
102、所述負載均衡設備根據(jù)客戶端與目標服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;
其中,目標服務器可以對客戶端發(fā)送的數(shù)據(jù)進行處理的設備。例如,客戶端為身份證讀卡器時,客戶端向目標服務器發(fā)送身份證讀取請求時,目標服務器可以對該身份證讀取請求進行處理響應,以返回相應的身份證信息。
客戶端與目標服務器的預設映射關(guān)系可以為客戶端的唯一標識信息與服務器的IP的對應關(guān)系。該客戶端與目標服務器的預設映射關(guān)系可以采用列表的形式存儲在負載均衡設備上。
由于客戶端與目標服務器在進行一次業(yè)務處理流程(例如一次交易流程)中可能存在多次數(shù)據(jù)交互,負載均衡設備通過該客戶端與目標服務器的預設映射關(guān)系可以每次為同一客戶端確定相同的目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。
103、所述負載均衡設備對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭為源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;
其中,由于該負載均衡設備和目標服務器屬于同一網(wǎng)絡集群,該負載均衡設備的IP可以為負載均衡設備在該集群內(nèi)局域網(wǎng)的IP,該目標服務器的IP可以是該目標服務器在該集群內(nèi)局域網(wǎng)的IP。
負載均衡設備采用IP封裝技術(shù)對第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包后,該第二請求數(shù)據(jù)包將具備兩個IP頭,其中一個為新IP頭,用于指示負載均衡設備按照新IP頭中的目的IP進行數(shù)據(jù)發(fā)送,另一個為第一請求數(shù)據(jù)包的IP頭,該IP頭用于指示目標服務器處理完數(shù)據(jù)后,發(fā)送響應數(shù)據(jù)包時將該IP頭中的源IP作為目的IP進行數(shù)據(jù)返回。
104、所述負載均衡設備按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;
105、所述目標服務器接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù);
目標服務器接收到第二請求數(shù)據(jù)包后,由于新IP頭中目的IP與自身IP匹配,則會執(zhí)行IP解封裝操作,以獲得第一請求數(shù)據(jù)包,而第一請求數(shù)據(jù)包的IP頭中目的IP為所述負載均衡設備的虛擬IP,而負載均衡設備的虛擬IP和目標服務器的虛擬IP相同,目標服務器也會確定該第一請求數(shù)據(jù)包的IP頭中目的IP與自身IP匹配,則會對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù)。
本實施例中,若負載均衡設備的虛擬IP和目標服務器的虛擬IP不相同,則目標服務器獲得第一請求數(shù)據(jù)包后,由于第一請求數(shù)據(jù)包的IP頭中目的IP為所述負載均衡設備的虛擬IP,目標服務器會判定該第一請求數(shù)據(jù)包的目的IP與目標服務器自身的IP不同,因而,目標服務器不會對第一請求數(shù)據(jù)包進行處理,從而導致客戶端與目標服務器的數(shù)據(jù)交互出現(xiàn)異常??梢?,本實施例中,將負載均衡設備的虛擬IP和目標服務器的虛擬IP設置為相同的虛擬IP,可以保證目標服務器接收到第二請求數(shù)據(jù)包并進行IP解封裝后,對第一請求數(shù)據(jù)包進行正常處理。
106、所述目標服務器基于所述響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述客戶端發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭為源IP為所述目標服務器的虛擬IP、目的IP為所述客戶端的IP。
采用本實施例提供的負載均衡方法,一方面,在客戶端的一次業(yè)務處理流程中,負載均衡設備接收到客戶端的請求數(shù)據(jù)包后,按照該客戶端與目標服務器的預設映射關(guān)系可以每次為該客戶端確定同一個目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。另一方面,負載均衡設備接收到請求數(shù)據(jù)包后,采用IP封裝技術(shù)對請求數(shù)據(jù)包進行IP封裝后發(fā)送給目標服務器,目標服務器采用IP解封裝技術(shù)還原出請求數(shù)據(jù)包,處理后,直接向客戶端發(fā)送該響應數(shù)據(jù)包,而不會再通過負載均衡設備,減少了負載均衡設備的數(shù)據(jù)處理量,提高負載均衡設備處理請求數(shù)據(jù)包的處理能力。
由于負載均衡設備與服務器屬于同一集群,當客戶端與負載均衡設備采用TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol、傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議)進行數(shù)據(jù)通信時,為避免客戶端向負載均衡設備發(fā)送的請求數(shù)據(jù)包也被各個服務器直接接收到,本實施例中,在客戶端向負載均衡設備發(fā)送第一請求數(shù)據(jù)包之前,可以配置各個服務器對接收到的MAC(Media Access Control、媒體訪問控制)查詢請求不進行MAC響應,例如,同一集群中的各個服務器接收MAC響應關(guān)閉指示信息,所述MAC響應關(guān)閉指示信息用于指示所述目標服務器對接收到的MAC查詢請求不進行響應處理。而,同一集群中的負載均衡設備仍會正常對接收到的MAC請求進行響應。因而,當客戶端發(fā)送MAC查詢請求時,同一集群中的負載均衡設備正常進行MAC響應,也就是將自身的MAC地址返回給客戶端,后續(xù)客戶端可以與該負載均衡設備進行正常的數(shù)據(jù)交互。而,同一集群中的各個服務器由于不會進行MAC響應,因而客戶端也無法收到各個服務器的MAC地址,后續(xù)客戶端也無法直接向各個服務器直接發(fā)送請求數(shù)據(jù)包。
在本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP具體實現(xiàn)如下:所述負載均衡設備在客戶端與服務器的預設映射關(guān)系中查找是否與所述客戶端對應的目標服務器;若未查找到,說明負載均衡設備之前并沒有記錄該客戶端與服務器的對應關(guān)系,例如首次給該客戶端分配服務器時,則所述負載均衡設備為所述客戶端分配目標服務器,獲取所述目標服務器的IP,并記錄所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系;若查找到,說明負載均衡設備已經(jīng)為該客戶端分配過服務器,并記錄在客戶端與服務器的預設映射關(guān)系中,為保證該客戶端業(yè)務處理流程的連續(xù)性,繼續(xù)為該客戶端分配同一服務器,則所述負載均衡設備獲取所述目標服務器的IP。
本實施例中,屬于同一集群中的負載均衡設備和服務器,負載均衡設備獲取服務器的IP可以通過如下方式實現(xiàn):例如,在負載均衡設備中預先配置各個服務器的IP,適用于服務器的IP為固定IP的場景;又如,負載均衡設備向服務器發(fā)送IP地址獲取請求,接收服務器發(fā)送的服務器的IP,可以適用于服務器的IP為固定IP的場景,也可以適用于服務器的IP為動態(tài)IP的場景。
本實施例中,在客戶端與服務器的預設映射關(guān)系中記錄的是所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系,其中,所述客戶端的唯一標識信息包括:所述客戶端的IP地址和端口號;客戶端在發(fā)送第一請求數(shù)據(jù)包時,在該第一請求數(shù)據(jù)包中攜帶IP地址和端口號,負載均衡設備可以從該第一請求數(shù)據(jù)包中獲得該IP地址和端口號,并使用該IP地址和端口號唯一表示客戶端;或者,所述客戶端的唯一標識信息包括:所述客戶端的MAC地址;客戶端可以通過MAC響應向負載均衡設備發(fā)送客戶端的MAC地址,負載均衡設備可以從MAC響應中獲得該客戶端的MAC地址;或者,所述客戶端的唯一標識信息包括:對所述客戶端的IP地址和端口號進行不可逆運算得到的數(shù)值;或者,所述客戶端的唯一標識信息包括:對所述客戶端的MAC地址進行不可逆運算得到的數(shù)值。不可逆運算例如可以是哈希運算,當然也可以為其他的不可逆運算,只要保證不同的數(shù)據(jù)經(jīng)過不可逆運算后得到的數(shù)值互不相同即可??蛻舳说奈ㄒ粯俗R信息采用不可逆運算得到的數(shù)值進行存儲時,可以減少存儲的數(shù)據(jù)量,另一方面由于不可逆運算獲得的數(shù)值具有不可逆性,可以增加數(shù)據(jù)存儲的安全性。
在本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備為所述客戶端分配目標服務器的實現(xiàn)方式如下:所述負載均衡設備獲取所述目標服務器的可用連接數(shù);根據(jù)所述目標服務器的可用連接數(shù)為所述客戶端分配目標服務器。具體應用時,負載均衡設備可以維護并實時更新服務器狀態(tài)表,該狀態(tài)表中記載有各個服務器的實時狀態(tài),該各個服務器與負載均衡設備屬于同一網(wǎng)絡集群。初始時,負載均衡設備獲取各個服務器的狀態(tài),該狀態(tài)可以是各個服務器可用連接數(shù),該可用連接數(shù)初始值可以為該服務器支持的最大可用連接數(shù)。本實施例中,服務器與一個客戶端進行一次業(yè)務流程時客戶端將占用該服務器的一個連接,基于該一個連接,客戶端可以與服務器進行多次數(shù)據(jù)交互以完成一次業(yè)務流程(例如交易流程)。各個服務器各自支持的最大可用連接數(shù)可以通過預先在負載均衡設備中配置,也可以是各個服務器向負載均衡設備主動上報各自可以支持的最大可用連接數(shù),負載均衡設備收到后保存到服務器狀態(tài)表中。還可以是,負載均衡設備向各個服務器發(fā)送連接數(shù)查詢請求,以請求服務器將各自的最大可用連接數(shù)上報。在此不做限制。
本實施例中,所述負載均衡設備可以通過如下方式更新所述目標服務器的可用連接數(shù):所述負載均衡設備在為所述客戶端分配目標服務器之后,更新所述目標服務器的可用連接數(shù);例如,當負載均衡設備將該目標服務器分配給某一客戶端時,則該負載均衡設備將該目標服務器的可用連接數(shù)相應減少一個。
或者,所述負載均衡設備接收所述目標服務器發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);例如,客戶端發(fā)送本次業(yè)務流程中最后數(shù)據(jù)包時,在該數(shù)據(jù)包中增加結(jié)束標識,用來指示該數(shù)據(jù)包為本次業(yè)務流程的最后一個數(shù)據(jù)包,則該目標服務器處理完該數(shù)據(jù)包后,則目標服務器向負載均衡設備發(fā)送結(jié)束本次連接通知信息,以通知該負載均衡設備不再需要與客戶端進行數(shù)據(jù)交互,此時將釋放一個連接,該負載均衡設備將目標服務器的可用連接數(shù)相應增加一個。
或者,所述負載均衡設備接收所述客戶端發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);客戶端結(jié)束本次業(yè)務流程后,客戶端可以向負載均衡設備發(fā)送結(jié)束本次連接通知信息,以通知負載均衡設備不再需要與服務器進行數(shù)據(jù)交互,此時將釋放一個連接,該負載均衡設備將該目標服務器的可用連接數(shù)相應增加一個。
或者,所述負載均衡設備定期向所述目標服務器發(fā)送狀態(tài)查詢請求,接收所述目標服務器發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器的可用連接數(shù)。
實際應用時,負載均衡設備除了維護服務器的可用連接數(shù)外,還可以維護各個服務器的已用連接數(shù),該已用連接數(shù)表示各個服務器已經(jīng)被占用的連接數(shù),當該已用連接數(shù)達到服務器的最大可用連接數(shù)或者可用連接數(shù)減少至零時,則負載均衡設備不再將該服務器分配給客戶端,以保證服務器與已經(jīng)建立連接的客戶端之間數(shù)據(jù)處理的效率,也可以避免服務器超負荷進行數(shù)據(jù)處理。
本實施例中,負載均衡設備可以實時監(jiān)測各個服務器的狀態(tài),如果服務器處于正常狀態(tài)可以獲得服務器的最大可用連接數(shù)、可用連接數(shù)和/或已用連接數(shù)等等狀態(tài)信息,以便于均衡向服務器分配客戶端,避免整個集群中出現(xiàn)部分服務器所連接的客戶端過多甚至超出了該服務器所支持的最大可用連接數(shù),服務器超負荷進行數(shù)據(jù)處理,而部分服務器處于空閑狀態(tài)的情況。如果服務器處于故障狀態(tài),負載均衡設備可以在服務器狀態(tài)表中標記該服務器的狀態(tài)為異常,負載均衡設備在接收到客戶單的請求時,也不再將該服務器分配給客戶端,以提高客戶端和負載均衡設備之間建立數(shù)據(jù)連接的成功率。
本實施例中,負載均衡設備根據(jù)各個服務器的可用連接數(shù)為客戶端分配服務器,如果某個服務器的可用連接數(shù)未減少至零(或者已用連接數(shù)未達到最大可用連接數(shù)),則負載均衡設備可以將該服務器分配給客戶端,如果某個服務器的可用連接數(shù)已減少至零(或者已用連接數(shù)已達到最大可用連接數(shù)),則負載均衡設備不再將該服務器分配給客戶端,以保證服務器與已經(jīng)建立連接的客戶端之間數(shù)據(jù)處理的效率,也可以避免服務器超負荷進行數(shù)據(jù)處理。
相應地,如圖2所示,本實施例還提供一種適用于上述負載均衡方法的負載均衡系統(tǒng),包括:客戶端20、負載均衡設備21和與該負載均衡設備相連的多個服務器(圖2中以三個服務器為例,實際應用中不限于此,),目標服務器22是從該多個服務器中選中的,其中:
負載均衡設備21,用于接收客戶端20發(fā)送的第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述客戶端20的IP、目的IP為所述負載均衡設備21的虛擬IP,并用于根據(jù)客戶端20與服務器的預設映射關(guān)系確定與所述客戶端20對應的目標服務器22,并獲取所述目標服務器22的IP,所述目標服務器22的虛擬IP與所述負載均衡設備21的虛擬IP相同;還用于對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭為源IP為所述負載均衡設備21的IP、目的IP為所述目標服務器22的IP;以及還用于按照所述新IP頭向所述目標服務器22發(fā)送所述第二請求數(shù)據(jù)包;其中,客戶端20與所述負載均衡設備21可以處于同一局域網(wǎng),也可以處于不同的網(wǎng)絡環(huán)境中??梢岳斫獾氖?,當客戶端20與負載均衡設備21處于不同網(wǎng)絡環(huán)境中,客戶端20與負載均衡設備21需要借助網(wǎng)關(guān)進行數(shù)據(jù)交互??蛻舳?0與目標服務器22的預設映射關(guān)系可以為客戶端20的唯一標識信息與服務器的IP的對應關(guān)系。該客戶端20與目標服務器22的預設映射關(guān)系可以采用列表的形式存儲在負載均衡設備21上。目標服務器22是從與該負載均衡設備相連的多個服務器22中選中的。
由于客戶端20與目標服務器22在進行一次業(yè)務處理流程(例如一次交易流程)中可能存在多次數(shù)據(jù)交互,負載均衡設備21通過該客戶端20與目標服務器22的預設映射關(guān)系可以每次為同一客戶端20確定相同的目標服務器22,以保證客戶端20的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端20確定不同的目標服務器22,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。負載均衡設備21采用IP封裝技術(shù)對第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包后,該第二請求數(shù)據(jù)包將具備兩個IP頭,其中一個為新IP頭,用于指示負載均衡設備21按照新IP頭中的目的IP進行數(shù)據(jù)發(fā)送,另一個為第一請求數(shù)據(jù)包的IP頭,該IP頭用于指示目標服務器22處理完數(shù)據(jù)后,發(fā)送響應數(shù)據(jù)包時將該IP頭中的源IP作為目的IP進行數(shù)據(jù)返回。
所述目標服務器22,用于接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù),以及基于響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述客戶端20發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭為源IP為所述目標服務器22的虛擬IP、目的IP為所述客戶端20的IP。其中,目標服務器22接收到第二請求數(shù)據(jù)包后,由于新IP頭中目的IP與自身IP匹配,則會執(zhí)行IP解封裝操作,以獲得第一請求數(shù)據(jù)包,而第一請求數(shù)據(jù)包的IP頭中目的IP為所述負載均衡設備21的虛擬IP,而負載均衡設備21的虛擬IP和目標服務器22的虛擬IP相同,目標服務器22也會確定該第一請求數(shù)據(jù)包的IP頭中目的IP與自身IP匹配,則會對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù)。
采用本實施例提供的負載均衡系統(tǒng),一方面,在客戶端的一次業(yè)務處理流程中,負載均衡設備接收到客戶端的請求數(shù)據(jù)包后,按照該客戶端與目標服務器的預設映射關(guān)系可以每次為該客戶端確定同一個目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。另一方面,負載均衡設備接收到請求數(shù)據(jù)包后,采用IP封裝技術(shù)對請求數(shù)據(jù)包進行IP封裝后發(fā)送給目標服務器,目標服務器采用IP解封裝技術(shù)還原出請求數(shù)據(jù)包,處理后,直接向客戶端發(fā)送該響應數(shù)據(jù)包,而不會再通過負載均衡設備,減少了負載均衡設備的數(shù)據(jù)處理量,提高負載均衡設備處理請求數(shù)據(jù)包的處理能力。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備21,具體用于查找是否與所述客戶端20對應的目標服務器22;
所述負載均衡設備21,具體還用于若未查找到(說明負載均衡設備21之前并沒有記錄該客戶端20與服務器的對應關(guān)系,例如首次給該客戶端20分配服務器時),則為所述客戶端20分配目標服務器22,獲取所述目標服務器22的IP,并記錄所述客戶端20的唯一標識信息與所述目標服務器22的IP的對應關(guān)系;
所述負載均衡設備21,具體還用于若查找到(說明負載均衡設備21已經(jīng)為該客戶端20分配過服務器,并記錄在客戶端20與服務器的預設映射關(guān)系中),則所述負載均衡設備21獲取所述目標服務器22的IP。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備21,具體用于獲取所述目標服務器22的可用連接數(shù);并根據(jù)所述目標服務器22的可用連接數(shù)為所述客戶端20分配目標服務器22。該可用連接數(shù)初始值可以為該服務器支持的最大可用連接數(shù)。本實施例中,服務器與一個客戶端20進行一次業(yè)務流程時客戶端20將占用該服務器的一個連接,基于該一個連接,客戶端20可以與服務器進行多次數(shù)據(jù)交互以完成一次業(yè)務流程(例如交易流程)。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備21,還用于更新所述目標服務器22的可用連接數(shù);
所述負載均衡設備21,具體用于在為所述客戶端20分配目標服務器22之后,更新所述目標服務器22的可用連接數(shù);
或者,所述負載均衡設備21,具體用于接收所述目標服務器22發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器22的可用連接數(shù);
或者,所述負載均衡設備21,具體用于接收所述客戶端20發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器22的可用連接數(shù);
或者,所述負載均衡設備21,具體用于定期向所述目標服務器22發(fā)送狀態(tài)查詢請求,接收所述目標服務器22發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器22的可用連接數(shù)。
需要說明的是,本系統(tǒng)中負載均衡設備和目標服務器的更多細節(jié)描述還可以參見上述負載均衡方法中負載均衡設備和目標服務器的相關(guān)描述,在此不再贅述。
實施例2
本實施例與實施例1的區(qū)別在于:實施例1中適用于一個網(wǎng)絡集群的場景,客戶端直接與該網(wǎng)絡集群中的負載均衡設備建立通信連接,并通過該網(wǎng)絡集群中的負載均衡設備與目標服務器進行數(shù)據(jù)交互,而本實施例適用的應用場景中設有前置負載均衡設備和多個網(wǎng)絡集群,每個網(wǎng)絡集群中均設有負載均衡設備和多個服務器,各個網(wǎng)絡集群中的負載均衡設備均連接至前置負載均衡設備。為便于理解,本文中前置負載均衡設備也稱之為一級負載均衡設備,各個網(wǎng)絡集群中的負載均衡設備稱之為二級負載均衡設備,二級負載均衡設備連接至各自所屬網(wǎng)絡集群中的服務器??蛻舳耸紫认蚯爸秘撦d均衡設備發(fā)送數(shù)據(jù)包,由前置負載均衡設備從多個網(wǎng)絡集群中選中一個網(wǎng)絡集群中的負載均衡設備,之后該選中的負載均衡設備為該客戶端分配目標服務器,并將數(shù)據(jù)包發(fā)送至目標服務器。下面將對本實施例提供的負載均衡方法進行詳細介紹:
如圖3所示,本實施例提供一種負載均衡方法,包括:
301、前置負載均衡設備接收客戶端發(fā)送的原始請求數(shù)據(jù)包,所述原始請求數(shù)據(jù)包的IP頭中源IP為所述客戶端的IP、目的IP為所述前置負載均衡設備的IP;
其中,該客戶端可以是讀卡器、手機、個人電腦、電子簽名設備、智能手環(huán)等具有網(wǎng)絡通信功能的設備。
其中,客戶端與所述前置負載均衡設備可以處于同一局域網(wǎng),也可以處于不同的網(wǎng)絡環(huán)境中??梢岳斫獾氖?,當客戶端與前置負載均衡設備處于不同網(wǎng)絡環(huán)境中,客戶端與前置負載均衡設備需要借助網(wǎng)關(guān)、路由器等網(wǎng)絡中轉(zhuǎn)設備進行數(shù)據(jù)交互。
302、所述前置負載均衡設備基于所述原始請求數(shù)據(jù)包生成第一請求數(shù)據(jù)包,并根據(jù)所述客戶端與負載均衡設備的預設映射關(guān)系確定與所述客戶端對應的負載均衡設備,并向所述負載均衡設備發(fā)送所述第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述負載均衡設備的虛擬IP;
其中,前置負載均衡設備的IP為真實的IP,客戶端通過前置負載均衡設備的IP可以將數(shù)據(jù)包發(fā)送至該前置負載均衡設備。
前置負載均衡設備與各個網(wǎng)絡集群中的負載均衡設備可以處于同一局域網(wǎng)中,此時負載均衡設備的IP和各個網(wǎng)絡集群終端中的負載均衡設備的虛擬IP可以為該局域網(wǎng)內(nèi)的IP。
本實施例中,該客戶端與負載均衡設備的預設映射關(guān)系可以采用列表的形式存儲在前置負載均衡設備中,客戶端與負載均衡設備的預設映射關(guān)系可以為客戶端的唯一標識信息與負載均衡設備的虛擬IP之間的對應關(guān)系。
當該客戶端首次向前置負載均衡設備發(fā)送原始請求數(shù)據(jù)包時,前置負載均衡設備按照預設負載均衡算法(例如,隨機分配算法、或者特定類型的客戶端分配給固定的某個網(wǎng)絡集群等等)從多個網(wǎng)絡集群中選擇某一個網(wǎng)絡集群中的負載均衡設備,并將該負載均衡設備分配給該客戶端,同時將該客戶端的唯一標識信息與該負載均衡設備的虛擬IP的對應關(guān)系記錄在所述客戶端與負載均衡設備的預設映射關(guān)系中,并存儲在前置負載均衡設備中,以便于后續(xù)該客戶端再次發(fā)送數(shù)據(jù)包時,前置負載均衡設備可以根據(jù)所述客戶端與負載均衡設備的預設映射關(guān)系確定與所述客戶端對應的負載均衡設備,從而可以將該數(shù)據(jù)包發(fā)送至同一負載均衡設備,以保證數(shù)據(jù)交互的連續(xù)性。
303、所述負載均衡設備接收所述第一請求數(shù)據(jù)包;
304、所述負載均衡設備根據(jù)客戶端與服務器的預設映射關(guān)系確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP,所述目標服務器的虛擬IP與所述負載均衡設備的虛擬IP相同;
其中,客戶端與目標服務器的預設映射關(guān)系可以為客戶端的唯一標識信息與服務器的IP的對應關(guān)系。該客戶端與目標服務器的預設映射關(guān)系可以采用列表的形式存儲在負載均衡設備上。
由于客戶端與目標服務器在進行一次業(yè)務處理流程(例如一次交易流程)中可能存在多次數(shù)據(jù)交互,負載均衡設備通過該客戶端與目標服務器的預設映射關(guān)系可以每次為同一客戶端確定相同的目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。
305、所述負載均衡設備對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭中源IP為所述負載均衡設備的IP、目的IP為所述目標服務器的IP;
其中,由于該負載均衡設備和目標服務器屬于同一網(wǎng)絡集群,該負載均衡設備的IP可以為負載均衡設備在該集群內(nèi)局域網(wǎng)的IP,該目標服務器的IP可以是該目標服務器在該集群內(nèi)局域網(wǎng)的IP。
負載均衡設備采用IP封裝技術(shù)對第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包后,該第二請求數(shù)據(jù)包將具備兩個IP頭,其中一個為新IP頭,用于指示負載均衡設備按照新IP頭中的目的IP進行數(shù)據(jù)發(fā)送,另一個為第一請求數(shù)據(jù)包的IP頭,該IP頭用于指示目標服務器處理完數(shù)據(jù)后,發(fā)送響應數(shù)據(jù)包時將該IP頭中的源IP作為目的IP進行數(shù)據(jù)返回。
306、所述負載均衡設備按照所述新IP頭向所述目標服務器發(fā)送所述第二請求數(shù)據(jù)包;
307、所述目標服務器接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包進行處理,得到響應數(shù)據(jù);
目標服務器接收到第二請求數(shù)據(jù)包后,由于新IP頭中目的IP與自身IP匹配,則會執(zhí)行IP解封裝操作,以獲得第一請求數(shù)據(jù)包,而第一請求數(shù)據(jù)包的IP頭中目的IP為所述負載均衡設備的虛擬IP,而負載均衡設備的虛擬IP和目標服務器的虛擬IP相同,目標服務器也會確定該第一請求數(shù)據(jù)包的IP頭中目的IP與自身IP匹配,則會對所述第一請求數(shù)據(jù)包中攜帶的數(shù)據(jù)進行處理,得到響應數(shù)據(jù)。
本實施例中,若負載均衡設備的虛擬IP和目標服務器的虛擬IP不相同,則目標服務器獲得第一請求數(shù)據(jù)包后,由于第一請求數(shù)據(jù)包的IP頭中目的IP為所述負載均衡設備的虛擬IP,目標服務器會判定該第一請求數(shù)據(jù)包的目的IP與目標服務器自身的IP不同,因而,目標服務器不會對第一請求數(shù)據(jù)包進行處理,從而導致客戶端與目標服務器的數(shù)據(jù)交互出現(xiàn)異常??梢?,本實施例中,將負載均衡設備的虛擬IP和目標服務器的虛擬IP設置為相同的虛擬IP,可以保證目標服務器接收到第二請求數(shù)據(jù)包并進行IP解封裝后,對第一請求數(shù)據(jù)包進行正常處理。
308、所述目標服務器基于響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述前置負載均衡設備發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭中源IP為所述目標服務器的虛擬IP、目的IP為所述前置負載均衡設備的IP;
其中,所述響應數(shù)據(jù)包攜帶的數(shù)據(jù)內(nèi)容為所述響應數(shù)據(jù)。
309、所述前置負載均衡設備接收所述響應數(shù)據(jù)包,并按照轉(zhuǎn)發(fā)IP頭向所述客戶端轉(zhuǎn)發(fā)所述響應數(shù)據(jù)包,所述轉(zhuǎn)發(fā)IP頭中源IP為所述前置負載均衡設備的IP、目的IP為所述客戶端的IP。
采用本實施例提供的負載均衡方法,一方面,負載均衡設備接收到請求數(shù)據(jù)包后,采用IP封裝技術(shù)對請求數(shù)據(jù)包進行IP封裝后發(fā)送給目標服務器,目標服務器采用IP解封裝技術(shù)還原出請求數(shù)據(jù)包,處理后得到響應數(shù)據(jù)包,直接向前置負載均衡設備發(fā)送該響應數(shù)據(jù)包,而不會再通過負載均衡設備,減少了負載均衡設備的數(shù)據(jù)處理量,提高負載均衡設備處理請求數(shù)據(jù)包的處理能力。另一方面,在客戶端與目標服務器的一次業(yè)務處理流程(例如交易流程)中,前置負載均衡設備接收到數(shù)據(jù)包后,根據(jù)客戶端與負載均衡設備的預設關(guān)系可以每次為客戶端確定同一負載均衡設備,該負載均衡設備接收到請求數(shù)據(jù)包后,按照該客戶端與目標服務器的預設映射關(guān)系可以每次為客戶端確定同一目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。
由于負載均衡設備與服務器屬于同一集群,當客戶端與負載均衡設備采用TCP/IP協(xié)議進行數(shù)據(jù)通信時,為避免客戶端向負載均衡設備發(fā)送的請求數(shù)據(jù)包也被服務器直接接收到,本實施例中,在客戶端向負載均衡設備發(fā)送第一請求數(shù)據(jù)包之前,可以配置各個服務器對接收到的MAC查詢請求不進行MAC響應,例如,同一集群中的各個服務器接收MAC響應關(guān)閉指示信息,所述MAC響應關(guān)閉指示信息用于指示所述目標服務器對接收到的MAC查詢請求不進行響應處理。而,同一集群中的負載均衡設備仍會正常對接收到的MAC請求進行響應。因而,當客戶端發(fā)送MAC查詢請求時,同一集群中的負載均衡設備正常進行MAC響應,也就是將自身的MAC地址返回給客戶端,后續(xù)客戶端可以與該負載均衡設備進行正常的數(shù)據(jù)交互。而,同一集群中的各個服務器由于不會進行MAC響應,因而客戶端也無法收到各個服務器的MAC地址,后續(xù)客戶端也無法直接向各個服務器發(fā)送請求數(shù)據(jù)包。
在本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備確定與所述客戶端對應的目標服務器,并獲取所述目標服務器的IP具體實現(xiàn)如下:所述負載均衡設備在客戶端與服務器的預設映射關(guān)系中查找是否與所述客戶端對應的目標服務器;若未查找到,說明負載均衡設備之前并沒有記錄該客戶端與服務器的對應關(guān)系,例如首次給該客戶端分配服務器時,則所述負載均衡設備為所述客戶端分配目標服務器,獲取所述目標服務器的IP,并記錄所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系;若查找到,說明負載均衡設備已經(jīng)為該客戶端分配過服務器,并記錄在客戶端與服務器的預設映射關(guān)系中,為保證該客戶端業(yè)務處理流程的連續(xù)性,繼續(xù)為該客戶端分配同一服務器,則所述負載均衡設備獲取所述目標服務器的IP。
本實施例中,屬于同一集群中的負載均衡設備和服務器,負載均衡設備獲取服務器的IP可以通過如下方式實現(xiàn):例如,在負載均衡設備中預先配置各個服務器的IP,適用于服務器的IP為固定IP的場景;又如,負載均衡設備向服務器發(fā)送IP地址獲取請求,接收服務器發(fā)送的服務器的IP,可以適用于服務器的IP為固定IP的場景,也可以適用于服務器的IP為動態(tài)IP的場景。
本實施例中,在客戶端與服務器的預設映射關(guān)系中記錄的是所述客戶端的唯一標識信息與所述目標服務器的IP的對應關(guān)系,其中,所述客戶端的唯一標識信息包括:所述客戶端的IP地址和端口號;客戶端在發(fā)送第一請求數(shù)據(jù)包時,在該第一請求數(shù)據(jù)包中攜帶IP地址和端口號,通過該IP地址和端口號可以唯一表示客戶端;或者,所述客戶端的唯一標識信息包括:所述客戶端的MAC地址;客戶端可以通MAC響應向負載均衡設備發(fā)送客戶端的MAC地址;或者,所述客戶端的唯一標識信息包括:對所述客戶端的IP地址和端口號進行不可逆運算得到的數(shù)值;或者,所述客戶端的唯一標識信息包括:對所述客戶端的MAC地址進行不可逆運算得到的數(shù)值。不可逆運算例如可以是哈希運算,當然也可以為其他的不可逆運算,只要保證不同的數(shù)據(jù)經(jīng)過不可逆運算后得到的數(shù)值互不相同即可??蛻舳说奈ㄒ粯俗R信息采用不可逆運算得到的數(shù)值進行存儲時,可以減少存儲的數(shù)據(jù)量,另一方面由于不可逆運算獲得的數(shù)值具有不可逆性,可以增加數(shù)據(jù)存儲的安全性。
在本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備為所述客戶端分配目標服務器的實現(xiàn)方式如下:所述負載均衡設備獲取所述目標服務器的可用連接數(shù);根據(jù)所述目標服務器的可用連接數(shù)為所述客戶端分配目標服務器。具體應用時,負載均衡設備可以維護并實時更新服務器狀態(tài)表,該狀態(tài)表中記載有各個服務器的實時狀態(tài),該各個服務器與負載均衡設備屬于同一網(wǎng)絡集群。初始時,負載均衡設備獲取各個服務器的狀態(tài),該狀態(tài)可以是各個服務器可用連接數(shù),該可用連接數(shù)初始值可以為該服務器支持的最大可用連接數(shù)。本實施例中,服務器與一個客戶端進行一次業(yè)務流程時客戶端將占用該服務器的一個連接,基于該一個連接,客戶端可以與服務器進行多次數(shù)據(jù)交互以完成一次業(yè)務流程(例如交易流程)。各個服務器各自支持的最大可用連接數(shù)可以通過預先在負載均衡設備中配置,也可以是各個服務器向負載均衡設備主動上報各自可以支持的最大可用連接數(shù),負載均衡設備收到后保存到服務器狀態(tài)表中。還可以是,負載均衡設備向各個服務器發(fā)送連接數(shù)查詢請求,以請求服務器將各自的最大可用連接數(shù)上報。在此不做限制。
本實施例中,所述負載均衡設備可以通過如下方式更新所述目標服務器的可用連接數(shù):所述負載均衡設備在為所述客戶端分配目標服務器之后,更新所述目標服務器的可用連接數(shù);例如,當負載均衡設備將該目標服務器分配給某一客戶端時,則該負載均衡設備將該目標服務器的可用連接數(shù)相應減少一個。
或者,所述負載均衡設備接收所述目標服務器發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);例如,客戶端發(fā)送本次業(yè)務流程中最后數(shù)據(jù)包時,在該數(shù)據(jù)包中增加結(jié)束標識,用來指示該數(shù)據(jù)包為本次業(yè)務流程的最后一個數(shù)據(jù)包,則該目標服務器處理完該數(shù)據(jù)包后,則目標服務器向負載均衡設備發(fā)送結(jié)束本次連接通知信息,以通知該負載均衡設備不再需要與客戶端進行數(shù)據(jù)交互,此時將釋放一個連接,該負載均衡設備將目標服務器的可用連接數(shù)相應增加一個。
或者,所述負載均衡設備接收所述客戶端發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器的可用連接數(shù);客戶端結(jié)束本次業(yè)務流程后,客戶端可以向負載均衡設備發(fā)送結(jié)束本次連接通知信息,以通知負載均衡設備不再需要與服務器進行數(shù)據(jù)交互,此時將釋放一個連接,該負載均衡設備將該目標服務器的可用連接數(shù)相應增加一個。
或者,所述負載均衡設備定期向所述目標服務器發(fā)送狀態(tài)查詢請求,接收所述目標服務器發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器的可用連接數(shù)。
本實施例中,負載均衡設備可以實時監(jiān)測各個服務器的狀態(tài),如果服務器處于正常狀態(tài)可以獲得服務器的最大可用連接數(shù)、可用連接數(shù)和/或已用連接數(shù)等等狀態(tài)信息,以便于均衡向服務器分配客戶端,避免整個集群中出現(xiàn)部分服務器所連接的客戶端過多甚至超出了該服務器所支持的最大可用連接數(shù),服務器超負荷進行數(shù)據(jù)處理,而部分服務器處于空閑狀態(tài)的情況。如果服務器處于故障狀態(tài),負載均衡設備可以在服務器狀態(tài)表中標記該服務器的狀態(tài)為異常,負載均衡設備在接收到客戶端的請求時,也不再將該服務器分配給客戶端,以提高客戶端和負載均衡設備之間建立數(shù)據(jù)連接的成功率。
實際應用時,負載均衡設備除了維護服務器的可用連接數(shù)外,還可以維護各個服務器的已用連接數(shù)和最大可用連接數(shù),該已用連接數(shù)表示各個服務器已經(jīng)被占用的連接數(shù),當該已用連接數(shù)達到服務器的最大可用連接數(shù)或者可用連接數(shù)減少至零時,則負載均衡設備不再將該服務器分配給客戶端,以保證服務器與已經(jīng)建立連接的客戶端之間數(shù)據(jù)處理的效率,也可以避免服務器超負荷進行數(shù)據(jù)處理。
本實施例中,負載均衡設備根據(jù)各個服務器的可用連接數(shù)為客戶端分配服務器,如果某個服務器的可用連接數(shù)未減少至零(或者已用連接數(shù)未達到最大可用連接數(shù)),則負載均衡設備可以將該服務器分配給客戶端,如果某個服務器的可用連接數(shù)已減少至零(或者已用連接數(shù)已達到最大可用連接數(shù)),則負載均衡設備不再將該服務器分配給客戶端,以保證服務器與已經(jīng)建立連接的客戶端之間數(shù)據(jù)處理的效率,也可以避免服務器超負荷進行數(shù)據(jù)處理。
相應地,如圖4所示,本實施例還提供一種適用于上述負載均衡方法的負載均衡系統(tǒng),包括:客戶端40、前置負載均衡設備41、以及與該前置負載均衡設備連接的多個網(wǎng)絡集群中的負載均衡設備42(圖4以兩個網(wǎng)絡集群為例,每個網(wǎng)絡集群中均設有一個負載均衡設備42,實際應用中不限于此),以及在每個網(wǎng)絡集群中與負載均衡設備連接的多個服務器(圖4中一個網(wǎng)絡集群的服務器個數(shù)以兩個為例,另一個網(wǎng)絡集群中的服務器個數(shù)以三個為例,實際應用中不限于此),其中目標服務器43是從多個服務器中選中的,其中:
前置負載均衡設備41,用于接收客戶端40發(fā)送的原始請求數(shù)據(jù)包,所述原始請求數(shù)據(jù)包的IP頭中源IP為所述客戶端40的IP、目的IP為所述前置負載均衡設備41的IP;以及基于所述原始請求數(shù)據(jù)包生成第一請求數(shù)據(jù)包,并根據(jù)所述客戶端40與負載均衡設備42的預設映射關(guān)系確定與所述客戶端40對應的負載均衡設備42,并向所述負載均衡設備42發(fā)送所述第一請求數(shù)據(jù)包,所述第一請求數(shù)據(jù)包的IP頭中源IP為所述前置負載均衡設備41的IP、目的IP為所述負載均衡設備42的虛擬IP;其中,該客戶端40與負載均衡設備42的預設映射關(guān)系可以采用列表的形式存儲在前置負載均衡設備41中,客戶端40與負載均衡設備42的預設映射關(guān)系可以為客戶端40的唯一標識信息與負載均衡設備42的虛擬IP之間的對應關(guān)系。當該客戶端40首次向前置負載均衡設備41發(fā)送原始請求數(shù)據(jù)包時,前置負載均衡設備41按照預設負載均衡算法(例如,隨機分配算法)從多個網(wǎng)絡集群中選擇某一個網(wǎng)絡集群中的負載均衡設備42,并將該負載均衡設備42分配給該客戶端40,同時將該客戶端40的唯一標識信息與該負載均衡設備42的虛擬IP的對應關(guān)系記錄在所述客戶端40與負載均衡設備42的預設映射關(guān)系中,并存儲在前置負載均衡設備41中,以便于后續(xù)該客戶端40再次發(fā)送數(shù)據(jù)包時,前置負載均衡設備41可以根據(jù)所述客戶端40與負載均衡設備42的預設映射關(guān)系確定與所述客戶端40對應的負載均衡設備42,從而可以將該數(shù)據(jù)包發(fā)送至同一負載均衡設備42,以保證數(shù)據(jù)交互的連續(xù)性。
所述負載均衡設備42,用于接收所述第一請求數(shù)據(jù)包;并根據(jù)客戶端40與服務器的預設映射關(guān)系確定與所述客戶端40對應的目標服務器43,并獲取所述目標服務器43的IP,所述目標服務器43的虛擬IP與所述負載均衡設備42的虛擬IP相同;還用于對所述第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包,所述IP封裝為在所述第一請求數(shù)據(jù)包中增加新IP頭,所述新IP頭中源IP為所述負載均衡設備42的IP、目的IP為所述目標服務器43的IP;以及還用于按照所述新IP頭向所述目標服務器43發(fā)送所述第二請求數(shù)據(jù)包;其中,客戶端40與目標服務器43的預設映射關(guān)系可以為客戶端40的唯一標識信息與服務器的IP的對應關(guān)系。該客戶端40與目標服務器43的預設映射關(guān)系可以采用列表的形式存儲在負載均衡設備42上。由于客戶端40與目標服務器43在進行一次業(yè)務處理流程(例如一次交易流程)中可能存在多次數(shù)據(jù)交互,負載均衡設備42通過該客戶端40與目標服務器43的預設映射關(guān)系可以每次為同一客戶端40確定相同的目標服務器43,以保證客戶端40的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端40確定不同的目標服務器43,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。負載均衡設備42采用IP封裝技術(shù)對第一請求數(shù)據(jù)包進行IP封裝得到第二請求數(shù)據(jù)包后,該第二請求數(shù)據(jù)包將具備兩個IP頭,其中一個為新IP頭,用于指示負載均衡設備42按照新IP頭中的目的IP進行數(shù)據(jù)發(fā)送,另一個為第一請求數(shù)據(jù)包的IP頭,該IP頭用于指示目標服務器43處理完數(shù)據(jù)后,發(fā)送響應數(shù)據(jù)包時將該IP頭中的源IP作為目的IP進行數(shù)據(jù)返回。
所述目標服務器43,用于接收所述第二請求數(shù)據(jù)包,對所述第二請求數(shù)據(jù)包進行IP解封裝,獲得第一請求數(shù)據(jù)包,并對所述第一請求數(shù)據(jù)包中攜帶的數(shù)據(jù)進行處理,得到響應數(shù)據(jù);并基于響應數(shù)據(jù)生成響應數(shù)據(jù)包,并按照所述響應數(shù)據(jù)包的IP頭向所述前置負載均衡設備41發(fā)送響應數(shù)據(jù)包,所述響應數(shù)據(jù)包的IP頭中源IP為所述目標服務器43的虛擬IP、目的IP為所述前置負載均衡設備41的IP;
所述前置負載均衡設備41,還用于接收所述響應數(shù)據(jù)包,并按照轉(zhuǎn)發(fā)IP頭向所述客戶端40轉(zhuǎn)發(fā)所述響應數(shù)據(jù)包,所述轉(zhuǎn)發(fā)IP頭中源IP為所述前置負載均衡設備41的IP、目的IP為所述客戶端40的IP。
在本實施例提供的負載均衡系統(tǒng)中,一方面,負載均衡設備接收到請求數(shù)據(jù)包后,采用IP封裝技術(shù)對請求數(shù)據(jù)包進行IP封裝后發(fā)送給目標服務器,目標服務器采用IP解封裝技術(shù)還原出請求數(shù)據(jù)包,處理后得到響應數(shù)據(jù)包,直接向前置負載均衡設備發(fā)送該響應數(shù)據(jù)包,而不會再通過負載均衡設備,減少了負載均衡設備的數(shù)據(jù)處理量,提高負載均衡設備處理請求數(shù)據(jù)包的處理能力。另一方面,在客戶端與目標服務器的一次業(yè)務處理流程(例如交易流程)中,前置負載均衡設備接收到數(shù)據(jù)包后,根據(jù)客戶端與負載均衡設備的預設關(guān)系可以每次為同一客戶端確定相同的負載均衡設備,該負載均衡設備接收到請求數(shù)據(jù)包后,按照該客戶端與目標服務器的預設映射關(guān)系可以每次為同一客戶端確定相同的目標服務器,以保證客戶端的業(yè)務處理流程的連續(xù)性,有效避免在一次業(yè)務處理流程中為同一客戶端確定不同的目標服務器,進而導致數(shù)據(jù)處理出現(xiàn)異常的問題。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備42,具體用于查找是否與所述客戶端40對應的目標服務器43;
所述負載均衡設備42,具體還用于若未查找到(說明負載均衡設備之前并沒有記錄該客戶端與服務器的對應關(guān)系,例如首次給該客戶端分配服務器時),則為所述客戶端40分配目標服務器43,獲取所述目標服務器的IP,并記錄所述客戶端40的唯一標識信息與所述目標服務器43的IP的對應關(guān)系;
所述負載均衡設備42,具體還用于若查找到(說明負載均衡設備已經(jīng)為該客戶端分配過服務器,并記錄在客戶端與服務器的預設映射關(guān)系中),則所述負載均衡設備42獲取所述目標服務器43的IP。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備42,具體用于獲取所述目標服務器43的可用連接數(shù);并根據(jù)所述目標服務器43的可用連接數(shù)為所述客戶端分配目標服務器。該可用連接數(shù)初始值可以為該服務器支持的最大可用連接數(shù)。本實施例中,服務器與一個客戶端進行一次業(yè)務流程時客戶端將占用該服務器的一個連接,基于該一個連接,客戶端可以與服務器進行多次數(shù)據(jù)交互以完成一次業(yè)務流程(例如交易流程)。
本實施例的一種可選實現(xiàn)方式中,所述負載均衡設備42,還用于更新所述目標服務器43的可用連接數(shù);
所述負載均衡設備42,具體用于在為所述客戶端40分配目標服務器43之后,更新所述目標服務器43的可用連接數(shù);
或者,所述負載均衡設備42,具體用于接收所述目標服務器43發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器43的可用連接數(shù);
或者,所述負載均衡設備42,具體用于接收所述客戶端40發(fā)送的結(jié)束本次連接通知信息,更新所述目標服務器43的可用連接數(shù);
或者,所述負載均衡設備42,具體用于定期向所述目標服務器43發(fā)送狀態(tài)查詢請求,接收所述目標服務器43發(fā)送的最新可用連接數(shù),使用所述最新可用連接數(shù)更新所述目標服務器43的可用連接數(shù)。
需要說明的是,本系統(tǒng)中負載均衡設備和目標服務器的更多細節(jié)描述還可以參見本實施例中上述負載均衡方法中負載均衡設備和目標服務器的相關(guān)描述,在此不再贅述。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應當理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。
上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨的情況下在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。本發(fā)明的范圍由所附權(quán)利要求及其等同限定。