Prev / Next / /home/pochi/ChangeLog

アプリケーションサーバからの応答が遅かったら別の画面に飛ばす[ウェブ]

2013-07-29

簡単なデモをした。
なんかのときに使うかもしれないので吐き出しとく。

- Reverse Proxy
- Application Server
- Error Server

の3台の構成で、

- ReverseProxy サーバに来たアクセスは、丸っと Application Server に飛ばす
- Application Server から応答が遅いときには、Error Server に飛ばす

ということを実装する。

アプリケーションサーバ上には、CGIを置いておく。
Ubuntuだったら /var/www/ 以下にでも直置き。

時間がそれほどかからないCGI(1秒で応答が帰る)

sleep1.cgi

#!/bin/sh
sleep 1

/bin/echo 'Content-type: text/html

<html>
<head><title>Sleep 1</title></head>
<body>
sleep 1
</body>
</html>'


応答が遅いCGI(10秒で応答)、要は sleep の時間を変えてるだけ。

sleep10.cgi

#!/bin/sh
sleep 10

/bin/echo 'Content-type: text/html

<html>
<head><title>Sleep 10</title></head>
<body>
sleep 10
</body>
</html>'



Reverse Proxy の apache 設定。
まずは Timeout を設定する。

Timeout 3


ぐらいにしておく。3秒以上かかったらエラーになる。
Ubuntu だったら /etc/apache2/apache2.conf あたりを修正しとく。

Reverse Proxy を使えるように、proxy モジュールを有効にする。
proxy だけじゃなく、proxy_http も有効にするのを忘れずに。
Ubuntu だと以下のコマンド。

a2enmod proxy
a2enmod proxy_http


Reverse Proxy の設定は、/etc/apache2/mods-enabled/proxy.conf あたりに追記する。

ProxyRequests Off
ProxyPass / http://(Application Server)/
ProxyPassReverse / http://(Application Server)/
ErrorDocument 502 http://(Error Server)/proxy_error.html


こう設定しておけば、

- sleep1.cgi へのアクセスは Application Server が応答
- sleep10.cgi へのアクセスは遅いので Error Server が応答

するようになる。

permlink