リバースプロキシPound
おまけ: 俺が適当に書いたinitスクリプト(ただしLinux用)
#!/bin/bash
# init file for pound
#
# chkconfig: - 50 50
# description: HTTP Reverse Proxy Daemon
#
# processname: /usr/local/sbin/pound
# config: /usr/local/etc/pound.conf
# pidfile: /var/run/pound.pid
#
# source function library
. /etc/init.d/functions
prog="pound"
RETVAL=1
start() {
echo -n $"Starting $prog: "
daemon /usr/local/sbin/pound
RETVAL=$?
echo
touch /var/lock/subsys/pound
return $RETVAL
}
続き
stop() {
echo -n $"Stopping $prog: "
killproc /usr/local/sbin/pound
RETVAL=$?
echo
rm -f /var/lock/subsys/pound
return $RETVAL
}
reload(){
stop
start
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/subsys/pound ] && restart
return 0
}
おわり
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
status)
status pound
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
RETVAL=1
esac
exit $RETVAL
適当に書いたことにしたいのだろうけど、本当はどこからパクった?
あーすんません。
「適当」ってのは、パクって適当に改変したって意味です。
元になったのは、確かucd-snmpとかいうやつです。
Poundをロードバランスするにはどうすんの?
なにか箱を前に入れるの? 大規模なWebサイトでない限り、いまのところ
Pound自体をロードバランスする必要はないと思いますが、
どうですかね。
自分は、最大同時コネクション数が2 300のWebアプリでPoundを使ってますが、
Pentium2 450MHz x 2というヘボスペックでも、
Poundの負荷が問題になったことはないです。
ただ、poundは全てのログをsyslogに吐くので、
syslogが遅いと、それに引きずられるかもしれないですが。
冗長性を持たせるのが目的なら、LVSとかですかね。
書き込みねーな。誰も使ってないのか?
俺はスゲー便利だと思うけどな。
Poundだけじゃなく、Squid、
Apacheモジュールタイプ、WASやOASについてくるやつ、
はたまた、ServerIronのようなハードウェアタイプなどなど。
わかりやすく比較している記事とかないかなぁ。
軽く探してみたけど、こんなのしか見つかんかった。
ttp://kevinminnick.blogspot.com/2006/03/my-evaluation-of-reverse-proxy.html
Debian GNU/Linux etch (Linux kernel 2.6.19) 上で pound 2.0 を動かしています。
pound: MONITOR: worker exited on signal 11, restarting...
というエラーを吐いてどうもうまく動作しません。ググってみたところ NPLT やら
LD_ASSUME_KERNEL というキーワードが見つかったので
env LD_ASSUME_KERNEL=2.4.19 /usr/sbin/pound
としてみたのですが、手元の環境では変化ありませんでした。
適当に試行錯誤してみた結果 pound.cfg の Service ブロック内に Session ブロック
を書いて Type として IP 以外を指定すると問題なく reverse proxy として動作する
ようになったのですが、みなさんのお手元ではこういう問題は発生していないですかね?
自己レスですが、pound 2.2 だと問題ないですね。
昨日はどういうわけか http://www.apsis.ch/pound/ にアクセスできなかったので
確認を怠ってしまったのですが deb 化されている 2.0 って最新版じゃなかったのね orz
>>14
多分関係ないと思うが、
昔、poundでOpenSSH関連の意味不明なエラーが出て困ったことがあった。
詳細な理由は不明だが、どうやら「rootじゃないアカウントでpoundをビルドしたこと」が
原因だったようだ。それ以来rootでmakeするようにしている。
rootでビルドしないと使えないソフトってなんだか怪しいなあ 2chを読むことは出来るけど
書くことが出来ないようにできる? >>19
ここは君の来るところではない。
Windows板の初心者スレあたりで質問してきなさい。
2.2 にあった NO_SYSLOG のマクロ定義が 2.3 でなくなってしまったのは何故なんでしょうか。
CHANGELOG 眺めてもわからない… configure --disable-log が有効にならないみたいなんですけど。 うぉ.
Pound最高.
Cookieのぞいてセッション見てくれる. >>25
完成度が高過ぎて話すネタがないのかも知れませんね、って1ヶ月後に書くのもなんですが。
バックエンドを変更したときなど,
あるいはバックエンドの一部を落としたい時など,
設定ファイルを読み直させるにはどうすればいいんでしょうか?
kill -HUP <pid> ? バックエンドを落とすだけなら
poundctl
でなんとかなりそうじゃない? >>28
ごめん、不十分な説明だった。
バックエンドを落として、別のに切り替えたいときがあって。
まぁ新しいバックエンドを同じIPアドレスにすればいいのかも試練が。
それにしても堅牢だわ、pound。SSLオフロードもできるし。
商用のSSLオフロードバランサが商売になるのってどれくらいの
サイト規模なんだろうねぇ。 >>29
大人になって誰かに責任をなすりつけられることの意味を知ったら小規模サイトでも使うよ
というのは冗談として,運用担当グループがスキル的にpoundの設定変更を任せられる
レベルじゃない場合は箱物を選択するんじゃない?
いつもBIG-IPとServerIronとArrayとPoundを並列に提案して客に選ばせるんだけど,
日本ではBIG-IP以外の選択を受けたことないよ.アメリカだとたまにArrayやPoundを
選択してもらえる時がある. BIG-IPだと400万円とか一桁違うだろ。みんな金持ってるなあ。
まあ人件費よりは安いか…
てかエロサイト? WASとかOracleなんかを使ってれば、付属のキャッシュサーバが使えたりするし、
BIG-IPやらServerIronあたりのメジャーなやつと連携が取れるようになっていたりもする。
Pound使ってるとApacheにPoundのIPアドレスが渡ってしまうから
アクセス制限かけられねーよ…と思っていたら
mod_extract_forwarded2
なるものがあるのね
debian用パッケージはないのね アクセス制限とは違うんだけど、バックエンド側の
ログをみても分けわかめになるのはどうすればいいの? バックエンドがapacheなら、環境変数でもログってみるとかさ。
>>33 のモジュールだってX-Forwardから取得してるんだし。 いや、話がややこしくなるから書かなかったんだけど
Poundを通してMediaWiki(Wikipediaのシステム)を使うと
MediaWikiに記録されるIPアドレスが全部PoundのIPアドレスになってしまうということだったのよ
ApacheのログにアクセスしたIPアドレスを記録させるには
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
こんな風にするらしいよ バックエンドに lighttpd 使ってるから mod_rpaf とか聞いても
ショボーンだったけど,mod_extforward があるのを知った.
シャキーン X-Forwarded-Forヘッダ解釈で値を変更するってややリスキーだな。
apacheのソース見るとログは単純に文字列で、アクセス制限はソケットの構造体を見てる。
気になるのは3点。
・ログの%aや%hは上書きされるのか?
・IPアドレスベース、ホスト名ベースのアクセス制限は機能するのか?
・リバースプロキシにアクセスする際にX-Forwarded-Forを付けるとどうなるか?
mod_extract_forwarded2とかmod_rpafのソース読めばいいんだけどね。