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

在Server這段要做Auto-Scale其實是個複雜的程序。如果分析一下相關的流程,可以看出其實有三大部分:

  • 要有監控構件以及明確的指標,來確認什麼條件下需要新增後端機器,或是什麼時候可以移除
  • 當前述的監控指標到達門檻時,透過自動化機制呼叫指定雲平台,要求擴充 / 移除後端機器
  • 當後端機器擴充 / 移除後,更新負載平衡器內對應Pool內的資訊

上面這些事情是否一定要用NSX Advanced Load Balancer來才能做呢?當然不是。在台灣幾個大型客戶在VMware環境內要做Server Auto-Scale時,運作的流程是

  • 由vRealize Operation來監控包含現有Server上的效能指標如CPU負載,或是透過負載平衡方案的plugin取得服務連線數目等資訊。
  • 當相關指標超過指定門檻時,vRealize Operation會呼叫vRealize Orchestrator的Workflow。這個Workflow可透過vRealize Automation已經建立好的Blueprint,直接進行對應需求的機器擴充或是移除
  • 完成後,呼叫負載平衡器加入Server到Pool內。或是更簡單,預先先把相關可能擴充的Server都加到Pool,當新建的Server產出後,負載平衡器健康檢查發現這台Server有回應了,後續連線就開始往新建Server送

所以說真的,Server Auto-Scale本來就不是什麼新東西,而且VMware原有的產品本來就能做得很好了。那NSX Advanced Load Balancer在這邊有什麼不同點呢?

這裡我想要特別跳出來先只談第一項:Avi如何監控服務,並提供明確的指標。Avi有很完善的Alert機制可用來達成此要求,一個簡單的Alert運作流程如下圖:

簡單說明:我們在Avi內可以配置一個Alert (Alert Config),這個Alert被觸動的條件可以是特定預先定義的事件 (Event),或是某個管理者設定的指標 (Metric)。當事件被觸發或是指標的門檻到達時,Alert就會產生,並且會執行此告警內指定的行動 (Alert Action)

在Alert Action內,管理者可以選擇提供告知 (Notifications) 的行動,這邊包含了寄出郵件,紀錄Syslog,或是發送SNMP Trap等。但同時,管理者也可以設定要求執行ControlScript。在Avi內,ControlScript是基於Python的管理者可自訂編程,用來觸發後續想要執行的workflow。

說明這一些,與Server Autoscale有什麼關係呢?

在Avi內,有非常多樣化的Metrics選擇,可以用來檢視應用的連線狀況,以及後端Server的效能與容量。Avi自己是負載平衡器,當然可以看到服務的連線與回應狀態;但同時Avi又能夠由雲平台那邊取得虛機的效能、容量等資訊。這代表管理者可以用多種的指標來配置在什麼狀況下,需要發出告警,進而觸動Auto-Scale的動作。

進一步討論,Avi內可以支持的指標有下列這幾類:

  • Layer 4 指標:網路連線第四層 (TCP/UDP) 的指標資訊,比如說完成連線數、新建連線數、頻寬這些。
  • Layer 7 指標:網路連線第七層 HTTP/S 的指標資訊,比如說平均回應時間、完成回應連線數、SSL連線數這些。
  • 服務引擎指標:服務引擎的 CPU / Memory / 頻寬使用
  • 虛機指標:藉由與雲平台的整合,Avi可以透過 vCenter / AWS CloudWatch,抓到後端虛機的CPU / 網路使用量 / Disk IO 等等

直接舉一個例子,在下圖內設的Alert是對應到名叫npool的這個server pool,如果Server L7的平均完成回應數目已經超過每秒1000次,且持續10秒以上,就要發動告警:

完整Avi Alert支持的指標可由下面網頁參考: https://avinetworks.com/docs/21.1/metrics-list/ 。本篇寫這些的重點是什麼呢?NSX Advanced Load Balancer作為一個與雲平台完整結合的負載平衡方案,非常容易就能取得服務效能是否正常,需不需要擴充的相關資訊。在上面的討論內可以看到,無論是由Virtual Service本身的連線數目,往後端Server的連線資訊,後端Server本身的效能,在Avi內都能取得。此時當相關效能指標超過門檻,Avi即可發出Alert,以

  • 告知管理者服務承載量可能過高。管理者收到告警後可以選擇『手動』進行後端Server擴充
  • 透過客製化的Python程式碼,或是與雲平台的整合,『自動』觸發後續Server擴充動作。

那在下一篇,我們繼續討論Server Auto-Scale的第二段:後端擴充的流程。