Home > Tags > scalability

scalability

PerlbalのX-Reproxy-Urlで、ヘッダを渡すパッチ

Photo by E Cashell

 PerlbalのX-Reproxy-Urlを使おうと思ったのですが、Reproxy先のURLへヘッダを渡す方法が無かったので、ちょっとしたハックをしました。

 X-Reproxy-Headersに渡したいヘッダをカンマ区切りで入力すると、そのヘッダをReproxy先にも渡します。

 下記のようなリクエストをperlbalに返すと、

X-Reproxy-Url: http://example.com/
X-Reproxy-Header: Cookie,X-Version
Cookie: ID=foobar
X-Version: 1.0

 Reproxy先には、下記のようなヘッダが渡されます。

Cookie: ID=foobar
X-Version: 1.0

 Perlは4止まりだったのですが、がんばってパッチを作ってみました。

perlbal-reproxy-header-060108.patch

ホントは、プラグインとかにしたいんですが、どなたか手伝ってくれませんか?

追記

RailsConfで出ていた、WarBookがPerlbalを使ってるって言ってたなぁ。

[メモ] AmazonS3とEC2を使う時にはX-REPROXY-URL

 S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。
そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。

 Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。
 負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。

 リバースプロキシなどの中には、X-REPROXY-URLというヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。

 Perlbalが始めにサポートしたらしいですが、lightlyやapacheもパッチが出ているようです。Perlbalはリバースプロキシとしても、性能が高いらしいので、これを評価してみようと思います。

メモリンク

Home > Tags > scalability

Search
Feeds
Meta

Return to page top