本發明涉及計算機技術領域,尤其涉及一種應用組切換方法及裝置。
背景技術:
目前,在負載均衡廠商中,為了防止設備單點故障導致用戶業務癱瘓,都會提供一種設備容災方案。常見的容災方案主要是雙機模型(如圖1所述),在雙機模型中,一臺設備作為主機(圖1中的ad1)提供服務,另一臺設備作為備機(圖1中的ad2)不提供服務,只備份主機的配置與業務,當主機發生故障時,備機切換為主機,接替原主機的服務。
但隨著用戶的業務不斷發展,傳統的雙機模型逐漸暴露出以下缺點:
1、備機長時間處于不工作狀態,導致其硬件資源白白被浪費掉;
2、由于所有業務服務都只在主機設備上提供,那么整體的服務性能與業務擴展都受限于主機的單機性能,不利于用戶擴展自身的業務。
技術實現要素:
本發明的主要目的在于提出一種應用組切換方法及裝置,旨在解決傳統的業務切換采用雙機模型,容易導致備機的硬件資源浪費以及不利于拓展業務的技術問題。
為實現上述目的,本發明提供的一種應用組切換方法,所述方法應用于包括多個設備的集群中,所述集群中的應用服務根據業務類型被分成不同的應用組,所述應用組切換方法包括:
集群中的主控設備將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機;
在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
優選地,所述集群包括管理口和心跳ha口,所述集群中的各個設備通過所述管理口和所述ha口提供的心跳線互相發送心跳包,以檢測各個設備的健康狀態,并根據心跳包攜帶主控設備的選舉信息以選擇主控設備。
優選地,對集群中的應用組分配主機及/或備機的方式包括:
所述主控設備確定集群中是否存在默認的主機及/或備機;
若存在,將默認的主機及/或備機作為應用組的主機及/或備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的主機及/或備機。
優選地,所述對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機的步驟之后,所述應用組切換方法還包括:
所述主控設備將主機中的服務連接信息及/或會話記錄批量同步至同一個應用組的備機中,以使同一個應用組的主機和備機保持連接同步和會話同步;
在同一個應用組的主機和備機保持連接同步和會話同步的情況下,啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中。
優選地,所述在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中的步驟之前,所述應用組切換方法還包括:
所述主控設備實時監測各個主機上報的鏈路狀態信息和節點狀態信息;
若所述主控設備監測到應用組的主機上報鏈路離線或者節點離線時,認為所述應用組的主機故障。
優選地,所述集群中的各個應用組使用虛擬物理地址,所述在檢測到有應用組的主機故障時,所述應用組切換方法還包括:
所述主控設備將應用組的虛擬物理地址從主機遷移至備機中,以使切換前后的應用組的地址保持不變。
此外,為實現上述目的,本發明還提出一種應用組切換裝置,所述裝置應用于包括多個設備的集群中,所述集群中的應用服務根據業務類型被分成不同的應用組,所述應用組切換裝置包括:
分配模塊,用于將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
選擇模塊,用于對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機;
切換模塊,用于在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
優選地,所述集群包括管理口和心跳ha口,所述集群中的各個設備通過所述管理口和所述ha口提供的心跳線互相發送心跳包,以檢測各個設備的健康狀態,并根據心跳包攜帶主控設備的選舉信息以選擇主控設備。
優選地,對集群中的應用組分配主機及/或備機的方式包括:
確定集群中是否存在默認的主機及/或備機;
若存在,將默認的主機及/或備機作為應用組的主機及/或備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的主機及/或備機。
優選地,所述應用組切換裝置還包括:
同步模塊,用于將主機中的服務連接信息及/或會話記錄批量同步至同一個應用組的備機中,以使同一個應用組的主機和備機保持連接同步和會話同步;
啟動模塊,用于在同一個應用組的主機和備機保持連接同步和會話同步的情況下,啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中。
優選地,所述應用組切換裝置還包括:
監測模塊,用于實時監測各個主機上報的鏈路狀態信息和節點狀態信息;
處理模塊,用于若監測到應用組的主機上報鏈路離線或者節點離線時,認為所述應用組的主機故障。
優選地,所述集群中的各個應用組使用虛擬物理地址,所述在檢測到有應用組的主機故障時,所述應用組切換裝置還包括:
遷移模塊,用于將應用組的虛擬物理地址從主機遷移至備機中,以使切換前后的應用組的地址保持不變。
本發明提出的應用組切換方法及裝置,集群中的主控設備先將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機,然后對對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,后續在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。本方案中,充分利用集群中的每臺設備發布不同的應用服務,同時各臺設備能互為備機,當某個應用組的備機在主機故障的情況下,能接替主機繼續提供服務,而在主機沒有故障的情況下,備機自己作為另一個應用組的主機也能繼續提供服務,不會導致硬件資源的浪費,此外,集群中的各個設備都能提供服務,不限于主機提供服務,有利于集群中業務服務的拓展。
附圖說明
圖1為現有的業務切換架構圖;
圖2為本發明應用組切換方法第一實施例的流程示意圖;
圖3為本發明的集群架構圖;
圖4為應用組切換的示意圖;
圖5為本發明應用組切換方法第二實施例的流程示意圖;
圖6a-6b為主備機連接跟蹤同步和會話同步的示意圖;
圖7為本發明應用組切換方法第三實施例的流程示意圖;
圖8為本發明應用組切換裝置第一實施例的功能模塊示意圖;
圖9為本發明應用組切換裝置第二實施例的功能模塊示意圖;
圖10為本發明應用組切換裝置第三實施例的功能模塊示意圖。
具體實施方式
應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
本發明實施例的解決方案主要是:集群中的主控設備先將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機,然后對分配有主機的應用組,在集群中選擇除所述主機以外的任一設備作為應用組的備機,后續在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。以解決傳統的業務切換采用雙機模型,容易導致備機的硬件資源浪費,以及不利于拓展業務的技術問題。
專業術語介紹:
高可用集群:將多臺負載均衡設備組合起來為用戶提供服務,充分利用集群中的每一臺設備,發布不同的服務,同時能互為備份,保證故障發生時的最小業務中斷。
主機:集群中真正提供服務的負載均衡設備。
備機:集群中用于備份主機業務的設備,在主機故障的情況下,接替主機對外提供服務。
故障切換:主機故障后,由備機接替主機所承擔的業務,對外提供服務。
鏈路檢測:目前主要依靠指定協議數據包探測,通過判斷能否正常發送數據并且能夠正常收到對端主機的應答,則認為這條鏈路是健康的,否則是故障鏈路。
應用組:集群故障切換的基本單位,一個應用組含有多個具有關聯關系的服務,在同一時刻只在集群中的某一臺設備上發布。
浮動ip:同一時刻只在集群中的某一臺設備上生效的ip地址,可通過應用組切換來遷移到另一臺設備。
基于現有技術存在的問題,本發明提供一種應用組切換方法。
參照圖2,圖2為本發明應用組切換方法第一實施例的流程示意圖。
在本實施例中,所述方法應用于包括多個設備的集群中,所述集群中的應用服務根據業務類型被分成不同的應用組,所述應用組切換方法包括:
步驟s10,集群中的主控設備將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
步驟s20,對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機,還可以是集群中的空閑設備;
步驟s30,在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
在本實施例中,先根據多臺負載均衡設備組建一個高可用集群,優選是使用相同型號的設備組建高可用集群。該集群中有多臺設備,其中一臺是主控設備,一臺是備控設備,其余的是負載設備(也稱為候選設備),主控設備在集群中負責維護與管理配置、自動同步數據給其它設備、實時監控其它設備的健康狀態,并且還負責給所有設備分配業務服務;備控設備在主控設備故障時,切換為主控設備進行服務;候選設備是在備控設備故障時,作為新的備控設備以接替主機繼續服務的設備。主控設備是集群中的各個設備共同選取出來的,主控設備的具體選取方式如下:
集群包括管理口和心跳ha口,所述集群中的各個設備通過所述管理口和所述ha口提供的心跳線互相發送心跳包,以檢測各個設備的健康狀態,并根據心跳包攜帶主控設備的選舉信息以選擇主控設備。
即,集群中各個設備會相互發送心跳包,心跳包中攜帶主控設備的選舉信息,當超過一半的設備選擇一臺設備作為主控設備時,被選擇的設備就成為該集群中的主控設備。
此外,需要說明的是,本實施例中的集群包括管理口和心跳ha口,是一種雙網絡接口,即使其中一個網絡口出現故障,另一個網絡口也可以繼續被集群的各個設備使用,即各個設備通過一個網絡口的心跳線繼續進行相互發送心跳包,以檢測各個設備的健康狀態,進行主控設備的選舉。即使主控設備出現故障,其它各設備也可以通過心跳線快速確定出新的主控設備,提高了集群心跳的健壯性,并且可以提高集群的使用率。
應當理解,本實施例中集群具有雙網絡心跳檢測功能,通過將設備管理網絡作為冗余的心跳網絡,減小設備故障所帶來的影響,在很大程度地加強集群心跳的健壯性。
在確定主控設備之后,進一步確定該集群中的備控設備,備控設備的確定方式包括兩種:用戶確定或主控設備確定,即,該備控設備可以是用戶在界面中設置的默認設備,若用戶未在界面設置默認設備,則主控設備根據各個設備通過心跳線發送的心跳包,以確定集群中各個設備的健康狀態。即,集群包括的管理口和心跳ha口,還便于主控設備確定各個設備的健康狀態,即使備控設備故障,或者是一個網絡接口故障,主控設備也可根據另一個網絡口快速確定新的備控設備,同樣也提高了集群心跳的健壯性,并且可以提高集群的使用率。
當主控設備確定集群中各個設備都是健康設備時,可將負載分數最低的設備作為備控設備。
此外,傳統的備機出現故障時不易被檢測出來,往往等到主機故障切換后,才發現備機已經不可用了,此時兩臺設備都已不可用,用戶業務隨之癱瘓。而本實施例中,通過雙網絡心跳檢測功能,對主控設備以及備控設備都通實時檢測功能,可以快速的更換備控設備,防止備控設備故障時導致整個集群系統的癱瘓,提高了集群中設備使用的高可用性。
在本實施例中,在集群中確定主控設備和備控設備之后,所述主控設備開始對集群中的各個應用服務進行分組,具體的分組方式是根據業務類型進行劃分,以得到各個應用組,例如集群中有三個服務業務vs1、vs2和vs3,其中,vs1、vs2的業務類型一致,vs3與前兩個的業務類型不一致,則可將vs1、vs2劃分為一個應用組,將vs3劃分為一個應用組。
以下是本實施例中實現應用組切換的各個步驟:
其中,步驟s10,集群中的主控設備將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
在本實施例中,在確定主機之后,即可將應用組分配給主機,以使配有應用組的設備作為應用組的主機。所述主控設備對集群中的應用組分配主機的方式包括:
方式一:將所有健康的設備構成一個子集;
若集群中存在角色為主機的設備,所述主控設備確定角色為主機的設備中是否存在默認的主機;
若存在,將默認的主機作為應用組的主機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的主機。
也就是說,主控設備在對各個應用組分組之后,先將各個應用組分配給相應的主機,在集群中存在角色為主機的設備的情況下,所述主控設備確定集群里所有角色為主機的設備中是否存在默認的主機,若存在默認的主機,即可將默認的主機選作為應用組的主機;若沒有,則根據各個角色為主機的設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,以確定各個角色為主機的設備的負載分數,即負載分數=sum(生效應用組權值)/sum(所有應用組權值),再將負載分數最小的設備作為應用組的主機。可以理解,分數衡量設備間的相對負載情況,負載分數越低表示設備越空閑。
方式二:將所有健康的設備構成一個子集;
若集群中不存在角色為主機的設備,選擇新選舉出的備機為主機。
即,在集群中不存在主機的情況下,選擇新選舉出來的備機作為主機。
其中,步驟s20,對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機,還可以是集群中的空閑設備;
在對應用組分配主機之后,所述主控設備進一步對分配有主機的應用組選擇備機,備機的選擇方式包括:
方式一:將所有健康的設備構成一個子集;
若集群中存在角色為備機的設備,所述主控設備確定角色為備機的設備中是否存在默認的備機;
若存在,將默認的備機作為應用組的備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權重值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
即,在角色為備機的設備中,確定是否存在默認設備,若有,則直接將其選為備機,否則在角色為備機的設備中選擇一臺負載分數最低的設備為備機;
方式二:將所有健康的設備構成一個子集;
若集群中不存在角色為備機的設備,所述主控設備確定集群中是否存在默認的備機;
若存在,將默認的備機作為應用組的備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權重值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
方式三:在沒有健康設備時,將所有故障但在線的設備構成一個子集,在故障的設備中,所述主控設備確定是否存在默認的備機,若存在,將默認的備機作為應用組的備機,若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
其中,步驟s30,在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
在確定應用組的主機和備機之后,主控設備可監測各個應用組的主機工作狀態,在檢測到有應用組的主機故障時,即可將主機故障的應用組切換至所述應用組的備機中,由備機對應用組繼續提供服務。
可以理解,本實施例中,每個應用組都有一臺設備作為主機,另外的設備作為備機,提供靈活有效的應用切換機制,即使主機故障,也可將應用組切換至備機中繼續提供服務,降低整個系統的故障概率。
本實施例中,集群的架構如圖3所示,集群中包括管理口和ha口,集群中的各個設備通過心跳線相互發包,以根據各個心跳包確定出主控設備,在確定出主控設備后,再確定出備控設備以及ad設備。后續,主控設備在集群中對各個應用組分配主機和備機,本實施例中,主控設備為應用組分配主機時,保證不同的應用組分配到不同的設備作為主機,例如,集群中當前分了兩個應用組,兩個應用組均分配至不同的ad設備中。
為了更清楚理解本實施例,舉例詳述之:參照圖4,現有兩個應用組,應用組1和應用組2,如圖4所示,通過高可用集群系統的應用組選舉算法,將應用組均衡地分布在不同設備上,選舉結果為:
應用組1的主機為ad1,其備機為ad2;應用組2的主機為ad2,其備機為ad3;應用組1含有虛擬服務(vs1和vs2)、浮動ip(ip1和ip2)、源地址轉換(snat1);應用組2含有虛擬服務(vs3和vs4)、浮動ip(ip3和ip4)、源地址轉換(snat2);此時ad1對外提供vs1和vs2服務,ad2對外提供vs3和vs4服務。
若ad1發生故障,首先應用組1會立刻切換至ad2,ad2角色由備機升級為主機,接著應用組1在可用設備里重新選舉ad3作為備機,最終結果是ad2對外提供vs1、vs2、vs3、vs4服務。
若ad2發生故障,首先應用組2會立刻切換至ad3,ad3角色由備機升級為主機,接著應用組2在可用設備里重新選舉ad1作為備機,而應用組1的備機失效,于是在可用設備里重新選舉ad3作為備機,最終結果是ad1對外提供vs1和vs2服務,ad3對外提供vs3和vs4服務。
若ad1和ad2都發生故障了,此時對于應用組1來說,其主機和備機都不可用了,那么將會觸發應用組選舉,在所有設備中找到ad3是可用的,即選舉ad3作為應用組1的主機。對于應用組2來說,其主機故障了,業務便立刻切換至ad3,ad3角色由備機升級為主機。最終結果是ad3對外提供vs1、vs2、vs3、vs4服務。
通過上述方式,即可完成集群中各個應用組的切換。
可以理解,本實施例中,集群中的設備以應用組為單位可以各自發布不同的服務,然后由其它設備對此服務形成備份,在主機故障時,將應用組切換至備機中繼續服務,保證故障發生時的最小業務中斷。而且只要集群中有一臺設備可用,就不會導致任何一個服務故障無法使用,在此基礎上,實現均衡的應用組分配和故障切換機制。通過應用組的分配,實現不同業務在不同的設備上生效,并提供應用組的切換能力。
本實施例提出的應用組切換方法,集群中的主控設備先將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機,然后對對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,后續在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。本方案中,充分利用集群中的每臺設備發布不同的應用服務,同時各臺設備能互為備機,當某個應用組的備機在主機故障的情況下,能接替主機繼續提供服務,而在主機沒有故障的情況下,備機自己作為另一個應用組的主機也能繼續提供服務,不會導致硬件資源的浪費,此外,集群中的各個設備都能提供服務,不限于主機提供服務,有利于集群中業務服務的拓展。
進一步地,基于第一實施例提出本發明應用組切換方法的第二實施例。
本實施例與第一實施例的區別在于:參照圖5,所述步驟s20之后,所述應用組切換方法還包括:
步驟s40,所述主控設備將主機中的服務連接信息及/或會話記錄批量同步至同一個應用組的備機中,以使同一個應用組的主機和備機保持連接同步和會話同步;
步驟s50,在同一個應用組的主機和備機保持連接同步和會話同步的情況下,啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中。
在本實施例中,當應用組發生故障切換時,為防止用戶已有連接被中斷或者新連接調度到其它服務器上面,這里引入了連接跟蹤同步和會話保持同步機制。以應用組為單位,在主備機之間同步連接跟蹤和會話保持信息,可以減少設備需要同步的數據量。同步分為批量同步和增量同步,當應用組的主備機剛建立起來時,所述主控設備將主機中的服務連接信息及/或會話記錄批量同步至備機中,以使主機和備機保持連接同步和會話同步;而在主機和備機保持連接同步和會話同步的情況下,啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中即可,具體流程如下:
連接跟蹤同步:如圖6a所示,應用組1主備機分別為ad1和ad2,客戶端c與ad1創建連接,ad1向ad2同步服務相關連接跟蹤信息,當ad1發生故障,ad2成為應用組1的主機,客戶端c可與ad2在已有的連接上繼續通訊。
會話保持同步:如圖6b所示,應用組1主備機分別為ad1和ad2,客戶端c向ad1發起請求,ad1將客戶端c的請求調度到服務器n,ad1向ad2同步vs相關會話會話保持信息,當ad1發生故障,ad2成為應用組1的主機,客戶端c再次向ad2發起請求,ad2可將客戶端c的請求調度到相同的服務器n。
應當理解,若是按照傳統的雙機模型方案,若要保證主備切換后,原有連接服務和會話記錄不發生改變,那么主機必須同步所有連接跟蹤和會話保持到備機上,當業務擴展導致同步的數據量增加時,將給主機帶來更多的性能損耗。
在本實施例中,每個應用組的主機會向首選備機實時同步連接跟蹤和會話記錄,確保主備切換時用戶連接和會話保持不中斷,并且同步數據的方式是協同批量同步和增量同步,先批量同步之前的數據,在服務連接和會話記錄同步之后,后續新的內容增量同步即可,無須再將主機中所有數據同步至備機中,對主機的損耗降低了,并且數據的同步效率更高,更加智能。
進一步地,基于第一或第二實施例提出本發明應用組切換方法的第三實施例。
本實施例與第一或第二實施例的區別在于:參照圖7,所述步驟s30之前,所述應用組切換方法還包括:
步驟s60,所述主控設備實時監測各個主機上報的鏈路狀態信息和節點狀態信息;
步驟s70,若所述主控設備監測到應用組的主機上報鏈路離線或者節點離線時,認為所述應用組的主機故障。
在本實施例中,集群中每臺設備都可以監視自身的鏈路狀態和節點狀態,并上報給集群主控設備,主控設備當檢測到鏈路或者節點故障時,涉及到該鏈路和節點的應用組將被切換到備機上,保證服務持續可靠。
值得注意的是,在引用第二實施例時,所述步驟s60優選位于所述步驟s50之后。
在本實施例中,集群中的各個主機通過心跳線定時向主控設備上報鏈路狀態信息和節點狀態信息,以便于主控設備監控各個主機的運行狀態,主控設備監測到應用組的主機上報鏈路離線或者節點離線時,即可開始將應用組進行切換,提高了應用組切換的及時性。
進一步地,基于第一至第三實施例提出本發明應用組切換方法的第四實施例。
本實施例與第一至第三實施例的區別在于:所述集群中的各個應用組使用虛擬物理地址,所述在檢測到有應用組的主機故障時,所述應用組切換方法還包括:
所述主控設備將應用組的虛擬物理地址從主機遷移至備機中,以使切換前后的應用組的地址保持不變。
應當理解,傳統的網絡環境中,上游設備開啟了arp(addressresolutionprotocol,地址解析協議)綁定,會導致應用組切換后無法使用新mac(mediaaccesscontrol,介質訪問控制)物理地址。那么切換前后的應用組的地址不同,會導致業務中斷。
而本實施例中,通過mac地址偽裝,可保證切換后服務ip正常使用,應用組1包含虛擬服務vs1,vs1引用浮動ip1,ip1配置了虛擬mac地址mac1。當ad1發生故障,應用組1主機切換至ad2,ip1在ad2上生效,ad2使用mac1廣播ip1的arp,若ad2收到對于ip1的arp請求廣播,使用mac1返回arp應答。通過mac地址偽裝,當應用組發生故障切換時,ip地址轉移至其他設備,可使ip地址使用的mac地址不變,以達到最小切換時間,也可以滿足上游設備的arp綁定需求。
本實施例中,通過使用虛擬的mac地址偽裝,應用組切換時浮動ip對應的mac地址跟隨應用組一起切換到備機,這樣切換后應用組的mac地址保持不變,以達到最快的切換速度,將客戶業務的中斷時間減少到最短,保證了業務的正常進行。
本發明進一步提供一種應用組切換裝置。
參照圖8,圖8為本發明應用調試裝置較佳實施例的功能模塊示意圖。
需要強調的是,對本領域的技術人員來說,圖8所示功能模塊圖僅僅是一個較佳實施例的示例圖,本領域的技術人員圍繞圖8所示的應用組切換裝置的功能模塊,可輕易進行新的功能模塊的補充;各功能模塊的名稱是自定義名稱,僅用于輔助理解該應用組切換裝置的各個程序功能塊,不用于限定本發明的技術方案,本發明技術方案的核心是,各自定義名稱的功能模塊所要達成的功能。
本實施例提出一種應用組切換裝置,所述裝置應用于包括多個設備的集群中,所述集群中的應用服務根據業務類型被分成不同的應用組,所述應用組切換裝置包括:
分配模塊10,用于將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
選擇模塊20,用于對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機,還可以是集群中的空閑設備;
切換模塊30,用于在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
在本實施例中,先根據多臺負載均衡設備組建一個高可用集群,優選是使用相同型號的設備組建高可用集群。該集群中有多臺設備,其中一臺是主控設備,一臺是備控設備,其余的是負載設備(也稱為候選設備),主控設備在集群中負責維護與管理配置、自動同步數據給其它設備、實時監控其它設備的健康狀態,并且還負責給所有設備分配業務服務;備控設備在主控設備故障時,切換為主控設備進行服務;候選設備是在備控設備故障時,作為新的備控設備以接替主機繼續服務的設備。主控設備是集群中的各個設備共同選取出來的,主控設備的具體選取方式如下:
集群包括管理口和心跳ha口,所述集群中的各個設備通過所述管理口和所述ha口提供的心跳線互相發送心跳包,以檢測各個設備的健康狀態,并根據心跳包攜帶主控設備的選舉信息以選擇主控設備。
即,集群中各個設備會相互發送心跳包,心跳包中攜帶主控設備的選舉信息,當超過一半的設備選擇一臺設備作為主控設備時,被選擇的設備就成為該集群中的主控設備。
此外,需要說明的是,本實施例中的集群包括管理口和心跳ha口,是一種雙網絡接口,即使其中一個網絡口出現故障,另一個網絡口也可以繼續被集群的各個設備使用,即各個設備通過一個網絡口的心跳線繼續進行相互發送心跳包,以檢測各個設備的健康狀態,進行主控設備的選舉。即使主控設備出現故障,其它各設備也可以通過心跳線快速確定出新的主控設備,提高了集群心跳的健壯性,并且可以提高集群的使用率。
應當理解,本實施例中集群具有雙網絡心跳檢測功能,通過將設備管理網絡作為冗余的心跳網絡,減小設備故障所帶來的影響,在很大程度地加強集群心跳的健壯性。
在確定主控設備之后,進一步確定該集群中的備控設備,備控設備的確定方式包括兩種:用戶確定或主控設備確定,即,該備控設備可以是用戶在界面中設置的默認設備,若用戶未在界面設置默認設備,則主控設備根據各個設備通過心跳線發送的心跳包,以確定集群中各個設備的健康狀態。即,集群包括的管理口和心跳ha口,還便于主控設備確定各個設備的健康狀態,即使備控設備故障,或者是一個網絡接口故障,主控設備也可根據另一個網絡口快速確定新的備控設備,同樣也提高了集群心跳的健壯性,并且可以提高集群的使用率。
當主控設備確定集群中各個設備都是健康設備時,可將負載分數最低的設備作為備控設備。
此外,傳統的備機出現故障時不易被檢測出來,往往等到主機故障切換后,才發現備機已經不可用了,此時兩臺設備都已不可用,用戶業務隨之癱瘓。而本實施例中,通過雙網絡心跳檢測功能,對主控設備以及備控設備都通實時檢測功能,可以快速的更換備控設備,防止備控設備故障時導致整個集群系統的癱瘓,提高了集群中設備使用的高可用性。
在本實施例中,在集群中確定主控設備和備控設備之后,所述主控設備開始對集群中的各個應用服務進行分組,具體的分組方式是根據業務類型進行劃分,以得到各個應用組,例如集群中有三個服務業務vs1、vs2和vs3,其中,vs1、vs2的業務類型一致,vs3與前兩個的業務類型不一致,則可將vs1、vs2劃分為一個應用組,將vs3劃分為一個應用組。
以下是本實施例中實現應用組切換的各個模塊,以及模塊功能介紹:
其中,分配模塊10,用于將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機;
在本實施例中,在確定主機之后,分配模塊10即可將應用組分配給主機,以使配有應用組的設備作為應用組的主機。分配模塊10對集群中的應用組分配主機的方式包括:
方式一:將所有健康的設備構成一個子集;
若集群中存在角色為主機的設備,所述主控設備確定角色為主機的設備中是否存在默認的主機;
若存在,將默認的主機作為應用組的主機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的主機。
也就是說,主控設備在對各個應用組分組之后,先將各個應用組分配給相應的主機,在集群中存在角色為主機的設備的情況下,所述主控設備確定集群里所有角色為主機的設備中是否存在默認的主機,若存在默認的主機,即可將默認的主機選作為應用組的主機;若沒有,則根據各個角色為主機的設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,以確定各個角色為主機的設備的負載分數,即負載分數=sum(生效應用組權值)/sum(所有應用組權值),再將負載分數最小的設備作為應用組的主機。可以理解,分數衡量設備間的相對負載情況,負載分數越低表示設備越空閑。
方式二:將所有健康的設備構成一個子集;
若集群中不存在角色為主機的設備,選擇新選舉出的備機為主機。
即,在集群中不存在主機的情況下,選擇新選舉出來的備機作為主機。
其中,選擇模塊20,用于對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,其中,當前應用組的備機可以是其它應用組的主機或備機,還可以是集群中的空閑設備;
在對應用組分配主機之后,選擇模塊20進一步對分配有主機的應用組選擇備機,備機的選擇方式包括:
方式一:將所有健康的設備構成一個子集;
若集群中存在角色為備機的設備,所述主控設備確定角色為備機的設備中是否存在默認的備機;
若存在,將默認的備機作為應用組的備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權重值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
即,在角色為備機的設備中,確定是否存在默認設備,若有,則直接將其選為備機,否則在角色為備機的設備中選擇一臺負載分數最低的設備為備機;
方式二:將所有健康的設備構成一個子集;
若集群中不存在角色為備機的設備,所述主控設備確定集群中是否存在默認的備機;
若存在,將默認的備機作為應用組的備機;
若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權重值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
方式三:在沒有健康設備時,將所有故障但在線的設備構成一個子集,在故障的設備中,所述主控設備確定是否存在默認的備機,若存在,將默認的備機作為應用組的備機,若不存在,根據各個設備中已生效的應用組的權值和,與集群中所有應用組的權值和的比值,確定各個設備的負載分數,再將負載分數最小的設備作為應用組的備機。
其中,切換模塊30,用于在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。
在確定應用組的主機和備機之后,切換模塊30可監測各個應用組的主機工作狀態,在檢測到有應用組的主機故障時,即可將主機故障的應用組切換至所述應用組的備機中,由備機對應用組繼續提供服務。
可以理解,本實施例中,每個應用組都有一臺設備作為主機,另外的設備作為備機,提供靈活有效的應用切換機制,即使主機故障,也可將應用組切換至備機中繼續提供服務,降低整個系統的故障概率。
本實施例中,集群的架構如圖3所示,集群中包括管理口和ha口,集群中的各個設備通過心跳線相互發包,以根據各個心跳包確定出主控設備,在確定出主控設備后,再確定出備控設備以及ad設備。后續,主控設備在集群中對各個應用組分配主機和備機,本實施例中,主控設備為應用組分配主機時,保證不同的應用組分配到不同的設備作為主機,例如,集群中當前分了兩個應用組,兩個應用組均分配至不同的ad設備中。
為了更清楚理解本實施例,舉例詳述之:參照圖4,現有兩個應用組,應用組1和應用組2,如圖4所示,通過高可用集群系統的應用組選舉算法,將應用組均衡地分布在不同設備上,選舉結果為:
應用組1的主機為ad1,其備機為ad2;應用組2的主機為ad2,其備機為ad3;應用組1含有虛擬服務(vs1和vs2)、浮動ip(ip1和ip2)、源地址轉換(snat1);應用組2含有虛擬服務(vs3和vs4)、浮動ip(ip3和ip4)、源地址轉換(snat2);此時ad1對外提供vs1和vs2服務,ad2對外提供vs3和vs4服務。
若ad1發生故障,首先應用組1會立刻切換至ad2,ad2角色由備機升級為主機,接著應用組1在可用設備里重新選舉ad3作為備機,最終結果是ad2對外提供vs1、vs2、vs3、vs4服務。
若ad2發生故障,首先應用組2會立刻切換至ad3,ad3角色由備機升級為主機,接著應用組2在可用設備里重新選舉ad1作為備機,而應用組1的備機失效,于是在可用設備里重新選舉ad3作為備機,最終結果是ad1對外提供vs1和vs2服務,ad3對外提供vs3和vs4服務。
若ad1和ad2都發生故障了,此時對于應用組1來說,其主機和備機都不可用了,那么將會觸發應用組選舉,在所有設備中找到ad3是可用的,即選舉ad3作為應用組1的主機。對于應用組2來說,其主機故障了,業務便立刻切換至ad3,ad3角色由備機升級為主機。最終結果是ad3對外提供vs1、vs2、vs3、vs4服務。
通過上述方式,即可完成集群中各個應用組的切換。
可以理解,本實施例中,集群中的設備以應用組為單位可以各自發布不同的服務,然后由其它設備對此服務形成備份,在主機故障時,將應用組切換至備機中繼續服務,保證故障發生時的最小業務中斷。而且只要集群中有一臺設備可用,就不會導致任何一個服務故障無法使用,在此基礎上,實現均衡的應用組分配和故障切換機制。通過應用組的分配,實現不同業務在不同的設備上生效,并提供應用組的切換能力。
本實施例提出的應用組切換裝置,集群中的主控設備先將各個應用組分配至所述集群的各個設備,以將分配有應用組的設備作為應用組的主機,然后對對分配有主機的每一個應用組,在集群中選擇除當前應用組的所述主機以外的任一設備作為當前應用組的備機,后續在檢測到有應用組的主機故障時,將主機故障的應用組切換至所述應用組的備機中,由備機對應用組提供服務。本方案中,充分利用集群中的每臺設備發布不同的應用服務,同時各臺設備能互為備機,當某個應用組的備機在主機故障的情況下,能接替主機繼續提供服務,而在主機沒有故障的情況下,備機自己作為另一個應用組的主機也能繼續提供服務,不會導致硬件資源的浪費,此外,集群中的各個設備都能提供服務,不限于主機提供服務,有利于集群中業務服務的拓展。
進一步地,基于第一實施例提出本發明應用組切換裝置的第二實施例。
本實施例與第一實施例的區別在于:參照圖9,所述應用組切換裝置還包括:
同步模塊40,用于將主機中的服務連接信息及/或會話記錄批量同步至同一個應用組的備機中,以使同一個應用組的主機和備機保持連接同步和會話同步;
啟動模塊50,用于在同一個應用組的主機和備機保持連接同步和會話同步的情況下,啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中。
本實施例中,同步模塊和啟動模塊可統稱為數據同步模塊。
在本實施例中,當應用組發生故障切換時,為防止用戶已有連接被中斷或者新連接調度到其它服務器上面,這里引入了連接跟蹤同步和會話保持同步機制。以應用組為單位,在主備機之間同步連接跟蹤和會話保持信息,可以減少設備需要同步的數據量。同步分為批量同步和增量同步,當應用組的主備機剛建立起來時,同步模塊40將主機中的服務連接信息及/或會話記錄批量同步至備機中,以使主機和備機保持連接同步和會話同步;而在主機和備機保持連接同步和會話同步的情況下,啟動模塊50啟動增量同步方式,以將主機中新的服務連接信息及/或會話記錄同步至備機中即可,具體流程如下:
連接跟蹤同步:如圖6a所示,應用組1主備機分別為ad1和ad2,客戶端c與ad1創建連接,ad1向ad2同步服務相關連接跟蹤信息,當ad1發生故障,ad2成為應用組1的主機,客戶端c可與ad2在已有的連接上繼續通訊。
會話保持同步:如圖6b所示,應用組1主備機分別為ad1和ad2,客戶端c向ad1發起請求,ad1將客戶端c的請求調度到服務器n,ad1向ad2同步vs相關會話會話保持信息,當ad1發生故障,ad2成為應用組1的主機,客戶端c再次向ad2發起請求,ad2可將客戶端c的請求調度到相同的服務器n。
應當理解,若是按照傳統的雙機模型方案,若要保證主備切換后,原有連接服務和會話記錄不發生改變,那么主機必須同步所有連接跟蹤和會話保持到備機上,當業務擴展導致同步的數據量增加時,將給主機帶來更多的性能損耗。
在本實施例中,每個應用組的主機會向首選備機實時同步連接跟蹤和會話記錄,確保主備切換時用戶連接和會話保持不中斷,并且同步數據的方式是協同批量同步和增量同步,先批量同步之前的數據,在服務連接和會話記錄同步之后,后續新的內容增量同步即可,無須再將主機中所有數據同步至備機中,對主機的損耗降低了,并且數據的同步效率更高,更加智能。
進一步地,基于第一或第二實施例提出本發明應用組切換裝置的第三實施例。
本實施例與第一或第二實施例的區別在于:參照圖10,所述應用組切換裝置還包括:
監測模塊60,用于實時監測各個主機上報的鏈路狀態信息和節點狀態信息;
處理模塊70,用于若監測到應用組的主機上報鏈路離線或者節點離線時,認為所述應用組的主機故障。
在本實施例中,集群中每臺設備都可以監視自身的鏈路狀態和節點狀態,并上報給集群主控設備,監測模塊60檢測到鏈路或者節點故障時,處理模塊70將涉及到該鏈路和節點的應用組切換到備機上,保證服務持續可靠。
在本實施例中,集群中的各個主機通過心跳線定時向主控設備上報鏈路狀態信息和節點狀態信息,以便于主控設備監控各個主機的運行狀態,主控設備監測到應用組的主機上報鏈路離線或者節點離線時,即可開始將應用組進行切換,提高了應用組切換的及時性。
進一步地,基于第一至第三實施例提出本發明應用組切換裝置的第四實施例。
本實施例與第一至第三實施例的區別在于:所述集群中的各個應用組使用虛擬物理地址,所述在檢測到有應用組的主機故障時,所述應用組切換裝置還包括:
遷移模塊,用于將應用組的虛擬物理地址從主機遷移至備機中,以使切換前后的應用組的地址保持不變。
應當理解,傳統的網絡環境中,上游設備開啟了arp(addressresolutionprotocol,地址解析協議)綁定,會導致應用組切換后無法使用新mac地址。那么切換前后的應用組的地址不同,會導致業務中斷。
而本實施例中,通過mac地址偽裝,可保證切換后服務ip正常使用,應用組1包含虛擬服務vs1,vs1引用浮動ip1,ip1配置了虛擬mac地址mac1。當ad1發生故障,應用組1主機切換至ad2,ip1在ad2上生效,ad2使用mac1廣播ip1的arp,若ad2收到對于ip1的arp請求廣播,使用mac1返回arp應答。通過mac地址偽裝,當應用組發生故障切換時,遷移模塊將ip地址轉移至其他設備,可使ip地址使用的mac地址不變,以達到最小切換時間,也可以滿足上游設備的arp綁定需求。
本實施例中,通過使用虛擬的mac地址偽裝,應用組切換時浮動ip對應的mac地址跟隨應用組一起切換到備機,這樣切換后應用組的mac地址保持不變,以達到最快的切換速度,將客戶業務的中斷時間減少到最短,保證了業務的正常進行。
需要說明的是,在本文中,術語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者系統所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統中還存在另外的相同要素。
上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,空調器,或者網絡設備等)執行本發明各個實施例所述的方法。
以上僅為本發明的優選實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其它相關的技術領域,均同理包括在本發明的專利保護范圍內。