專利名稱:虛擬機集群的負載均衡方法、服務器及系統的制作方法
技術領域:
本發明涉及虛擬機集群領域,尤其是涉及一種虛擬機集群的負載均衡方法、服務器及系統。
背景技術:
隨著計算機技術的發展,尤其是網絡技術的發展和利用,人們對計算機系統,特別是網絡服務器提出了更高的要求,單純的靠提高單個處理器的處理能力來提高服務器性能,正在變得越來越難。因此,計算機集群服務得到了廣泛的應用。計算機集群簡稱集群, 是一種計算機系統,它通過一組松散集成的計算機軟件或硬件連接起來高度緊密地協作完成計算工作。當所述集群是通過在服務器上模擬出的一臺或多臺虛擬機工作時,所述計算機集群為虛擬機集群。
負載均衡是指將負載(工作任務)進行平衡、分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
LVS(Linux Virtual Server,Linux虛擬服務器)項目在Linux操作系統上提供了最常用的負載均衡軟件。以基于虛擬機的LVS系統為例,LVS系統包含一個前端用以接收客戶端發送的請求報文,進行任務分發的負載均衡器,和后端的服務器。在后端的服務器上有一組真正提供服務的虛擬機。在負載均衡器上配置有IP地址,為和負載均衡器通信, 在每個虛擬機上配置有唯一的IP地址。因為兩端的IP地址不同,為使請求報文能被準確的接收和處理,現有的LVS系統采用網絡地址轉換(Network Address Translation,以下簡稱NAT)實現負載均衡,具體為客戶端發送目的地址為負載均衡器地址的請求報文至負載均衡器;負載均衡器從提供真正服務的虛擬機中選定一臺虛擬機并把請求報文的地址修改為選定的虛擬機的地址后發送至該虛擬機所在的服務器;虛擬機對請求報文進行處理獲得應答報文,并通過所在的服務器將應答報文發送至負載均衡器;負載均衡器再將應答報文發送至客戶端。
應用上述方法,在虛擬機集群中,應答報文需要從服務器發送至負載均衡器,再由負載均衡器轉發給客戶端,因此,通信路徑長,通信效率不高。發明內容
本發明的目的在于提供一種虛擬機集群的負載均衡方法、服務器及系統,能夠使應答報文從服務器直接發送至客戶端,提高了通信效率。本發明提供了如下方案
—種虛擬機集群的負載均衡方法,應用在服務器中,所述方法包括
接收負載均衡器發來的第二請求報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述服務器上一虛擬機的地址后生成的。
根據所述第二請求報文生成第一應答報文。
將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文。
將所述第二應答報文發送至所述客戶端。
本發明還提供了一種服務器,所述服務器包括
源地址轉換單元、發送單元和至少一個虛擬機。
所述虛擬機,用于根據接收的負載均衡器發來的第二請求報文生成第一應答報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述虛擬機的地址后生成的。
所述源地址轉換單元,用于將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文。
所述發送單元,用于將所述第二應答報文發送至所述客戶端。
可選的,所述虛擬機的虛擬網卡橋接到虛擬網橋上,所述源地址轉換單元連接所述虛擬網橋和所述服務器的物理網卡。
所述虛擬機將第一應答報文通過虛擬網橋發送到源地址轉換單元。
所述發送單元通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
可選的,所述虛擬機通過依次連接的虛擬網卡、虛擬網橋和物理網卡接收所述第二請求報文。
可選的,所述源地址轉換單元包括防火墻。
本發明還提供了一種虛擬機集群系統,所述系統包括
負載均衡器和服務器。
所述負載均衡器,用于接收客戶端發送的第一請求報文,并將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述服務器上一虛擬機的地址后生成第二請求報文。
所述服務器包括虛擬機,源地址轉換單元和發送單元。
所述虛擬機,用于根據接收的所述第二請求報文生成第一應答報文。
所述源地址轉換單元,用于將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文。
所述發送單元,用于將所述第二應答報文發送至所述客戶端。
可選的,所述虛擬機的虛擬網卡橋接到虛擬網橋上,所述源地址轉換單元連接所述虛擬網橋和所述服務器的物理網卡;
所述虛擬機將第一應答報文通過虛擬網橋發送到源地址轉換單元;
所述發送單元通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
可選的,所述源地址轉換單元包括防火墻。
可選的,所述系統包括Linux虛擬服務器系統。
根據本發明提供的具體實施例,本發明公開了以下技術效果
本發明中,通過在服務器中進行應答報文的源地址轉換,并直接將轉換后的報文發送至客戶端,解決了現有技術中服務器需將生成的應答報文發送至負載均衡器進行源地址轉換,從而導致虛擬機集群系統通信效率低的問題。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例1的流程圖2是本發明實施例2的服務器結構圖3是本發明中實施例2中服務器上各虛擬機和代理單元的連接圖4是本發明中實施例3的系統結構圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
值得注意的是本發明實施例中所述的虛擬機,負載均衡器和客戶端處在同一個子網范圍內,所述的客戶端是指所述子網范圍內最后一個從外網接收請求報文的網絡設備。
本發明實施例1提供了一種虛擬機集群的負載均衡方法,應用在服務器中,參見圖1,該方法包括以下步驟
Si、接收負載均衡器發來的第二請求報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述服務器上一虛擬機的地址后生成的。
在虛擬機集群系統中,前端是一個或多個負載均衡器,后端是一個或一組提供真實服務的服務器。更確切的說,后端是一組提供真實服務的在服務器上通過軟件模擬出的虛擬機。具體的可以是在同一個服務器上模擬出多個虛擬機的,也可以在多個服務器上模擬出多個虛擬機。負載均衡器上配置有IP地址,為使負載均衡器和虛擬機通信,在每個虛擬機上配置有唯一的IP地址。
在負載均衡器中保存有后端所有虛擬機的IP地址,因此,在接收到目的地址為自身IP地址的第一請求報文后,負載均衡器會從后端選定一個虛擬機,并將該第一請求報文的目的地址修改為該虛擬機的地址,生成第二請求報文發送至該虛擬機。虛擬機看到接收的第二請求報文的地址與自身的IP地址相同,就會對其進行處理。在具體的選擇過程中, 負載均衡器可以按照一定的規則選定虛擬機,比如根據后端虛擬機的負載情況。在本發明中,不對具體的選定過程做限制。
在本發明的具體實施例中,為保證請求報文被發送準確,負載均衡器還會根據后端虛擬機的變化情況對保存在其中的虛擬機的IP地址進行更新,以確保其保存的虛擬機的IP地址與后端的虛擬機相對應。
S2、根據所述第二請求報文生成第一應答報文。
接收到第二請求報文的虛擬機會進行處理并生成第一應答報文。例如根據第二請求報文中攜帶的數據和操作符,進行計算,并將計算結果攜帶在第一應答報文中。所述虛擬機根據報文的生成規則,該第一應答報文的目的地址和源地址與接收的第二請求報文的目的地址和源地址相反。即該第一應答報文的源地址為負載均衡器選定的虛擬機的IP地址, 目的地址為客戶端的IP地址。
S3、將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文。
本發明中,通過在服務器中設置proxy (代理程序)或利用防火墻軟件進行源地址轉換。在proxy或防火墻軟件中設置將接收到的報文的源地址轉換為負載均衡器的IP地址。這樣生成的第二應答報文的源地址就與第一請求報文的目的地址相同,可以被直接發回到客戶端。
以proxy為例,可以將同一服務器上的虛擬機的虛擬網卡橋接到指定的虛擬網橋上,由proxy連接虛擬網橋和所在服務器的物理網卡,從而將各虛擬機上的應答報文發送至proxy進行源地址轉換,并經過服務器的物理網卡發送至客戶端。
需要注意的是,本發明中所說的proxy是服務器上的虛擬機外設置的,因為虛擬機內存儲的是用戶的數據,所以不能也不應該在虛擬機內設置proxy進行源地址的轉換。
S4、將所述第二應答報文發送至所述客戶端。
第二應答報文的地址在服務器中進行源地址轉換后,其源地址為負載均衡器的IP 地址,在客戶端看起來好像所有報文都是通過同一個IP地址即負載均衡器的IP地址進行發送和接收的。因此,客戶端能夠正確接收該應答報文。
綜上所述,本發明通過在虛擬機所在的服務器中對應答報文進行源地址轉換,使得應答報文能夠不必發送至負載均衡器,再由負載均衡器發送至客戶端,而是服務器直接將應答報文發送給客戶端,因此,縮短了應答報文從服務器到客戶端的發送路徑,提高了系統的通信效率。
本發明實施例2還提供了一種服務器,參見圖2,所述服務器包括
虛擬機21,源地址轉換單元22和發送單元23。
所述虛擬機21,用于根據接收的負載均衡器發來的第二請求報文生成第一應答報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述虛擬機21的地址后生成的。
所述的虛擬機21是在所述的服務器上通過軟件模擬出來的,用于提供真實的服務。具體的可以在同一服務器上模擬出一個或多個虛擬機21。負載均衡器上配置有IP地址,為使負載均衡器和虛擬機通信,在每個虛擬機上配置有唯一的I P地址。
客戶端首先會發送第一請求報文至負載均衡器,該第一請求報文的目的地址就是該負載均衡器的IP地址。負載均衡器接收該報文后并不對該報文做具體的處理,而是從后端服務器中選定一虛擬機21,并根據自身保存的后端虛擬機21的IP地址,將該報文的地址修改為該選定的虛擬機21的IP地址后,發送至該虛擬機21。虛擬機21接收的第二請求報文的地址與自身的IP地址相同,就會對其進行處理生成第一應答報文。根據報文的生成規則,該第一應答報文的源地址為該虛擬機的IP地址。
所述源地址轉換單元22,用于將所述第一應答報文的源地址由所述虛擬機21的地址轉換為所述負載均衡器的IP地址,生成第二應答報文。
具體的源地址轉換單元22可以是代理單元或是防火墻。以代理單元為例,源地址轉換單元與虛擬機的連接關系如圖3所示,服務器上的虛擬機211,虛擬機212,虛擬機213 分別通過各自的虛擬網卡214,215,216以橋接的方式連接到指定的虛擬網橋M上,代理單元221連接所述的虛擬網橋M和所述服務器的物理網卡25。
所述虛擬機可以通過依次連接的虛擬網卡、虛擬網橋和物理網卡接收所述第二請求報文。所述虛擬機將第一應答報文通過虛擬網橋發送到源地址轉換單元;所述發送單元通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
在本發明的一個具體實施例中,當負載均衡器選定虛擬機211時,虛擬機211通過虛擬網卡214,虛擬網橋M將生成的應答報文發送至代理單元221進行源地址轉換。
需要明確的是,本發明中的源地址轉換單元22設置在虛擬機21外。因為虛擬機 21內存儲的是用戶的數據,所以不能也不應該在虛擬機內設置源地址轉換單元22。
所述發送單元23,用于將所述第二應答報文發送至所述客戶端。
經過源地址轉換,發送單元23接收到的第二應答報文的源地址與第一請求報文的目的地址相同,因此可以直接發回到客戶端。
綜上所述,本發明提供的服務器通過在自身設置源地址轉換單元,使得生成的應答報文無需再通過負載均衡器進行轉發,縮短了報文的發送路徑,提高了通信效率。
本發明實施例3還提供了一種虛擬機集群系統,參見圖4,所述系統包括
負載均衡器31和服務器32。
該系統可以在前端設置一個或多個負載均衡器31。具體的可以根據報文的轉發數量和后端服務器32的數量設置。所述的服務器32也可以是一個或一組,可以根據需要處理的報文數量進行設置。在本發明的實施例中,參見圖4,包含多個服務器32。
所述負載均衡器31,用于接收客戶端發送的第一請求報文,并將所述第一請求報文的目的地址由所述負載均衡器31的地址轉換為所述服務器32上一虛擬機的地址后生成第二請求報文。
負載均衡器31上配置有IP地址,客戶端發送的第一請求報文的目的地址為負載均衡器31的IP地址。負載均衡器31并不對該報文做實際處理,而是從后端服務器32上選定一臺虛擬機,并根據自身存儲的后端虛擬機的IP地址將該請求報文的地址修改為該選定虛擬機的地址后發送出去。
所述服務器32包括虛擬機321,源地址轉換單元322和發送單元323。
在本發明的具體實施例中,參見圖4,可在同一個服務器32上可以模擬多個虛擬機 321。
所述虛擬機321,用于根據接收的所述第二請求報文生成第一應答報文。
這些虛擬機321都擁有各自唯一的I P地址,用于與負載均衡器31通信。根據應答報文的生成規則,虛擬機生成的應答報文的源地址為該虛擬機的IP地址。
所述源地址轉換單元322,用于將所述第一應答報文的源地址由所述虛擬機321 的地址轉換為所述負載均衡器31的地址,生成第二應答報文。
具體的源地址轉換單元322可以是代理單元或是防火墻。以代理單元為例,各虛擬機321可以通過各自的虛擬網卡橋接到指定的虛擬網橋上,由代理單元連接所述的虛擬網橋和所述服務器32的物理網卡。虛擬機321可以將第一應答報文通過虛擬網橋發送到源地址轉換單元322上。
所述發送單元323,用于將所述第二應答報文發送至所述客戶端。具體的可通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
經過源地址轉換后,發送單元323接收到的第二應答報文的源地址為負載均衡器的IP地址,因此,發送單元323可以直接將第二應答報文發回到客戶端。
在本發明的具體實施例中,該虛擬機集群的創建過程如下
為負載均衡器分配I P地址;
在服務器上設置源地址轉換單元并啟動;
創建多個虛擬機,并將虛擬機的虛擬網卡綁定到虛擬網橋;
通過DHCP (Dynamic Host Configuration Protocol,動態主機設置協議)或修改虛擬機鏡像配置文件的方式為虛擬機分配IP地址;
定義虛擬機集群系統,將虛擬機加入其中,并將虛擬機的IP地址保存到負載均衡器中;
啟動虛擬機集群服務。
在具體的實施過程中,還可以在后端虛擬機發生變化時,根據該變化對保存在負載均衡器中的虛擬機IP地址進行更新。
在本發明的上述實施例中,所述的虛擬機集群系統可以為LVS系統。
需要說明的是,本發明的服務器和系統實施例與本發明方法實施例相對應,相關部分參照方法實施例即可,此處不再做詳細介紹。
以上對本發明所提供的一種虛擬機集群的負載均衡方法、服務器和系統,進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在具體實施方式
及應用范圍上均會有改變之處。綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.一種虛擬機集群的負載均衡方法,應用在服務器中,其特征在于,所述方法包括接收負載均衡器發來的第二請求報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述服務器上一虛擬機的地址后生成的; 根據所述第二請求報文生成第一應答報文;將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文;將所述第二應答報文發送至所述客戶端。
2.一種服務器,其特征在于,所述服務器包括 源地址轉換單元、發送單元和至少一個虛擬機;所述虛擬機,用于根據接收的負載均衡器發來的第二請求報文生成第一應答報文;所述第二請求報文是所述負載均衡器接收到客戶端發送的第一請求報文后,將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述虛擬機的地址后生成的;所述源地址轉換單元,用于將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文;所述發送單元,用于將所述第二應答報文發送至所述客戶端。
3.根據權利要求2所述的服務器,其特征在于,所述虛擬機的虛擬網卡橋接到虛擬網橋上,所述源地址轉換單元連接所述虛擬網橋和所述服務器的物理網卡; 所述虛擬機將第一應答報文通過虛擬網橋發送到源地址轉換單元; 所述發送單元通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
4.根據權利要求2所述的服務器,其特征在于,所述虛擬機通過依次連接的虛擬網卡、 虛擬網橋和物理網卡接收所述第二請求報文。
5.根據權利要求2-4任一所述的服務器,其特征在于,所述源地址轉換單元包括防火掉丄回ο
6.一種虛擬機集群系統,其特征在于,所述系統包括 負載均衡器和服務器;所述負載均衡器,用于接收客戶端發送的第一請求報文,并將所述第一請求報文的目的地址由所述負載均衡器的地址轉換為所述服務器上一虛擬機的地址后生成第二請求報文;所述服務器包括虛擬機,源地址轉換單元和發送單元; 所述虛擬機,用于根據接收的所述第二請求報文生成第一應答報文; 所述源地址轉換單元,用于將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文;所述發送單元,用于將所述第二應答報文發送至所述客戶端。
7.根據權利要求6所述的系統,其特征在于,所述虛擬機的虛擬網卡橋接到虛擬網橋上,所述源地址轉換單元連接所述虛擬網橋和所述服務器的物理網卡;所述虛擬機將第一應答報文通過虛擬網橋發送到源地址轉換單元; 所述發送單元通過服務器的物理網卡將所述第二應答報文發送至所述客戶端。
8.根據權利要求6或7所述的系統,其特征在于,所述源地址轉換單元包括防火墻。
9.根據權利要求6或7所述的系統,其特征在于,所述系統包括Linux虛擬服務器系統。
全文摘要
本發明公開了一種虛擬機集群的負載均衡方法、服務器及系統。其中,所述方法包括接收負載均衡器發來的第二請求報文;根據所述第二請求報文生成第一應答報文;將所述第一應答報文的源地址由所述虛擬機的地址轉換為所述負載均衡器的地址,生成第二應答報文;將所述第二應答報文發送至所述客戶端。本發明通過在服務器中將虛擬機生成的應答報文進行源地址轉換,使得應答報文能夠不必發送至負載均衡器,再由負載均衡器發送至客戶端,因此,縮短了應答報文從服務器到客戶端的發送路徑,提高了系統的通信效率。
文檔編號H04L29/06GK102523302SQ20111044109
公開日2012年6月27日 申請日期2011年12月26日 優先權日2011年12月26日
發明者劉利鋒, 楊強 申請人:成都市華為賽門鐵克科技有限公司