天翼雲虛擬IP地址及其在高可用叢集中的應用

天翼雲開發者社群發表於2022-03-23

     在很多應用場景中,需要在雲平臺中搭建高可用叢集,就這需要用到虛擬 IP地址功能。今天就來談一談虛擬IP地址及它的應用場景。

一、高可用叢集

在談虛擬IP地址前,我們先了解一下什麼叫高可用叢集。

高可用叢集(High Availability Cluster),或者叫故障轉移叢集(Failover Cluster),它是指透過叢集軟體,將幾臺伺服器組合為一個叢集系統提供服務,這些伺服器中同一時間內一般只有一臺在提供服務(稱之為主節點或者Master節點),其它伺服器待命(稱之為備節點或者Slave節點),當主節點出現伺服器故障或者應用出現問題,叢集軟體自動將業務切換到備節點上,實現了故障的自動轉移,使業務恢復正常,縮短了業務不可用時間。

二、高可用叢集和負載均衡叢集的區別

天翼雲平臺已經提供了彈性負載均衡服務,也可以實現業務的高用性,那為什麼還要有高可用叢集而不直接用負載均衡器呢?

這是由於負載均衡叢集和高可用叢集的使用場景有一定的差別。

負載均衡器的功能是根據配置的演算法將接受到的應用請求分發到後端的真實伺服器上,同時負載均衡器負責進行故障檢測,如果後端真實伺服器出現故障時,負載均衡器時會將出現故障的真實伺服器從分發列表中剔除,應用請求不會分發到出現故障的伺服器上,實現故障隔離。這種場景一般應用於後端伺服器的地位是對等的場景,就像去電信營業廳辦理業務,去1號還是2號櫃檯是沒有任何區別的,都可以正常辦理業務。因此負載均衡器一般用於Web伺服器、應用伺服器場景。

想一想,負載均衡器幫我們實現了Web伺服器或應用伺服器的高可用,如果負載均衡器本身出了問題怎麼辦呢?是不是整個業務系統就當掉了呢?雖然負載均衡也可以分級部署,一個負載均衡器把業務再次分發到後端的多個負載均衡器上,但第一級的負載均衡器還是有出現單點故障的可能。這就要用到高可用叢集了。

高可用叢集主要用於服務的介面只能是單一介面的場景。舉個例子,一個公司裡只會有一個總經理,可能會有幾個副總,幾個副總的分工會有所不同,但總經理永遠只會有一個。如果總經理因某些原因不能繼續履職,可能會從幾個副總中提拔或者空降一個過來當總經理。這幾個副總就好像負載均衡架構下的後端真實伺服器,總經理如果不能履職了,就好像負載均衡器本身出了故障,必須要安排一個新的總經理來接任。

三、高可用叢集中的虛擬IP地址

一個高可用叢集需要一個統一的訪問入口,這個入口就是IP地址。如果主節點當機了,備節點接管應用後同時也要把應用訪問入口接管過來,否則客戶端還會繼續去訪問已經當機的主節點。

畫圖舉例,圖中叢集主節點IP地址是 192.168.1.10,備節點IP地址是 192.168.1.11,正常情況下客戶端訪問主節點的IP地址 192.168.1.10,如果主節點當機了,要實現故障的切換需要做兩個步驟:1、在備節點上把應用啟動起來 2、把備節點的IP地址修改為 192.168.1.10。就這需要人工進行干預,因為IP地址是不能隨意變更的,達不到自動故障切換的目的。這種叢集一般稱之為冷備,備節點平時甚至可以關機,主節點出現故障後人工進行干預恢復業務。

 

為實現客戶端訪問入口IP地址的自動切換,高可用叢集中引入了虛擬IP地址。虛擬IP地址又稱為VIP或者浮動IP,在圖中我們增加一個虛擬IP地址 192.168.1.20 把它配置在主節點上,主節點出現故障後,叢集軟體會自動在備節點上增加這個虛擬IP地址。這樣叢集中實際有三個IP地址,192.168.1.10和192.168.1.11 一般稱之為私有IP地址或固定IP地址,它們是不會隨著應用的主備切換變更的,而192.168.1.20這個地址就會根據情況在兩個節點之間切換。

主節點正常時,虛擬IP地址在主節點上,由主節點提供服務:

 

主節點當機後,服務由備節點接管,虛擬IP地址自動切換到備節點上:

四、天翼雲虛擬IP地址

在傳統IT系統中,虛擬IP地址透過叢集軟體配置後就可以正常使用了。

在公有云平臺上,需要在雲平臺申請一個虛擬IP地址,並繫結到高可用叢集中的雲主機,再在叢集軟體中配置這個虛擬IP地址就可以正常使用。

虛擬IP地址同時可以繫結到一個彈性公網IP地址,實現從公網訪問高可用叢集。

虛擬IP的申請方法為在天翼雲控制檯上,進入虛擬私有云選單,進入需要建立虛擬IP所在的子網,點選到“虛擬IP”頁面,申請一個虛擬IP地址。

 

虛擬IP地址申請完成後,需要將虛擬IP地址繫結到高可用叢集內的雲主機,並可以繫結虛擬IP地址到一個彈性公網IP地址。

繫結完成後,平臺的架構如下圖:

 


 

五、常用高可用叢集軟體及應用

目前公有云平臺上最常用的高可用叢集軟體是開源的keepalived軟體,keepalived只支援Linux作業系統,它在叢集內維護一個虛擬IP地址,並可以監控應用的狀態,進行虛擬IP地址的切換及應用的啟停。

常見的應用場景舉例:

1、keepalived + LVS/Haproxy實現高可用負載均衡叢集

2、keepalived + nginx/Tomcat等中介軟體實現高可用應用叢集

3、keepalived + MySQL實現MySQL高可用叢集

4、keepalived + kubernetes 實現容器高可用叢集

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2883471/,如需轉載,請註明出處,否則將追究法律責任。

相關文章