1、用戶需求
客戶的WEB網站后臺目前只有一臺服務器存在單點的問題,但暫時沒有打算要做成冗余的方式。在與應用開發(fā)團溝通的過程中,應用開發(fā)提到如果網站宕機,不想讓用戶看到該頁無法顯示頁面。希望能夠有一個靜態(tài)頁面,可以提示用戶說網站正在維護。這樣體驗會好一些!
說到這有朋友肯定要噴了,讓用戶再買個服務器做個集群或是SLB配置一個服務器組權重各百分之五十。不就可以解決這個問題了嗎!但每個用戶的需求和建設思路都是不一樣的,作為架構師在充分與用戶溝通理解用戶的需求后,要做的就是幫助用戶去實現(xiàn)這些需求。接下來我就分析一下這個需求該如何實現(xiàn)?希望能給大家一些啟發(fā)!
2、具體實現(xiàn)
實現(xiàn)一個維護的靜態(tài)頁面,可以通過OSS對象存儲設置靜態(tài)頁面。這個一點都不難!這個需求的難點就是在于如何實現(xiàn)判斷機制。當用戶的網站無法訪問時,切換到靜態(tài)頁面。客戶提出是否可以在阿里云CLB上實現(xiàn)。我看了一下目前我們在使用的CLB,沒有可以設置這樣判斷機制的地方。而且CSLB的后端服務器組只能設置為ECS、彈性網卡或者彈性容器實例。更沒有可以設置OSS靜態(tài)頁面的地方。這條路就不通了!我們需要換一個思路,從域名解析上入手。當網站域名解析出現(xiàn)問題無法訪問,切換到備用域名。備用域名可以是指向OSS的靜態(tài)頁面。這個思路可以使用阿里云的GTM全局流量管理來實現(xiàn)。在GTM里可以在主地址池中設置網站的主域名,而將綁定靜態(tài)頁面的域名設置為備用地址池。然后將GTM實例的CNAME設置到主域名的DNS中。
這樣當用戶訪問主域名的時候,會解析到GTM。GTM將流量分發(fā)給主地址池中的主域名。當主域名出現(xiàn)故障的時候,GTM會自動把流量分發(fā)給備用地址池中綁定靜態(tài)頁面的OSS域名。利用GTM的健康檢查機制,當主域名恢復正常后。流量切換回主域名。實現(xiàn)用戶要求的在網站故障時會自動跳轉到一個正在維護的靜態(tài)頁面。而不會直接出現(xiàn)該頁無法顯示的尷尬!
3、總結
這樣一個解決方案是可以利用現(xiàn)有資源和阿里云服務來實現(xiàn)客戶需求的一個思路。當然也可以采用其它的思路。例如,在征得客戶同意的情況下增加一臺低配的ECS服務器來跑靜態(tài)頁面。(1核1G就足夠了)將這臺低頻的服務器放入CLB網站服務器組。權重設置為0,生產服務器設置為100.這樣也基本可以實現(xiàn)用戶的需求。做方案的時候可以給用戶多幾個選擇,讓用戶根據(jù)實際情況自行衡量采用哪種方案。架構師作為輔助提出合理的建議!