■Apache2の帯域制限の設定 mod_cband
ここではmod_cbandの設定方法を説明します。
httpd.confを編集します。
FreeBSDの場合
/usr/local/etc/apache22/httpd.conf
を編集します。
他のOSを使われているかたは、それぞれのApache2の設定ファイルを編集します。
FedoraCore5: /etc/httpd/conf/httpd.conf
Debian: /etc/apache2/httpd.conf
mod_cbandはVirtualHostごとに設定を行うので、
サーバーのIPアドレスが192.168.0.200ならば
<VirtualHost 192.168.0.200>
</VirtualHost>
としてください。
以下サーバーのIPアドレスが192.168.0.200として説明します。
このサーバーのドメイン名はwww.example.jpとして公開されているものとします。
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
</VirtualHost>
ここでServerNameは必須です。
もしServerNameを指定しなかった場合
Starting httpd:[Sun Jun 11 13:24:11 2008][warn]
Invalid command 'CBandSpeed',undefined virtualhost name
と表示されます。
■単位の表記方法
帯域制限をかける上で、帯域の表記方法が必要になります。
次にその表記方法を示します。
送信速度
kbps:1024 bits per second
Mbps:1024x1024 bits per second
Gbps:1024x1024x1024 bits per second
デフォルト kbps
クオータ(送信データの累積量)
K:1000 bytes
M:1000x1000 bytes
G:1000x1000x1000 bytes
Ki:1000 bytes
Mi:1000x1000 bytes
Gi:1000x1000x1000 bytes
デフォルト K (キロバイト)
時間
S:秒
M:分
H:時
D:日
W:週
デフォルト S (秒)
mod_cbandのパフォーマンスを改善するために、次のディレクティブをhttpd.confに追加します。
[/usr/local/etc/apache2/httpd.conf]
CBandScoreFlushPeriod 1
CBandRandomPulse On
次にスコアボードを保存するフォルダを作成します。
このフォルダはどこでもいいのですが、パーミッションの設定が必要です。
#mkdir /var/apache
#mkdir /var/apache/scoreboard
chown www:www /var/apache
chown www:www /var/apache/scoreboard
■ダウンロードスピードの設定
以下httpd.confを設定しますが、設定を反映させるには
#apachectl restart
を行って下さい。
○例1:
ホストの帯域制限+接続クライアントの帯域制限
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 20kbps 3 3
</VirtualHost>
CBandSpeedでは、バーチャルホスト www.example.jp全体の帯域制限を行います。
送信速度1024kbps、1秒あたりの最大接続要求数 10、最大(継続)接続数 30
に制限します。
CBandRemoteSpeedでは、接続してきたクライアントに対して帯域制限をおこないます。
帯域制限 20kbps、1秒あたりの最大接続要求数 3、最大(継続)接続数 3
に制限します。
CBandSpeedの帯域制限は、www.example.jpに接続する各クライアント(ブラウザ等)すべて積算し(含め)た帯域を制限します。
○例2:
ホストの月間送信量の制限+超過時の減速設定
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
CBandLimit 100M
CBandExceededSpeed 128kbps 5 15
CBandScoreBoard /var/apache/scoreboard
CBandPeriod 4W
</VirtualHost>
CBandLimit 100M
CBandPeriod 4W
で、1ヶ月あたり100MByteの送信量に制限しています。
もし、この送信量を超えれば、
CBandExceededSpeed 128kbps 5 15
で、128kbps 1秒当たりの最大接続要求 5 最大(継続)接続数 15
に制限されます。
○例3:
ホストの月間送信量の制限+超過時は503エラーを返す
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
CBandLimit 100M
CBandScoreBoard /var/apache/scoreboard
CBandPeriod 4W
</VirtualHost>
CBandExceededSpeedディレクティブを削除すると503エラーを返します
○例4:
ホストの月間送信量の制限+超過時は503エラーを返し+指定されたURLへリダイレクトする
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
CBandLimit 100M
CBandExeededURL http://www.example.jp/traffic_exceeded.html
CBandScoreBoard /var/apache/scoreboard
CBandPeriod 4W
</VirtualHost>
■ステータスページの表示
mod_cbandには現在の動作状態を表示するステータスページがあります。
VirtualHostディレクティブに<Location /cband-status>...等を追加します
<VirtualHost 192.168.0.200>
ServerName www.example.jp
ServerAdmin admin@example.jp
DocumentRoot /home/www/public_html
CBandLimit 100M
CBandExeededURL http://www.example.jp/traffic_exceeded.html
CBandScoreBoard /var/apache/scoreboard
CBandPeriod 4W
<Location /cband-status>
SetHandler cband-status
</Location>
<Location /cband-status-me>
SetHandler cband-status-me
</Location>
</VirtualHost>
これらの画面を表示するには、
www.example.jp/cband-status
www.example.jp/cband-status-me
をブラウザで開きます。
0 件のコメント:
コメントを投稿