2007年5月26日 星期六

[Ubuntu] Aapche 流量管理模組 - cband

我想應該很多人都有透過 Web serevr 來分享檔案的經驗吧!

的確,透過 HTTP 感覺比 FTP 還方便些,尤其是一些不大的檔案時~不過一堆人同時來下載時,上傳頻寬都被吃光了.....@_@

再者,FTP 可以限制流量耶! HTTP 可以嗎? 當然也可以,這篇要介紹的就是在 Apache 中用來支援流量管制的模組「cband」,有了此模組,就可以用 VirtualHost 或是 User 為單位來進行網路流量的管控了

以下的環境是在 Ubuntu 6.10 上實作的喔!

安裝:

安裝部分相當簡單,只要下達以下指令:
shell> sudo apt-get -y install libapache2-mod-cband
這樣就安裝好了,不得不令人再次佩服 Ubuntu 的套件支援實在強大.....


設定:

有別於其他的 distribution 將 Apache 設定都放置於 httpd.conf 中, Ubuntu 中的 Apache 設定都已經「模組化」了!在設定的部分就有幾個地方需要注意的囉! 以下一一說明:

1、模組設定

一般的 distribution 會將所有支援的 module 放在一個目錄中,而在 Ubuntu 中,他會將支援的 module 與啟用的 module 分開放,分別置於以下兩個目錄:
  • /etc/apache2/mods-available (支援的 module)
  • /etc/apache2/mods-enabled (啟用的 module)
看了一下 mods-enabled 中的內容,是以 link 的方式指到 mods-available 目錄中的模組檔案,因此執行以下指令將 cband 模組 link 過去:
# 每個 module 都有兩個檔案需要 link 喔!
shell> sudo ln -s /etc/apache2/mods-available/cband.conf /etc/apache2/mods-enabled/cband.conf
shell> sudo ln -s /etc/apache2/mods-available/cband.load /etc/apache2/mods-enabled/cband.load


2、啟用 cband

接著在 /etc/apache2/apache2.conf (或是在 httpd.conf) 中加入以下兩行設定:
CBandScoreFlushPeriod 1
CBandRandomPulse On
如此一來,Apache server 重新啟動時便可以啟用 cband 的流量限制功能。


3、流量限制設定

最後我們要限制某個 VirtualHost 的流量,可以在 <VirtualHost> 標籤中加入以下設定: (更詳細的介紹與教學可參考官方網站)
# 限制 VirtualHost 整體
# 每秒最大頻寬為 1024 KB

# 每秒最多接收 10 個 request

# 每秒最多 30 個 connection

CBandSpeed 1024 10 30

# 限制每個遠端 IP
# 每秒最大頻寬為 100KB
# 每秒最多 5 個 request

# 每秒最多 10 個 connection
CBandRemoteSpeed 100kb/s 5 10

最後重新啟動 Apache server 即可。


參考資料:
  1. Apache 2 Bandwidth Quota and Throttling
  2. fjufirefox - apache2 流量限制
  3. Apache2限制每个虚拟主机的连接数【mod-cband】
  4. 信望愛技術組部落格 - Mod-Cband(httpd限流工具)安裝方式
  5. AppleBOY’s Blog - 【apache】mod cband 頻寬限制
  6. Bug #96063 in mod-cband (Ubuntu) - Problem with Apache2's Cband Mod

沒有留言:

張貼留言