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

經過前文對於如何以NSX Advanced Load Balancer內的Policy / Datascript來滿足網站管理員進階管理需求的一系列討論後。本文內我想以問答的方式來回應常被客戶及經銷夥伴詢問到的相關問題,供大家參考。

同一個Virtual Service內,可不可以同時配置PolicyDatascript

可以的,但如果這樣做,需要小心先後順序。請參考下列兩張圖,首先是HTTP Request的運作流程

接著是HTTP Response的接收處理流程:

原則上,都是Policy先進行處理,然後才做Datascript。因此這邊邏輯需要理順,比如說在Policy判斷時就把連線斷掉,Datascript這邊就不會執行到了。

而同時在一個Virtual Service內配置多個Policy或是Datascript也可以,但就會有順序性的問題,比如說有兩個Datascript,排行在上面的先執行這樣。簡而言之,在配置時請務必多做測試。

如果同一個需求可以用Policy也可以用Datascript做,使用哪一種比較好?

Policy雖然是透過UI介面配置,但核心是由C語言開發,因此執行高效。Datascript是採用Lua直譯式語言,功能完整可是效率較差,執行時CPU需求也較高。因此在功能上兩者都可滿足時,使用Policy是效能上較好的。

但另一個考量其實是操作與可維護性,這就完全看不同的管理者。某些客戶喜歡採用UI介面管理,就較適合採用Policy。但我們也碰過管理者希望全部採用Script的機制,管理修改簡便,易於查找,也可在一個Script裡面完成多件事項。這就真的看大家的習慣了。

如果 NSX ALBController失效,會不會影響 Policy / Datascript的運作?

不會,Policy與Datascript雖然是在Controller介面內配置,但都會直接下發到對應的服務引擎內,如果真的發生Controller集群失效的狀況,現有Virtual Service以及裡面配置的相關策略都不會受到影響。

我在NSX ALB介面內還有看到一個ControlScripts,與Datascripts有何區別?

ControlScripts與Datascripts是兩個完全不同的東西。Control Script是基於Python,讓管理者由NSX ALB Controller可以『呼叫外部系統』的作業。比如說,如果特定告警發生像連線量過高,NSX ALB Controller可以透過Control Script去啟動像是加幾台Web Server虛機;或在服務引擎或是後端Web Server失效時跑一個Workflow來執行特定批次作業。

簡單的總結比較:

  • Datascript基於Lua語法,是由服務引擎執行,對應Virtual Service的特定事件來進行處理。Controller失效時,Datascript運作不受影響
  • Control Script基於Python,是由Controller執行,在特定告警 (Alert) 發生時可運作指定的Workflow。Controller失效時,Control Script就不能運作了。

VMware有沒有出Converter可以直接將iRule轉成NSX ALBPolicy或是Datascript

很抱歉並沒有,實際上也不是那麼容易將兩個完全不同的程式語言直接轉換。我們目前的實務運作都是由VMware Professional Service以及代理商的專家協助客戶review現有已經採用的規則,可能是iRule也可能是其他像是HA Proxy的Application Rule,或是nginx的策略,然後再提出建議的Policy或是Datascript配置參考。

使用PolicyDatascript是否有特定的授權限制?

基本上在寫作此時 (22.1.2版) NSX Advanced Load Balancer 的付費版本只有一個功能版本:Enterprise。Enterprise版基本上是『全功能』的,也就是說包含這邊討論的Policy / Datascript,以及所有其他像Web Application Firewall / Global Server Load Balancing / Active-Active機制 / auto-scaleout等等功能都具備,沒有再去區分。因此若企業訂閱了NSX ALB方案,Policy與Datascript均是完整支援。

但NSX Advanced Load Balancer確實還有兩個附於其他產品內的簡配版本。搭配於Tanzu方案內的基礎版本為NSX ALB Essential版本,僅僅提供Tanzu K8S集群管理構件以及Service Type Load Balancer 機制 (L4 Load Balancing功能)。此版本內,Datascript與Policy都是不支持的。此外,NSX Datacenter Advanced版本以上,也有隨附NSX ALB的Basic版本,包含L4以及基礎L7 Load Balancing功能。Basic版本內,Datascript不支援,而Policy介面可使用但功能會受限。

實話實說,基本上要使用到Policy介面與Datascript工具,在網站維運上都不是單純的負載平衡與健康檢查需求,而是要動用到應用遞送需求的進階管理機制了,因此這邊當然也請大家規劃時要採用Enterprise版本才能得到完整支持。

我需要專家協助諮詢如何撰寫Policy / Datascript,應該如何進行?

VMware台灣的Professional Service團隊就有多個協助企業客戶進行網站維運機制移轉與策略撰寫的經驗,若有需求,歡迎與VMware業務團隊以及代理、經銷商進行討論。

就寫到這邊。基本上,企業等級、功能完整的『應用遞送方案』,除了基本的負載平衡、健康檢查等等功能之外,必定能有工具能滿足客戶網站維運的進階需求。希望藉由本系列文的介紹,讓大家進一步認識NSX Advanced Load Balancer在這方面的強大能力,並在日常的網站管理作業上取得實際效益。