作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。
在上篇網誌簡單討論了Datascript的概念以及相關的資訊鏈結,但顯然看實際例子會更有感覺。本篇我想以圖例討論怎麼撰寫Datascript,並且直接看相關的使用情境。
Datascript要配置到Virtual Service內才能使用,管理者可以先由Template – Scripts – Datascripts內寫好,再於Virtual Service的Policies – Datascript介面內加入;或直接在上述介面內選擇要Create Datascript寫一個新的。
在UI介面內Datascript有分成三個部分:General / Events / Rate Limiters。首先在General部分,一定會有的是這個Datascript的名字。其次,如果我們會在這個Datascript內呼叫到NSX Advanced Load Balancer的物件,則這個物件必須在這邊明確地先加入。
舉例來說,上圖的這個Datascript內,我們要依據URL判斷,來將用戶的Request轉送到不同的後端Server Pools。此時這些Server Pools就是需要的『物件』,必須先加入。這裡有哪些物件當然取決於實際上Datascript要做的事,可能是上圖的Pool / Pool Group,或是一個預先建立的IP群組或字串群組,也可能是不同的憑證 (Certificates) 或不同的加密機制選擇 (SSL/TLS Profiles) 等等。只要後續的Script會呼叫到這個物件,就要在General內先加入進去。
第二部分叫做Events。這邊首先要選擇這個Datascript要被觸發的時間點,然後將觸發時要對應執行的Script填入:
在https://avinetworks.com/docs/latest/datascript-events/ 鏈結有各種不同Event的說明,比如說在收到一個HTTP Request時我們要進行URL的檢查與改寫,那此時就要選擇HTTP Request Event。一般來說最常用的當然是HTTP Request / HTTP Response這兩種,但上圖內大家可以看到Datascript的運用不僅止於HTTP相關事件,還能利用在各種不同的場景,就依據實際的需求了。
接著,真正要運作的Script就可以填入到選擇事件下面的欄位像下面這樣:
基本上通常寫到這邊按Save就完成了。下面第三部分還有一個Rate Limiter是用來在連線數目過高時執行,一般來說較為少用就不多談。
Datascript的輸入方式如上面討論,接下來就舉幾個例子來討論。第一個例子就如同上面貼圖內的釋例,管理者在此的需求是
- 在HTTP Request內,收到的path路徑是以 /aaa/ 開頭時,要轉送到後面的aaa-prod-pool內。同時,將路徑部分移除(僅剩 / ),然後將HTTP的Server Timeout設為30秒
- 同上,如果收到的path路徑是以 /bbb/ 開頭,要轉送到後面的bbb-prod-pool內。同時,將路徑部分移除(僅剩 / ),然後將HTTP的Server Timeout設為18秒
下面就能做到上述要求的Script做簡單的解釋:
這裡大家可能會問,與前面網誌討論的Policies相比,上面這個要求看來應該也可以用HTTP Request Policy內的Rewrite-URL與Content-Switch達成啊,為什麼一定要寫程式?但這邊客戶要求的『設定HTTP Server Timeout』功能在UI Policy介面就沒有了,但在Datascript內可以透過呼叫avi.http.set_server_timeout函式達成。這也就是我們討論為什麼有些情況非用Datascript不可的原因之一。
再一個例子。這裡客戶的需求是
- 在HTTP Request內,如果收到的path路徑內包含特殊字串(如下圖的aaaaa),由於應用改動,必須要更動為另一個指定字串(如下圖的bbbbb)
- 上面的字串在應用設計時,可能出現於path內的不同目錄位址,不一定在path的最前面或最後面。比如說,可能是www.acme.com/aaaaa/index.htm,也可能是www.acme.com/document/aaaaa/notes。
這個例子比較麻煩的地方在於要更動的字串『不一定在path的哪裏』,因此在Policy的UI介面內很難寫清楚。但在Datascript內要做字串比對反而是很單純的,如下圖所示:
這裡舉的兩個Datascripts都很簡單,但也都是網站管理員常需要使用到的功能,就簡單與大家討論。實務上客戶使用的Datascript當然可能很複雜也可運用在許多不同的場景,各位有興趣的話,在 https://github.com/vmware/nsx-alb-datascript-samples-library 內有一大堆在不同全球客戶實際使用的範例可供參考。
下篇網誌是本系列的最後一篇,我會以問答的方式來討論在說明NSX ALB Policies / Datascripts常被詢問的相關問題。
Comments
0 Comments have been added so far