如何使用 Application Request Routing,從 OSI Layer 7 Application Layer 上進行 Failover,達成 IIS Web Farm 的高可用性。相較於 NLB 是作用在伺服器 Crash 才進行 Failover,ARR 可以藉由 Http Request、Http Response Status 來判斷是否進行 Failover 能夠達到更完善的使用者服務不中斷體驗。
說明
在文件中,ARR 被定位為 application layer (layer 7) load balancer,其作為 IIS 的 Extensions,在安裝 ARR 的同時,會自動安裝 URL Rewirte 以及 Web Farm Framework Extensions。
ARR 除了 Load Balancer 的作用外,更提供了監督 (Monitoring) 以及紀錄 (Logging ) 的作用,使管理大型 Web Farm 架構更為容易。而如果真的要說 ARR 的缺點,就是不同於 DNS Round Robin 或者 NLB 的部署方式,ARR 會需要額外一台伺服器作為前台 (Appliance) 接收與回應 Requests,此外其強大的功能背後也拉高了使用的知識門檻。
在 ARR 架構下,雖然可以為 Web Farm 提供 Failover,但如果 ARR Appliance 發生問題時,縱使 Web Farm 都是良好運行的,所有的服務都會中斷。這時候如果結合 NLB,將 ARR Appliance 也作為支援 Failover 的架構,如此一來就可以達成最為全面的 High Availability 架構,享受偵測網站狀態即時 Failover 以及分散來源流量至各 Web Farm 的強大功能。只是伺服器從 Web Farm 外,另外需要在加上 ARR 以及其 Failover Server,最少需要四台伺服器的架構。
參考資料
Achieving High Availability and Scalability - ARR and NLB | learn.microsoft
相關連結
IIS Work With Application Request Routing, ARR
IIS Work With Network Load Balancing, NLB