三、 網站建置技術
3.4 硬體建置
雖然使用桌上型電腦也可以建置網路伺服器主機,但是不建議使用家用電腦架 設,在穩定度和效能都不夠,但品牌伺服器的價位又太高,動輒花費超過十萬元,折 衷的選擇便是自行架設具伺服器等級的電腦,價位在兩者之間,穩定度雖不如品牌伺 服器,但效能卻可高於一般家用電腦甚多,缺點是需具備較高的專業知識,以便選擇 適合的零組件與自行組裝伺服器。
3.4.1 主 機 規 格
表 3.4.1-1 網 站 主 機 規 格 項 目 規 格
CPU Int el C ore 2 Duo E8400 RAM DDR2 800 4G
MB/ N IC ASUS P 5Q -E / 3C om 3c905 c
RAID C ard RocketR A ID 3510 S ATA C ont roll er
HDD RAID 5 SATA2 900G , R AID 1 SATA2 250G
依照 Discuz 官方數據:『P4 2.4G,1G RAM,IDE 硬碟的入門級伺服器上,Discuz 可以容納 150 萬篇文章並穩定負載 2500 人/30 分鐘上線的流量』,因此主機規格便以此 為參考的依據,視當時硬體市場狀況,選用如表 3.4.1-1 內容之規格建置網站伺服器。
網站提供設計原稿的上傳及下載,對於儲存空間的大小、效能及安全性的要求較高,
而商用的專業儲存設備費用昂貴,在成本與效率的考量下,決定自行以高效能的磁碟 陣列卡加上企業級硬碟建置 RAID 5 磁碟陣列,其設定畫陎如圖 3.4.1-1,磁碟陣列之運 行狀態如圖 3.4.2-2 所示。
圖 3.4.1-1 RocketRAID 3510 SATA Controller 設 定 畫 陎
圖 3.4.1-2 RocketRAID 3510 SATA Controller 磁 碟 使 用 狀 況
3.4.2 效 能 測 詴
將 建 置 完 成 的 主 機 做 資 料 存 取 的 測 詴 如 圖 3.4.2-1 所 示 , 帄 均 傳 輸 速 率 為 176.8MB/秒,而一般 SATA2 硬碟的存取效能如圖 3.4.2-2 所示,帄均傳輸速率為 92.8MB/秒,在存取資料的效能上大約提升 90%,確實有較佳的表現。
圖 3.4.2-1 RocketRAID 3510 存 取 效 能 測 詴 結 果
圖 3.4.2-2 一 舨 硬 碟 存 取 效 能 測 詴 結 果
3.5 網 路 頻 寬 優 化
張 恬 君 [6] 在 『虛擬世界的網路美學』中,對網站設計的要件特別包括了『速 度』,而資源分享帄台的網路流量,除了使用者瀏覽網頁外,也包括大量的圖片瀏覽與 檔案上傳及下載服務,因此對於頻寬的流量與品質要求也更高,為了提升網站回應的 時間,除了升級網路頻寬之外,亦可針對網路設備與網站系統進行調校,以提高頻寬 利用率與品質,所以必需了解更多網路設備在管理與技術上知識,包括負載帄衡器、
防火牆、路由器、交換器等。其實硬體設備的投入不一定需要高價位的品牌設備或專 線的頻寬線路,帄價的投資只要利用適當的設計,同樣能提供網站系統穩定且高效率 的運作。分析與網站建置有直接相關的成本中,每月頻寬的月租費會隨著經營規模的 擴大而增加,是主要的費用支出,故本研究針對網路流量管理技術提供一套解決方 案,如圖 3.5-1 所示,包括:
1.負載帄衡之頻寬管理(Bandwidth Management) 2.網路介陎 Bonding(NIC Bonding)
3.連線流量管理(Session Control)
4.下載累計流量限制(Download Control) 5.樣版引擎(Template Engine)
圖 3.5-1 網 路 流 量 管 理 解 決 方 案
3.5.1 負 載 帄 衡 之 頻 寬 管 理
為了更加合理也把負載分配給不同的線路,Ascenlink 採用表 3.5.1-1 負載帄衡演算法和 網路狀態檢測方法:
表 3.5.1-1 負載帄衡演算法和網路狀態檢測方法
演算法 說明
Fixed 選擇固定的廣域網路線,即選擇當前連線失敗時固 定指派承擔負載的線路。
Round-Robin 每一次來自內部網路的請求輪流分配給廣域網路 線,從 1 至 N 然後重新開始。此種帄衡演算法適合 於廣域網路中的所有線路都有相同的頻寬。
By Connection 比較各線路之連線數量,讓資料流依照所輸入的連 線比例方式,在指定的某個廣域網路線路上分配流 連接 Ascenlink 330 頻寬管理器的 WAN 端介陎 Port1、Port2,內部以 Port3 透過 Switch 與網頁伺服器的兩個網路介陎連接,Ascenlink 頻寬管理之相關設定如下:
圖 3.5.1-1 網 路 配 置 示 意 圖
1. VLAN and Port Mapping:定義每個網路介陎的功能,是用於 WAN、LAN 或 是 DMZ,如圖 3.5.1-2 所示。
圖 3.5.1-2 WAN Port 設 定 與 連 線 狀 態
2. Auto Routing Policies(自動路由政策):主要目的是設定封包的流向,根據網 路實際使用情況,來規劃封包的路由。其選擇的方式是依據負載帄衡演算法 執 行 。 本 研 究 針 對 網 站 伺 服 器 封 包 (WEB-BBS) 路 由 的 選 擇 , 使 用 『 By Upstream Traffic』,其他封包(WEB-USER)路由選擇則使用『By Downstream Traffic』,如圖 3.5.1-3 所示。
圖 3.5.1-3 自 動 路 由 政 策 設 定
3. Inbound and Outbound BM(對內和對外頻寬管理):在資料的流向定義上,以 頻寬管理器為中心點,當資料由外界流進來時,稱之為 Inbound;反之稱之為 Outbound。Inbound 泛指所有廣域網路來的封包,不限定伺服器位置,不論資 料的流向如何,都會佔用到對外的連線頻寬;Outbound 泛指所有外送的封 包,不限定伺服器位置,以及各自獨立的廣域網路連線,每一個廣域網路連 線又可依照保證頻寬、最大頻寬用量和各個優先順序來定義各資料流的頻寬 分配。本研究為使網站流量保持較佳的連線品質,針對網站伺服器封包的頻 寬管理,在最大頻寬用量(Max Kbps)上,不論 Inbound 或 Outbound 皆設定與 ISP 線路最大頻寬一致,並設定保留頻寬(Guaranteed Kbps),其他封包的頻寬 管理,在最大頻寬用量皆設定為 ISP 線路最大頻寬的 50%~80%,並且不設 定保留頻寬,如圖 3.5.1-4 與 3.5.1-5 所示。
圖 3.5.1-4 Inbound BM Classes
圖 3.5.1-5 Outbound BM Classes
4. Multihoming(多重定址):是指對外提供服務的網域主機,對外擁有一個以 上的合法 IP 位址,因此外界的用戶要求存取這部有多重定址的主機時,經由 DNS 查詢主機時,會獲得不同的 IP 位址,然後經由不同的線路訪問到這台具 有多重位址的主機。訪問者根據獲得的 IP,利用該線路建立連線,這種根據 線路使用比重來回應的機制,和 Round-Robin 方法相同。此為 Ascenlink 相當 重要的功能,特別是針對用多條線路,且對外提供網路服務的企業。對這些 企業而言,如何不因為線路問題而中斷對外的服務,或是有效的利用線路頻 寬,而讓對外的網路服務,可以充份利用到多條線路的資源,不會將對外的 服務集中在一條線路之上。單一線路除了斷線風險之外,線路負擔過重影響 對外服務品質,在對外的廣域網路連線正常時,對於同一個網域主機名稱,
Ascenlink 可以根據所設定的比重值,輪流回答相對應的 IP 位址。當某些廣域 網路連線故障時,Ascenlink 會避免回應屬於這些廣域網路的 IP 位址,以確保 內 部 的 伺 服 器 對 外 服 務 不 會 中 斷 。 本 研 究 使 用 兩 條 廣 域 線 路 , 符 合 Multihoming 的應用架構,故藉此功能來保障網站連線服務的品質,Ascenlink 相關的設定如圖 3.5.1-6,網路架構如圖 3.5.1-7 所示。
圖 3.5.1-6 多 重 定 址 資 料 設 定
圖 3.5.1-7 多 重 定 址 架 構 示 意 圖
3.5.2 網 路 介 陎 Bonding
網站主機的網路介陎對大量的網路封包傳輸,在 Linux 作業系統下提升效能的做 法可以使用網路介陎 Bonding(合併網卡)的方式,達到:1.網卡自動備援、2.增加傳 輸頻寬、3.多網卡負載帄衡的目的,而 Bonding 的模式如表 3.5.2-1 所示,本研究將使 用 Bonding Mode:Load Balancing-Round-Robin 的方式,實作步驟與設定如下:
虛擬網卡(bond0)的 IP:192.168.0.8 網段:192.168.0.0 / 255.255.255.0 廣播位址:192.168.0.255
1. 修改/etc/modprobe.conf 加入網卡 Driver 與 bonding 參數
2. 建立檔案/etc/sysconfig/network-scripts/ifcfg-bond0 內容
3. 修改檔案/etc/sysconfig/network-scripts/ifcfg-eth1 內容
4. 修改檔案/etc/sysconfig/network-scripts/ifcfg-eth2 內容
5. 設定完成後,Reboot 或是 service network restart。觀察 bonding 狀態,可讀取 /proc/net/bonding/bond0 檔案內容,顯示合併網卡介陎已貣動運作中。
表 3.5.2-1 Linux Bonding Mode
數字 文字表示 模式說明
0 balance-rr 負載帄衡模式,需有 switch 設定(trunk)支 援才能發揮實質效果;具容錯功能,其中一 張 Slave 網卡失效仍可持續運作。
1 active-backup 同一時間只有單一 Slave 網卡運作;Active Slave 網卡失效時自動啟用次一順位 Slave 網 卡;不需 switch 支援。
2 balance-xor 經由 XOR 演算法決定封包傳送的 MAC 位 址;具有負載帄衡與線路備援機制。
3 broadcast 所有 Slave 網卡一齊收送網路封包;具容錯功 能,其中一張 Slave 網卡失效仍可持續運作。
4 802.3ad 需配合支援 802.3ad Dynamic link aggregation 協定的 Switch。
5 balance-tlb 傳出自動負載帄衡;傳入由 Current Active Slave 負責;具容錯功能,其中一張 Slave 網 卡失效仍可持續運作;不需 switch 支援及設 定。
6 balance-alb 傳出及傳入皆自動負載帄衡;具容錯功能,
其中一張 Slave 網卡失效仍可持續運作;Slave 網卡 driver 需支援 setting hardware address 功 能;不需 switch 支援及設定。
3.5.3 連 線 流 量 管 理
由於網頁伺服器的 HTTP 協定,可以同時接受每個使用者一個以上的連線服務 (Session),即使不是惡意的網站攻擊行為,在同時大量的持續的下載行為下,仍可能影 響網站正常的運作,甚至癱瘓整個網路服務,所以針對個別連線的流量,本研究利用 CBand 模組來管理。mod_cband 是一個通過 Apache 模組來解決限制用戶和虛擬主機頻 寬問題的應用,目前版本可以調整虛擬主機和用戶頻寬限額、最高下載速度(like in mod_bandwidth) 、 每 秒 訪 問 請 求 速 度 和 最 高 同 時 訪 問 IP 連 接 數 (like in mod_limitipconn)。在安裝 mod_cband 程式後,便可在 Apache 網頁伺服器的組態檔 httpd.conf 內載入 mod_cband 模組,結合 VirtualHost 做對每個使用者進行網路流量的控 管,相關指令說明如表 3.5.3-1 實作步驟與設定如下:
1. 自官方網站下載 mod-cband-0.9.7.5,tgz,解壓縮後自行編譯安裝 tar -zxvf mod-cband-0.9.7.5.tgz
cd mod-cband-0.9.7.5 ./configure
make make install
2. 在 Apache Server 組態檔 httpd.conf 中載入 mod_cband 模組
表 3.5.3-1 cband 相 關 指 令 說 明
指令 說明
CBandScoreFlushPeriod 指定分數被寫入記分板文件的週期,用來提
高 mod_cband 效能,預設為 1。
CBandRandomPulse 為數據傳輸打開或關閉隨機脈衝產生器,可
改變傳輸速度是被決定和強制的,傳輸速度 在一個時間段被測量,然後在這個時間區段 給出傳輸速度。
CBandScoreboard 指定虛擬主機記分板文件
CBandSpeed kbps rps max_conn
指定虛擬主機最大傳輸速度 kbps:最大傳輸速度。
rps:每秒最大請求數。
max_conn:最大同時連接數。
CBandRemoteSpeed 為任一個遠端使用者指定最大傳輸速度
kbps rps max_conn kbps:最大傳輸速度。
rps:每秒最大請求數。
max_conn:最大同時連接數。
CBandClassRemoteSpeed class kbps rps max_conn
為符合類別的遠端使用者,指定最大傳輸速 度。
class:目標類別名稱。
kbps:最大傳輸速度。
rps:每秒最大請求數。
max_conn:最大同時連接數。
3. 為驗證在 httpd.conf 中設定 mod_cband 組態參數有效,以內部網段做為測詴類
3. 為驗證在 httpd.conf 中設定 mod_cband 組態參數有效,以內部網段做為測詴類