資安

【CDN 常見問題】CDN 接入配置及常見問題

作者:燁爍

CDN 順利接入線上系統的域名是每個客戶頭疼的問題,本文檔通過詳述 CDN 接入配置各步驟配置以及每部設置常遇到的疑惑點進行解惑,讓客戶可以將順利遷移至 CDN 提供加速服務。

產品文檔參考:CDN開通產品文檔

一、配置流程及概念詳解

在正常開通 CDN 服務後即可進入控制檯使用,按照產品文檔流程,我們可以依次執行“添加加速域名”->“配置 CNAME 解析”兩個步驟進行接入。下面我們就依次詳述兩個過程。

在點擊“添加域名”按鈕後控制檯將進入詳細加速域名的配置頁面,如圖1所示。其中包括多項影響 CDN 使用情況的配置項,因此這些設置對於後續的 CDN 使用至關重要。下面我們隊每項配置詳細說明。
image.png

圖 1. CDN 配置加速域名示意圖

1)加速域名:表示該域名即為 CDN 的加速域名,也就是說真正在業務系統中提供給線上客戶使用的域名,後續所有需要 CDN 加速訪問的資源即通過該域名對外提供服務。而不能使用一個“假想域名”配置。同時這裡支持泛域名加速,如果用戶有多個子域名源站為統一服務器 IP 希望能夠同時設置時可以配置類似於 *.aliyun.com 的域名,這樣即可對 aliyun.com 下的所有的二級域名提供加速服務。更多泛域名注意事項請參考:CDN泛域名注意事項
“假想域名”。常有客戶真正提供服務的域名是 www.aliyun.com,但是在這裡添加的加速域名卻是 cdn.aliyun.com ,那麼後續業務系統中繼續使用 www.aliyun.com 域名將不會起到 CDN 加速效果。
泛域名範圍。泛域名是有嚴格的範圍限定的。舉例來說,當配置加速域名為 .aliyun.com 時,該加速域名對應的是 aliyun.com 主域名下的所有二級域名。因此即該域名既不能給 aliyun.com 主域名提供服務,也不能給類似於 test2.test1.aliyun.com 這樣的三級域名提供服務的。因此使用域名與該加速域名不相匹配是需要在創建對應的加速域名的。例如 aliyun.com 只可以設置主域名為加速域名,而test2.test1.aliyun.com 可以使用 .test1.aliyun.com 。

2)業務類型 。現在CDN提供圖片小文件、大文件下載、視音頻點播、直播流媒體、移動加速和全站加速幾種業務類型。業務類型一經設置將無法修改。用戶可以根據自己的主要加速的資源和業務場景選擇合適的業務類型。很多用戶對自己需要選擇的業務類型產生疑慮,這裡對幾種業務類型的區別做詳細描述。
首先 全站加速 即為動態加速,正常CDN主要通過緩存機制加速靜態資源的GET請求,而對於動態請求CDN是不做加速的,這就導致對於動態站點或者大量POST請求的站點無法使用CDN,而全站加速即是針對於這類站點提供服務,其通過最優鏈路算法及協議層優化動態請求回源鏈路,實現快速回源獲取最新數據。
直播流媒體 表示該域名用來做直播業務,其接受rtmp協議的推流到視頻中心,並提供過rtmp、flv和hls幾種協議分別提供在線播放的功能,該業務類型除了常規CDN支持的http協議外還支持rtmp直播流協議。
移動加速 是CDN推出的針對於移動應用的動靜態全網加速產品,其也可以同時實現動靜資源加速,相比於全站加速來講本業務類型主要應用於Android或者IOS的APP上,並且其需要對APP做一定的改造以集成移動加速的SDK。
剩下的三種業務類型( 圖片小文件、大文件下載、視音頻點播 )是很多客戶困惑的點。這三種業務類型均是針對於靜態資源的GET請求加速,這三種業務類型均可以對所有的靜態文件實現加速功能(並不是圖片小文件業務類型僅加速圖片,其同樣可以加速大文件或者視頻;同時圖片小文件以及大文件下載也可以使用視音頻的拖拽播放功能),並且其緩存規則也是完全一致的;這三種業務類型主要CDN針對於不同類型的文件做了不同的TCP協議棧的優化策略。因此用戶結合自己的業務場景的資源進行選擇即可。如果主要資源為圖片文件、樣式文件、js文件等可以使用圖片小文件類型、如果主要資源是apk包、程序安裝文件等可以選擇大文件下載類型,而如果主要資源是視頻資源提供在線點播播放的話則可以使用視音頻點播類型。

3)源站類型和源站地址 :表示CDN回源到源站服務器的類型及其地址。現在支持IP、源站域名、OSS源站、直播中心服務器幾種類型。下面我們詳細對幾種類型進行詳細描述。
IP,顧名思義即是源站服務器的IP。這裡特別需要注意的是CDN的源站不管是在阿里雲上的ECS、SLB等服務、其他的雲服務提供商的服務還是IDC機房的物理機,其回源都是走的公網鏈路回源的。因此這裡填寫的IP必須是公網IP,否則將導致CDN回源出現5XX的錯誤。同時這裡是可以設置源站為IP的,並且可以根據該IP對應服務器能夠承載的壓力設置其優先級。關於多源優先級的說明請參考多源優先級設置。這裡需要特別注意的一點是當CDN設置為多源時,用戶是需要自行保證每臺服務器上對應的資源均是完整並且同步的。常有客戶誤解這裡的多源表示我在主服務器上查找某資源發現不存在返回404的錯誤,然後CDN會自動去備服務器上查找該資源,CDN是不會進行該操作的。只要某一條服務器四層健康檢查通過返回任何的狀態碼(2XX、3XX、4XX或者5XX)都會直接返回給客戶端的。
域名,表示解析在源站服務器上的域名。其在CDN上的作用是會將該域名解析為IP,然後按照與上述的IP回源一致到該服務器上獲取資源。因此域名其實與IP基本類似,設置為域名的場景主要是用戶的源站服務器IP經常會發生變動,而為了避免源站服務器IP變動導致CDN回源異常可以這裡設置為域名,這樣用戶僅需要保證該域名可以正常解析即可,並不需要再修改CDN的配置。另外這裡的域名僅僅是用來解析成IP的,源站服務器上如果有多個站點需要哪個站點提供服務並不是根據該設置決定的,而是根據回源host設置決定的。
OSS域名,CDN加速OSS是常見的使用場景,其使用方法及常見問題請參考【 CDN 最佳實踐】CDN 加速 OSS 常見問題及處理思路。如果需要回源到本賬號中的OSS可以這裡直接選擇對應bucket的公網域名即可。但是如果需要回源到其他賬號的bucket中的話是需要設置源站類型為域名,然後自行填寫該bucket的公網域名。同時請注意OSS域名類型是不支持多源設置的。
最後一種直播中心服務器是當選擇直播流媒體業務類型系統自動配置的,並不需要用戶自己配置。
L1和L2節點網絡。CDN的節點是分兩層架構的(CDN架構請參考CDN基礎架構),其中L1是靠近客戶端的,會根據客戶端的local dns分配就近的同一運營商的節點,因此L1節點是區分具體運營商的,而L2是靠近源站服務器端的節點,為了保證CDN回源不會受到網絡隔離導致回源異常,因此CDN的L2的節點均是BGP網絡類型的,用戶上述配置的源站服務器是不需要擔心自己的服務器是單線服務器導致CDN回源異常的。
健康檢查。在將服務器IP加在CDN上後,CDN是會定期做健康檢查,主要包括四層的網絡監察,因此用戶的源站服務器日誌可能會記錄到CDN的健康檢查的日誌的。當設置為多源回源時當某臺服務器健康檢查失敗即暫時不會回源到該服務器,而選擇其他的服務器回源,避免由於源站單臺服務器異常導致線上異常。

4)端口 :表示CDN回源時與源站的哪個端口獲取數據。CDN支持的回源端口包括80和443,分別對應HTTP協議和HTTPS協議。這裡如果設置為443端口時用戶是需要保證源站服務器對應端口的server是配置好SSL證書的。

5)加速區域 :對於L3以上的客戶是可以選擇CDN的海外加速的,客戶是可以根據自己的服務對象選擇對應的CDN的加速區域,現在可以選擇中國大陸、全球加速和港澳臺及海外三種類型。如果這裡選擇的是中國大陸,那麼該域名的調度節點是僅有中國大陸內的L1和L2節點。那麼這個時候海外的客戶也是會調度到大陸的節點,其訪問就有可能受國際鏈路波動影響導致訪問異常的。

二、配置CNAME解析

在配置完成CDN加速域名後用戶即可得到對應的CNAME域名,如圖2所示即是對應的CNAME域名。用戶接下來即可配置加速域名對應的CNAME解析後即可。
image.png

圖 2. CDN CNAME域名示意圖

詳細的CNAME解析設置請參考CDN域名CNAME解析設置,這裡需要特別注意的是主機記錄必須與CDN添加的加速域名一致(泛域名需滿足統一級別)。
DNS解析限制同一個主機記錄只能夠保留一個A記錄或者CNAME記錄,否則添加將會導致衝突。因此想要添加CDN是需要刪除之前解析到源站服務器的A記錄並添加對應的CNAME記錄,等TTL時間後才可以生效的。
為了保證切換CDN後不影響業務,建議先通過綁定hosts的方式先本地測試添加CDN後正常再正式修改DNS記錄。不同系統有不同綁定hosts的方法(例如Mac、linux系統中可以使用/etc/hosts文件設置)。具體設置方法步驟為:

  • ping CDN提供的CNAME地址得到CDN節點的IP,如圖3所示。
    image.png

圖 3. CDN 節點IP獲取示意圖

  • 修改/etc/hosts文件將該域名設置解析到該IP上,如圖4所示。
    image.png

圖 4. 綁定hosts配置示意圖

  • 然後就可以在瀏覽器中實際訪問測試是否正常。

三、驗證CDN生效情況

在配置完成dns解析後可以通過多種方法驗證CDN是否生效。包括以下三種方法:

  • 通過ping你所添加的加速域名,如果被轉向.kunlun*.com的域名,即表示CDN功能已生效,如圖5所示。
    image.png

圖 5. 通過ping驗證解析生效示意圖

  • 通過 nslookup或dig命令,可以查看相應的加速域名訪問CDN節點的IP和延時丟包等基本信息。用戶可以根據解析出來的IP在CDN的控制檯上的IP檢測工具查看是否為CDN節點的IP,是的話就說明CDN已生效:
    image.png

圖 6. CDN檢查IP是否為CDN節點IP示意圖

  • 用戶也可以獲取對應加速域名的資源的response頭查看是否有CDN加速對應的節點信息來判斷CDN是否生效,如圖7所示,如果response頭中包括Via、X-Cache等頭就表明其已經CDN加速。
    image.png

圖 7. CDN查看response頭示意圖

Leave a Reply

Your email address will not be published. Required fields are marked *