作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化暨分散式安全防護技術方案的介紹與推廣。 

 

在前面一篇網誌我們提到了Edge Service Gateway其實是藉由在軟體內建立的虛擬機器形式,提供多種資料中心內的網路與安全服務於此虛機內,包括防火牆、負載平衡器、路由器等等功能。既然這台虛擬機器必須如同實體網路設備一般提供重要的網路封包傳輸服務,那當然,高可用度的需求就變得很重要了。虛擬機器本身運作必須穩定!要是真的不小心掛掉了,阿尼馬上就得復活,不能等到下一集再重新跑出來!

 

所以如果僅使用vSphere自己的HA功能來保護Edge Service Gateway是足夠的嗎?這牽涉到使用此Edge Gateway之生產或測試環境的實際需求。但請考慮一下vSphere HA的情境:如果你們重要的負載平衡器VM所在的實體伺服器出事了,此時其他同一個Cluster內的實體伺服器,依據掛掉的實體伺服器角色是vSphere HA的Master or Slave,可能需要經過18~35秒的時間才會重新啟動這個Edge Service Gateway的VM。然後要再過將Edge Gateway VM開機、啟用服務、設定組態等等的時間,抓順利的話一分鐘好了,此時我們的Edge Gateway才會重新回復到正常運作的狀況。

 

所以我們這邊談到的是在底層硬體失效時可能會有個一到兩分鐘的down-time。這樣的時間用戶能夠忍受嗎?更不要談到的是原本在此Edge Gateway內各服務的連線表,比如說防火牆的session table、負載平衡器的persistent table等等這些都因為重開機而被重置。此時所有業務用戶也都必須重新進行連接,現有的應用連線會被打斷。

 

絕大部份的環境內,我們可能可以忍受單台伺服器虛機有兩分鐘的down-time。但一台核心防火牆…一台重要的負載平衡器…嗯嗯只用vSphere HA保護是不太足夠。

 

所以Edge Gateway具備自己的High-Availability功能是有必要的。當Edge Gateway的High Availability功能啟用時,NSX Manager除了會建立一台Active Edge Gateway,也會自動於另一台實體伺服器內建立一台Standby Edge Gateway。如下圖所示

 

圖說:High Availability啟用時會於兩台實體伺服器各建立一個Edge Gateway

 

Active Edge Gateway負責實際上提供網路及安全服務,並將相關的連線狀態送到Standby Edge Gateway上。兩台Gateway VMs會透過內部的port group進行heart-beat確認對方的狀態。當有任何一台Edge Gateway所在之實體伺服器失效時

 

  • 如果是Active Edge Gateway失效,Standby Gateway會偵測到此狀況,成為Active Gateway並藉由之前同步過來的routing table / session table / persistent table等等接手提供網路服務。原先的Active Gateway會藉由vSphere HA於其他正常運作的實體伺服器重新啟動,並且擔任Standby Gateway的角色。

 

  • 如果是Standby Edge Gateway失效,Active Edge Gateway仍然正常持續提供網路服務,Standby Edge Gateway 會藉由vSphere HA於其他正常運作的實體伺服器重新啟動。上述的運作機制可以如下圖所示

 

圖說:單台Edge Gateway失效時,會於其他實體伺服器利用vSphere HA重啟

 

Active與Standby Edge Gateway間不僅是利用heart-beat確認對方的狀態,Active Edge Gateway會持續將本身的狀態送給Standby VM,以便Standby Edge Gateway啟動時,原先用戶的連線可持續運作。下表列出針對不同Edge Gateway所提供之網路與安全服務,於High Availability機制內所進行之同步行為

 

High Availability預設是需要15秒才會開始進行切換的動作,但如果需要的話我們可調整Edge Gateway設定到6秒就開始進行切換。加上進行切換時的一些準備動作(一般約10~15秒),一般大家需要預期在啟用Edge Gateway High Availability功能時,當有實體伺服器失效,可能的中斷時間應會在20~30秒間。但用戶的應用連線可直接回復連線狀態,無需手動進行重連。

 

和vSphere的HA / DRS等等設定一樣,High Availability的功能啟用也都非常簡單。建立Edge Gateway時,只要我們把high availability的功能打勾,高可用度功能就會自動啟用且Standby Edge Gateway會自動被建立,如下圖:

 

圖說:Edge Gateway之High Availability功能啟用只要打個勾就好

 

當High Availability功能啟用時,工程師由Edge Gateway的console內,打show service highavailability可以看到下面的顯示

 

包括這台虛機是目前Active或是Standby的狀態,Timer的設定,自己與Peer的接取狀態,在這邊都可看到。

 

 

我們再就兩個相關的問題進行討論。首先,在部署Edge Gateway時,我們通常要求Edge Gateway所在的Cluster,通常是Management Cluster或是獨立的Edge Cluster,裡面一定至少要有三台以上的實體伺服器。原因是

 

  • Active / Standby Edge Gateway應該要設定anti-affinity rule,不能部署到同一台實體伺服器上,不然這台實體伺服器掛掉,Active / Standby的Edge Gateway就同時死了。

 

  • 單台實體伺服器失效時,我們需要第三台實體伺服器,讓失效的Edge Gateway能夠在還正常運作的實體伺服器上透過vSphere HA重新啟動。

 

另外大家可能也會想討論一個問題:既然如果Edge Gateway作為核心路由器 / 防火牆 / 負載平衡器那麼地重要,那有20~30 secs的downtime大家或許還是不太滿意。既然vSphere 6裡面我們的Fault Tolerance功能變得這麼厲害,我們能不能直接用FT功能來保護Edge Gateway,這樣多棒,一點downtime都沒有?

 

在目前這個時間點,將Fault Tolerance使用於Edge Gateway的情境暫時還是不支援的。幾個理由如下:

  • Fault Tolerance目前單台VM支援到最大4個vCPU,但是Edge Gateway最大的x-large等級是需要6個vCPU,無法支援

 

  • 單台實體伺服器上有可以啟動FT功能的VM數目限制,目前vSphere 6版本的限制是每台伺服器上啟動FT功能的VM總共不超過4台,或是所有的vCPU不超過8個。這代表原本比如一個三台實體伺服器的叢集我們可以放個十幾二十對Edge Service Gateways,結果現在只能放四對了

 

下一篇文章內我們會對Edge Service Gateway可以提供的Load-Balancing 服務提供更細部的介紹。