iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0

前言

前面介紹了許多iNODE NINJA的個別功能與概念,接下來我們要來模擬一個場景,從頭到尾實作一次建立CDN的過程,並在最後說明我們是如何規劃機器設備的架構。

實作與應用

1.場景模擬

今天假設我們客戶的主要業務區域在中國,其次位於東南亞地區。
我們將線路分成中國境內與中國境外,將市場區分開來,而且還可以做更靈活的成本控制。

2.節點資源部署規劃

由於考慮到客戶可能會需要使用免備案的域名,因此我們預計將節點佈置在香港和新加坡,並使用回源政策和WAF來做限制,將香港的節點給中國用戶做使用;新加坡的節點則給東南亞的用戶使用。我們的架構會是一個站點對應兩個SLB再共用一個EDGE的模式。使用AWS開設三台EC2,在香港配置兩台並放在同個VPC裡面,給SLB和EDGE註冊使用;另一台配置在新加坡給SLB註冊,並使用品質比較好的線路連接到香港的EDGE來確保延遲問題。
https://ithelp.ithome.com.tw/upload/images/20230929/20160839NINOXTf6fw.png

3.SLB管理&線路選擇

在完成節點及線路的規劃以後,就可以依照第7~9篇(自建CDN(一): 前置作業/自建CDN(二):註冊節點/自建CDN(三):建立Site)的內容去配置節點。需要注意的是,SLB的服務地址預設會是該機器的私有IP,但是因為有對外解析的需求,因此要記得去修改「SLB管理」的「服務地址」欄位,將其改成對外公有IP。
代理協議的部分則保持預設開啟。而線路部分根據之前的規劃,開在香港的SLB選擇境內而新加坡的選擇境外,如下圖所示。至於SourceIpPool的部分因為是模擬測試,不會用到那麼多連接數所以留空,是否添加額外的IP則由各位根據需求自行決定。
https://ithelp.ithome.com.tw/upload/images/20230929/20160839TzxTn2Img3.png

4.權限管理

節點建置完成以後,就可以開始建立域名來做測試。在這之前如果內部有協作的需要,可以先到「角色管理」與「用戶管理」的部分去創建角色與新增用戶,給內部工程師使用,後續在整體CDN架構都部署完成準備給客戶使用時,可以再決定要開放哪些權限給客戶。詳情可以參考第22篇(自建CDN平台介面實作(六):權限管理)的內容。

5.域名分類

在配置域名時,可以依據重要性、業務地區等、服務類型等分類成不同的專案來控管風險,除了能夠更有效的去管理大量域名之外,在遭受DDoS攻擊時還能夠分流和隔離攻擊流量,並快速識別被攻擊的域名,迅速採取應對措施,保護關鍵的主域名能夠正常運作。
我們的實作場景是根據客戶的主要業務地區去做域名分類,在「應用配置」分別建立兩個App Profile,設定相對應的Config,例如回源政策、WAF規則、緩存模式等,再到各自的App Profile裡面放置給不同地區使用的域名。
https://ithelp.ithome.com.tw/upload/images/20230929/20160839W1Wq1oldHn.png
(根據地區配置兩個App Profile,並設定相對應的Config)

6.回源政策

規劃完域名分類以後,要來決定回源配置的細節,我們打算設定來自中國的訪問都會指向kuanspace.me,而來自東南亞的國家則是會回源到ivanspace.work這兩個源站,因此要去設定回源政策套用在App Profile上。
回源政策的詳細設定內容可以參考第21篇(自建CDN平台介面實作(五):回源政策)。

7.WAF規則

我們想要限制來訪的國家,在香港地區的App Profile只允許中國用戶訪問,也就是說要Deny來自中國以外的國家訪問;同理,另一個App Profile要Deny東南亞地區以外的國家。因此在WAF規則裡設置兩條Deny動作的規則,「條件-特徵」的來源國家選擇China後再點選反向選擇,就可以Deny中國以外的國家來嚴格限制來訪IP。
此外,我們也可以預先設置客戶常見的黑名單和DDoS常見的攻擊特徵,例如帶有X-Forward-For、或是未帶有Accept-Encoding表頭的流量,在遭受到攻擊時就可以將這些預先配置好的WAF規則套用到App Profile,避免服務受到影響。
詳細的WAF規則配置可以回去參考第17~19篇(自建CDN平台:iNODE NINJA的WAF規則介紹/自建CDN平台介面實作(二):WAF規則-動作測試①/自建CDN平台介面實作(三):WAF規則-動作測試②)

8.其他設定

至於域名物件的其他設置細節,例如特殊端口怎麼設置、緩存怎麼設置等等,大家可以回去翻第11~14篇(建立域名(二):HTTP/HTTPS設定&進階功能介紹①/建立域名(三):進階功能介紹2/建立域名(四):緩存介紹1/建立域名(五):緩存介紹②),上面都有完整的介紹和範例,這裡就不再一一說明。

自建CDN的整體模擬場景就先說到這邊,為了因應客戶可能有需要串接第三方CDN或其他高防IP的需求,所以我們下一篇將會實作用「虛擬SLB」串接其他CDN的情況並說明細節。


上一篇
[Day25]自建CDN平台介面實作(九):SLB② - 虛擬SLB (VSLB)
下一篇
[Day27] iNODE NINJA CDN實作與應用(二)
系列文
10年專業ISP服務商之蛻變 從無到有自建屬於自己的CDN服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言