[Azure] 使用Front Door Service建立一個具有負載平衡及最加流量管理的前端主機服務

在前篇文章[Azure] 使用流量管理員設定檔,進行網站不同地區的分流及設定優先權中,可以透過流量管理員設定檔作網站流量的管理與負載平衡設定
而在2018年9月24日,微軟公開了一項Front Door Service的服務,除了將原本流量管理員設定檔的功能搬過來使用外,還增加了很多實用的功能,例如網站快取、壓縮以及更高的安全性管理等等的項目

本篇文章中,會先針對如何建立一個基本的Front Door Service,達到網站流量管理以及負載平衡的效果作說明

Front Door Service的架構圖如下圖所示從這張架構圖可以看得出來,Front Door Service可以作為最前端面對使用者的服務窗口,並透過設定的方式,連入後端的服務集區並達到負載平衡與流量管理的效果

在Azure上建立一個新的Front Door Service之前,我們必須先準備好不同的網站,這樣才能用來作為後端集區主機與服務的設定
我在Azure上,建立了三個WebApp的服務,分別位在美國、東亞以及歐洲

接下來,就可以開始建立一個全新的Front Door Service了

1.在Azure上,建立一個Front Door Servive的新服務

2.在建立Front Door Service的動作中,第一步就是建立一個前端主機,這個前端主機是屬於全球服務,所以會在全球的Azure機房中提供對應的服務與功能,而建立的時候必須給予一個唯一的名稱這裡有一個選項,"工作階段親和性"主要的功能,就是會在瀏覽者端的電腦中建立一個Cookies,以確保使用者在每次連入的主機都會是同一台主機。
如果在開發系統的時候,有把Session的處理放在State Server或是其他地方的話,這個功能就不一定需要啟用它

3.建立Front Door Service的第二步,就是新增後端集區的項目,在新增後端集區的項目中,我建立一個新的集區,並在這個集區中將最一開始提到的三個WebApp加入至集區之中在後端集區的主機設定裡,我將優先順序都設定為1,代表讓Front Door Service自行透過距離的判斷,讓使用者可以連入到最近的主機上。若是有指定後端主機的順序與權數,那麼當瀏覽者連到後端主機的時候,就會依據順序與權數的大小而瀏覽到不同的WebApp了

而在新增後端主機的選項中,也不是只有WebApp可以選擇,除了WebApp之外,也可以選擇儲存體以及自訂主機的項目。若是希望這個Front Door Service可以作為自己機房主機的負載平衡服務器,在自訂主機的選項中,可以輸入要連入的主機IP或是網址,不是一定要Azure上提供的服務

負載平衡的機制中,有一個最重要的項目,就是健康狀態的探查,負載平衡的機器可以依據探查的結果決定是否要停用這個後端主機,Front Door Service也有提供這樣的探查功能,只要在後端集區設定中就可以看到要使用HTTP或是HTTPS的方式進行探查,間隔時間要多久

4.建立Front Door Service的最後一步,就是中間的路由規則設定,在路由規則中,必須設定哪一個前端主機對應到哪一個後端集區。所以意謂著若是有很多前端主機與很多的後端集區,也無需像流量管理員設定檔一樣要建立很多個設定檔,在一個Front Door Service就可以完成所有的路由管理。在這裡,我新增一個 [FrontDoorRoute] 的路由規則,將 [maduka.azurefd.net] 的前端主機與剛建立好的後端集區 [WebCollection] 作設定,而接受的通訊協定則是HTTP與HTTPS都可以接受

在 [進階] 的設定中,轉送通訊協定可以比對前端主機接受到的協對與後端集區是否一致,又或是只限HTTP或是HTTPS一種。
而 [快取] 的設定,則是可以啟用 [快取所有不重複的URL] 以及 [忽略查詢字串]

在Front Door Service中的快取設定
[忽略查詢字串] 的設定,會將網址後面帶有參數的檔案視作是同一份快取,下面的例子會在快取中僅保留一份

https://maduka.azurefd.net/Picture.jpg
https://maduka.azurefd.net/Picture.jpg?datetime=20181020

[快取所有不重複的URL] 則是會針對不同參數作各別快取,以上述的例子中,在快取中保留的檔案則會是有兩個

 而在進階的設定中也可以啟用是否要進行動態壓縮

不是所有格式的檔案都可以進行壓縮,下面網址有提供了可以支援壓縮的檔案格式
Caching with Azure Front Door Service

5.建立完成後,點選進入Front Door Service的網址,可以看到已經可以連入到站台了,離我的電腦最近的是東亞地區的主機,所以可以看到主機的網址呈現是東亞區的網址 

6.Front Door Service也有支援自訂網域轉送的功能,我先在DNS的設定中,增加一筆CNAME的資料,讓我自己的網域設定對應到Front Door Service的前端主機網址

接著在Front Door Service的項目中,點選 [Front Door設計工具] ,並在前端主機中增加一筆新的項目,此時就可以在 [自訂主機名稱] 的欄位中加入對應到自己網域的名稱

增加自訂主機時,Front Door Service會去檢查DNS的對應是否已經有建立好,所以必須先將DNS作好CNAME的對應再來新增前端主機

7.新增了前端主機還不夠,因為若是沒有設定路由規則,新設定的自訂網域則不會往後端集區作轉送的動作,所以必須再新增一筆路由規則,而這筆路由規則的內容,就是將前端主機中的自訂網域設定轉送到後端集區中,在這個新增的路由規則裡,我將前端主機 [door.maduka.idv.tw] 對應到後端集區 [WebCollection] 上 

這是設定完成的Front Door設計工具圖,前端主機有兩個項目,透過兩個不同的路由規則連入到同一個後端集區中

此時再連到剛剛設定好的自訂網域網址,已經可以正確的連到主機了

Front Door Service的設定與流量管理員設定檔比起來更為直覺使用,也加入了原本流量管理員設定檔中沒有提供的Layer 7的功能與服務,如快取與檔案壓縮等等的項目,在價格上也比起流量管理員設定檔+CDN還要來得更便宜。雖然目前Front Door Service還在Preview的階段,但是有興趣或是有需要的人也可以開始嘗試這項服務並套用到測試以及正式環境中

參考資料:
Announcing public preview of Azure Front Door Services
Azure Front Door Service (預覽)
Front Door 的應用程式層安全性
健康狀態探查
使用 Azure Front Door Service 進行快取

在官方文件Front Door 的應用程式層安全性中有提到,Front Door Service有提供 [應用程式保護]、 [自訂存取控制規則]、[Azure 受控規則]、[速率限制]、[集中式保護原則] 等等的安全性設定
不過這些設定僅支援透過REST API、PowerShell 或 CLI 來建立及部署,正式服務推出後將可以在Portal網站上進行設定