iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0

前言

在前一篇我們提到了整個使用的場景概念,並且也設定好既定的線路、接下來我們就要開始介紹前天所寫的「虛擬SLB」搭配「線路」功能的詳細教學部分。

在先前虛擬SLB (VSLB) 篇章部分已經講到其中的原理,就是可以串接其他的CDN或是接入高防IP段,再回到我方的節點實現WAF與回源,這裡我們就一步一步的教大家要怎麼實現透過以iNODE NINJA 建立的SLB+EDGE節點,與VSLB合併進行中國境內境外的線路分組。

至於詳細的步驟,就麻煩大家再回去看第25篇「虛擬SLB」的部分了,詳細實現的方法如下圖 。
https://ithelp.ithome.com.tw/upload/images/20230930/20160839EikCl2qfLO.png
首先我們已經以iNODE NINJA註冊好SLB與EDGE,並且也建好了這兩個組合起來的站點(ithome_site),現在我們要開始建立VSLB的部分。

虛擬SLB管理

點擊左側「虛擬SLB管理」,並點選「創建」,創建一個新的VSLB,主機名稱可以自己取名為自己喜歡且方便管理的,例如我們就取了一個「ninja_vslb_china_oversea」,象徵是給海外用戶用的VSLB。

紀錄類型看要接入的對象的情況,有些CDN只能用A紀錄 (IP) 來接入,有些則是只能用CNAME接入,有些則是兩者都可以接入,這次我們用的第三方CDN是採用CNAME的方式接入的,因此我們就以第二種CNAME接入來作為示範。

在第三方CDN那邊要將回源設定為我們在iNODE NINJA的SLB或是EDGE的IP,由於我們希望流量統一進入我們的SLB再到EDGE進行處理,因此這裡在第三方CDN的回源上填入我們SLB的IP地址。

另外第三方CDN如果可以的話建議開啟Proxy Protocol,經過詢問技術人員,iNODE Ninja支援的是v2版本的,這部分這樣才能夠把最真實的用戶IP傳遞到我們的EDGE上,並且可以透過WAF的IP來源做出對應的動作,否則iNODE NINJA這裡的WAF收到的訪問IP都會是該CDN回源用的網段。

如果不支援倒是也沒關係,一般CDN或高防IP服務商都會將原始進來的IP以X-Forwarded-For或True-Client-IP的方式帶入header並且往下傳,所以還是可以透過header的部分來針對IP特徵做出阻擋,但這樣確實會比起擋IP還要麻煩且不夠直覺,因此有的話還是將它開啟吧!

原則上就是按下「建立虛擬SLB」,取一個你喜歡的主機名稱,以及填入對方CDN給你接入的服務地址 (這裡以CNAME做出示範,如果是其他的CDN或是高防服務給的是A紀錄的IP接入,就將紀錄類型改選A),線路的部分因為是對應中國境外的訪問者要訪問的,因此下方線路就選擇「境外」。
https://ithelp.ithome.com.tw/upload/images/20230930/201608393eF8wYPU2s.png
https://ithelp.ithome.com.tw/upload/images/20230930/20160839pWV8IQ5NwJ.png

站點管理

由於「站點管理」裡面創建站點,只能是全部A紀錄或是CNAME紀錄的SLB或VSLB,但因為我們的那個第三方CDN只能夠使用CNAME接入,因此我們需要回到上面虛擬SLB管理的部分,再多創建一條為了走iNODE NINJA的CNAME紀錄的域名 (這裡我們以ninjacname.2etrial.com作為示範),並且在域名服務商那邊為他設定一條A紀錄指向我們iNODE NINJA的SLB的IP,以及把線路設為境內 (讓中國境內的用戶訪問到這裡),才能夠開始下一步配置站點。
https://ithelp.ithome.com.tw/upload/images/20230930/20160839wr6T5Y5S7p.png
https://ithelp.ithome.com.tw/upload/images/20230930/20160839dpCMR1nyzv.png

接著終於可以開始配置站點了,到左側「站點管理」新增一個站點,紀錄類型選擇CNAME Record,下方節點的部分把那兩個一起拉過去左側。
https://ithelp.ithome.com.tw/upload/images/20230930/20160839DNhpdoNIyW.png

此時就能夠看到我們剛剛新增的站點 [ithome_vslb],右邊的SLB節點可以看到被線路分組在中國境內的ninjacname.2etrial.com,以及另一個分組在中國境外的第三方CDN的CNAME。
https://ithelp.ithome.com.tw/upload/images/20230930/20160839uz6552tXqn.png

這時候只要在新增域名時選擇我們建立的「ithome_vslb」就能夠套用,並且實現線路分組,中國境內就訪問到我們iNODE NINJA建立的CDN節點,中國境外訪問到我們設定的第三方CDN的節點。

實作流程結論

實際效果如下,這部分我們在先前的「虛擬SLB」一文中已經講解過了,這裡就只貼圖不贅述。
https://ithelp.ithome.com.tw/upload/images/20230930/20160839utNaomosls.png
https://ithelp.ithome.com.tw/upload/images/20230930/20160839gMhnnC0yWC.png
https://ithelp.ithome.com.tw/upload/images/20230930/201608390HeFLWR5jZ.png
https://ithelp.ithome.com.tw/upload/images/20230930/20160839kyGlaLQ3rF.png

透過這樣的實作流程,我們成功做出了線路分組,將中國境內與境外的流量成功透過在DNS解析的那一層給切分開來,雖然因為是DNS層級,所以多少會因為當地DNS的情況,可能導致中國會有一兩個地區解析上解析到錯誤的節點,但整體來說幾乎都是正確的。

藉由這樣的功能就能夠實現「我們專精的地區就走我們最強的線路,其餘非主要市場的地區就走便宜低預算的線路」的需求,最大化的發揮作為線路商的優勢和成本的考量控制。

當然,針對SLB、EDGE的機器我們目前都只有設計讓他是可以正常通的情況,畢竟我們也是先求有再求好,下一篇我們會針對這兩台機器的架構做出更深入的探討。

我們預計會考量到如果單一線路外部流量過高的情況要怎麼規劃多條線路,確保機器與Ninja這一端的控制伺服器之間的連線不會因此死掉,以及衡量多種架構的優點與缺點。


上一篇
[Day26] iNODE NINJA CDN實作與應用(一)
下一篇
[Day28] iNODE NINJA設備規劃架構
系列文
10年專業ISP服務商之蛻變 從無到有自建屬於自己的CDN服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言