天天看點

【CDN 最佳實踐】CDN通路異常排查思路

當客戶使用 cdn 加速站點通路後,用戶端的請求将首先發送到 cdn 的 l1 節點,再通過 l1 -> l2 -> 源站的網絡路徑回源擷取資源。是以如果通路過程中出現問題就可能涉及到多級網絡鍊路的問題。如何盡快定位并解決問題就成為疑難問題,本文将根據系統介紹如何定位 cdn 資源無法通路的問題點以及處理的思路。

當某個站點的資源 url 通路出現異常時首先需要檢視的即是對應的域名是否有正确配置解析到 cdn 上。如圖 1 所示即是 cdn 加速域名的基本配置截圖,從圖中我們可以檢視到該加速域名對應的 cname 域名、源站設定等設定。其中需要特别注意的是:

源站設定的位址或者端口是否正确。 cdn 作為通路鍊路中間的 proxy ,真實的資料在沒有緩存的情況下是仍然需要回源擷取通路的資料的,是以使用者需要保證 cdn 節點通過源站設定和回源 host 設定可以正确的擷取得到資源内容。

【CDN 最佳實踐】CDN通路異常排查思路

                                                                        圖 1. cdn 域名配置示意圖

【CDN 最佳實踐】CDN通路異常排查思路

                                                                        圖 2. cdn 域名解析示意圖

在确定 cdn 解析配置正确後仍然通路異常那麼我就需要按照 cdn 的通路鍊路來逐項排查。首先我們需要确定的即是通路異常的情況是全局現象還是局部現象的話,如果是全局情況的話一般問題出現在 cdn 本身的設定以及源站的設定上。可以按照如下的邏輯逐條排查:

2、在 http 和 https 都出現問題時我們需要首先檢視 cdn 的源站是否正常。使用者可以通過綁定 host 測試源站的響應情況。由于 cdn 僅是中間的代理伺服器,當 cdn 沒有緩存需要回源時就會回到源站通路,是以源站通路正常是 cdn 可以通路的條件。對于 windows 系統可以通過 c:windowssystem32driversetchosts 檔案配置 host 綁定,而 mac 和 linux 系統則都可以通過 /etc/hosts 檔案進行修改。如果這時測試通路異常就需要使用者首先排查源站的原因,如果源站響應正常可以轉 3。

【CDN 最佳實踐】CDN通路異常排查思路

                                                                        圖 3. cdn 沙箱狀态示意圖

4.2. 請核對 cdn 傳回的狀态碼是否是 504,504 錯誤一般為 cdn 回源到源站逾時導緻的。cdn 回源有嚴格的逾時時間(四層 tcp 是 10 秒,七層http / https是 30 秒),當超過該時間時即使後續源站響應正常也是會傳回 504 的。是以建議使用 cdn 的站點都做動靜分離改造,因為部分動态資源可能出現 30 秒仍然無法響應的。

<a href="https://help.aliyun.com/document_detail/27135.html?spm=5176.doc27134.6.584.1htixk">referer 防盜鍊功能介紹</a>

<a href="https://help.aliyun.com/document_detail/27138.html?spm=5176.doc27135.6.585.1i3xsa">鑒權功能介紹</a>

4.4. 請核對 cdn 傳回的狀态碼是否是 404 。在保證源站正常時一般是由于cdn 的源站位址和回源 host 的設定導緻回源無法擷取資源内容是以報了 404 的錯誤。建議您可以參考下上述第一部分的第二點内容。

由于 cdn 僅是縮短用戶端到源站的營運商網絡鍊路,但是仍然無法避免需要從用戶端通路到 cdn l1 節點中間通過營運商網絡通路。是以用戶端通路異常仍然是可能受該段鍊路的波動所影響。建議遇到此類問題可以先收集以下資訊:

   1)具體通路異常的 url;

   2)通路 cdn 的節點 ip,您可以通過 ping 加速域名得到;

   3)用戶端通路的報錯資訊,請包括 general、request、response 頭資訊,您可以通過浏覽器中的審查元素中的 network 标簽頁中檢視到;

   5)用戶端 ping / mtr 的測試結果。

擷取上述資訊後可以按照如下的思路進行排查:

可以根據上述第四條中擷取得到的用戶端的 local dns 和 ip 是否是屬于同一地域的同一營運商的,因為 cdn 的節點排程是根據 local dns 進行排程的,如果客戶配置的 local dns 與本地實際的用戶端營運商不相比對就會導緻 cdn 排程的節點異常導緻鍊路出現問題的。建議使用 cdn 的用戶端可以使用自動擷取的 dns 伺服器。如果确認 local dns 和 ip 設定正确的轉 2 。

請檢視上述第二條中的資訊是否與用戶端local dns 對應的營運商比對,另外地理位置較為接近,如果不接近的話建議可以通過工單回報給售後工程師進行處理。如果确認正常請轉

請檢視上述第五條中的資訊核對用戶端到 cdn 該節點通路是否存在丢包的情況,并且可以 mtr 的測試結果檢視到具體丢包的節點,如果這段營運商鍊路出現丢包的話建議可以聯系當地的營運商溝通該丢包情況。另外根據 cdn 的排程原理可以臨時修改用戶端的 local dns 為一些公共的 dns 伺服器(可以考慮修改為 223.5.5.5 或者 223.6.6.6 ),使用别的 cdn 節點以及其對應的鍊路臨時恢複業務。

繼續閱讀