狀況描述:
Linux Server一台,主要做提供影像串流Server
已有Domain: xxx.com.tw一個
光世代100M/40M 兩條(假設有兩個固定IP)
因為串流Server需要較大的頻寬,但是機器只有一台(有多網卡) 是否有硬體或是軟體方式可以合併兩條光世代
讓使用者 request xxx.com.tw/xxx.m3u8 串流時,自動分配給這兩條光世代
QNO的雙WAN機種是不是就是解決這樣的需求的?是把兩個固定IP設定在QNO上?
然後DNS那邊又要如何設定呢?
Linux上的路由也是要設定對吧...
安裝 DNS Server(bind9)自管 Domain Name
對外正解檔,www 用兩行,指向兩個不同 IP
舉例:
www in A 11.22.33.44
www in A 55.66.77.88
或者
video in A 11.22.33.44 之類的
反正就是同一個主機名稱,指定多個 A紀錄,指向不同 IP
這樣當外部和你的 DNS Server 查詢正解資料時,會輪流回報那兩個 IP,而達到不同訪問者來瀏覽,會從不同 IP 進入,也就是分流效果。
可用 nslookup 之類的指令,對自己的 DNS Server 查詢主機域名正解,確認效果,是會輪流跳號的。
這方法是最簡單的,不過效果也最差,因為 DNS 有快取機制,別台 DNS Server,比如 8.8.8.8 或 168.95.1.1 之類的,會有 1~24H 不同時間的快取壽命,當那些 DNS Serer 和你的伺服器查詢過正解檔後,就會快取,之後都不會再來詢問。也就不會跳號了。
要較精準輪流跳 IP,建議是從網頁程式碼下手
比方 PHP 之類的,給視頻連結的主機網址部份,用變數取代
設計一段程式碼,使那個連結網址變數,當每次網頁載入時,會輪流套用不同 IP。
或更進階一點,先查詢分析各線路的負載情況,把網址變數導引到負載較輕的線路 IP上。
*******************************
100M/40M ,上傳只有 40M bps(約 5MB/s)
用於視頻主機,其實服務不了多少在線播放人次
但是 100M/100M 經濟型沒有固定 IP,或者地區因素無法申請。
假設可以申請,且價錢接近,是上傳愈大愈好,其它分流負載的線路,有沒有固定IP無所謂。
因為固定 IP 只須一個就行了,網頁www主機需固定 IP,其餘 圖床、視頻主機......不必固定IP也行。透過網頁程式碼,當網頁在貼圖和貼視頻的時候,多媒體的連結都用變數,自動分配到其它線路 IP。
那些分流線路的 IP不需要固定,可以用 Linux 指令查詢後(排程每 24小時查詢一次),寫在暫存檔,讓網頁程式碼去讀取那個暫存檔,取得其餘分流線路的 IP,再用亂數輪流跳,或者進階一點先查詢哪一條負載較輕,跳那一條。
PPPoE 浮動 IP 撥接,好像是 72H 會強制更換 IP 一次。
查詢負載也可以用 Linux 的指令。
範例:
# 定義變數,www 主機的 IP 和監聽埠號
# (或透過 ifconfig 查特定網卡界面,分析結果自動取得)
www_ip="11.22.33.44:80"
# 計算連線數
wwwSession=`netstat -tn | grep "$www_ip" | wc -l`
# 計算連線人數 (同一 IP 來源有可能產生多個連線,去掉重複,得到真實線上人數)
wwwRealPerson=`netstat -tn | grep "$www_ip" | awk '{print $5}' | cut -d ':' -f 1 | sort | uniq | wc -l`
可以設兩組,再去比較哪一組人數少,即是負載較輕的那條。
寫個簡易的 shell script 類似這樣子,crond 排程每分鐘運行一次,把結果寫入到暫存檔,然後 PHP 就可以去讀取那個暫存檔,了解目前那條線路負載較輕,再應用到連結網址的變數結果。
分析線路的部份,用 PHP 去做會比較複雜,透過 Linux 本身指令去做一些分析,cron 排程每固定時間運行腳本,再把結果存成暫存檔,供 PHP 取用資料,這樣會比較簡單一點。
暫存檔最佳位置是 /dev/shm 底下(RamDisk),因為寫入太頻繁,放 RAM 比較不會去傷到 SSD 寫入壽命,若有目錄讀取問題,可以在 www 裡面開個目錄,軟連結過去。
內文搜尋
X




























































































