[ロ] ロードバランサ Pound-2.0.1

このエントリーをはてなブックマークに追加
はてなブックマーク - [ロ] ロードバランサ Pound-2.0.1
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`tweetmeme` not found]

しまった。、地雷だった。人柱履歴。。。
インストールは下記の通りできて動くには動いたのだけれど、Pound-2.0.1はバージョンからしても相当新しいものみたい。
しかも、Pound-1.x系とは設定ファイルの書き方が全然違っているらしく、書き方の情報もすごく少ない。
日本語情報というより、英語の情報ですら少ない。ぐはー。1.x系を使うのが正解だったのかも?


$ cat /etc/redhat-release
Red Hat Linux release 9 (Shrike)

利用しているLinuxはRH9です。


$ wget http://www.apsis.ch/pound/Pound-2.0.1.tgz
$ tar xvzf ./Pound-2.0.1.tgz
$ cd Pound-2.0.1
$ ./configure --with-ssl=/usr

Pound-2.0.1をダウンロードして、SSLを指定したconfigureをします。


$ make
cc -DF_CONF="/usr/local/etc/pound.cfg\" -DVERSION=\"`cat VERSION`\" -g -O2 -pthread -DUPER -DNEED_STACK -DHAVE_SYSLOG_H=1  -D_REENTRANT -D_THREAD_SAFE -Wstrict-prototypes -pipe   -c -o pound.o pound.c
In file included from pound.c:249:
pound.h:169:2: #error "Pound needs openssl/ssl.h"
In file included from pound.c:249:
pound.h:342: parse error before "SSL_CTX"
pound.h:342: warning: no semicolon at end of struct or union
pound.h:359: parse error before '}' token
pound.h:359: warning: data definition has no type or storage class
pound.h:361: parse error before '*' token
pound.h:361: warning: data definition has no type or storage class
pound.h:365: parse error before "LISTENER"
pound.h:365: warning: no semicolon at end of struct or union
pound.h:367: parse error before '}' token
pound.h:367: warning: data definition has no type or storage class
pound.h:403: parse error before '*' token
pound.h:403: warning: function declaration isn't a prototype
pound.h:416: parse error before "LISTENER"
pound.h:416: warning: function declaration isn't a prototype
pound.h:461: parse error before '*' token
pound.h:461: warning: function declaration isn't a prototype
pound.c:265: parse error before '*' token
pound.c:265: warning: data definition has no type or storage class
pound.c: In function `main':
pound.c:342: `lstn' undeclared (first use in this function)
pound.c:342: (Each undeclared identifier is reported only once
pound.c:342: for each function it appears in.)
pound.c:563: `arg' undeclared (first use in this function)
pound.c:565: parse error before ')' token
pound.c:568: parse error before "else"
pound.c: At top level:
pound.c:584: parse error before "else"
pound.c:587: parse error before numeric constant
pound.c:587: warning: function declaration isn't a prototype
pound.c:587: conflicting types for `exit'
/usr/include/stdlib.h:612: previous declaration of `exit'
pound.c:587: warning: data definition has no type or storage class
make: *** [pound.o] Error 1


pound.h:169:2: 

といわれています。後で考えれば、「ssl.h」は「/usr/include/openssl/ssl.h」にあるので
「–with-ssl=/usr/include」としてやればいけたかも知れない・・・。
でも、このときはバージョンの問題かなぁと思って次のようにしました。
(FedoraCore4でインストールしたときはopensslの最新RPMパッケージが入っていれば
普通にPoundをコンパイルできたのでバージョンの問題かなと考えました。)


$ wget http://www.openssl.org/source/openssl-0.9.8a.tar.gz
$ tar xvzf ./openssl-0.9.8a.tar.gz
$ cd openssl-0.9.8a
$ ./config --prefix=/usr/local/openssl-0.9.8a
$ make
$ sudo make install
$ sudo sudo ln -s /usr/local/openssl-0.9.8a/ /usr/local/openssl

最新のopensslをダウンロードして、RPMパッケージのopensslと混ざらない場所にインストール。
過去、バージョンが混乱したり、今どのソフトがどのバージョンを使っているのかわからなくなる
経験もしたので、prefixにはバージョンを含めた形でのインストールとしてみました。
で、シンボリックリンクを張ってみる。
こうしておけば、いつでも最新のものを使える上に、古いものを使わなくてはいけない状況で
古いものを利用することもできて便利かなと。


$ cd ../Pound-2.0.1
$ ./configure --with-ssl=/usr/local/openssl
$ make
$ sudo make install

気を取り直して、Poundに戻ります。
先ほどインストールしたopensslを利用してコンパイルすると、見事に完了。


$ sudo vi /usr/local/etc/pound.cfg
ListenHTTP
    Address 127.0.0.1
    Port 88
    Service
        BackEnd
            Address 127.0.0.1
            Port 80
        End
    End
End

「pound.cfg」はデフォルトで用意されていないので新規に記述します。
Pound-1.x系とは記述形式が違う模様・・・。
ひとまずは、上のように記述して、とりあえずローカルからの接続で88番ポートの接続要求が80番ポートに振り分けられることまでは確認しました。


$ sudo /usr/local/sbin/pound

起動はこちらのコマンドで。


$ sudo tail /var/log/messages

ログを見たいときには「/var/log/messages」で見られます。
コンフィグファイルの記述ミス等もこちらに出るので、別ウィンドウで「sudo tail -f /var/log/messages」やりながらPoundを起動すると起動できたかどうかがわかりやすいかも。

Popular Posts:

“[ロ] ロードバランサ Pound-2.0.1” への2件の返信

  1. ‘Pound’ってオープンソースか何かのロードバランサでしょうか?
    いまかかわっているプロジェクトで、 UltraMonkey という、オープンソースのロードバランサを使用しているのですが、こいつがセッション維持機能がなくて、萎えです。
    以下、愚痴。
    UltraMonkey をレイヤ7に対応させようと UltraMonkey-L7 ってのを作っている人たちもいるんで、コレを利用して難をしのいでいますが・・・・
    2億の案件で、なぜロードバランサをケチるのか、理解に苦しみます。でも、使えない人間に対する人経費はケチらない(藁

  2. おっと失礼いたしました。公式サイトへのリンクくらい作っておくべきでした。
    そういえば、この前話したときもUltraMonkey使ってるっていってましたねー。ファイトです!!
    UltraMonkey-L7にも興味はあるのでぜひぜひお話を聞かせていただきたいところ。
    以下参考情報。
    ○Pound公式サイト
    http://www.apsis.ch/pound/
    オープンソースのリバプロですね。
    はてなの伊藤直也さんの記事がなかなか詳しくてよいかと。
    http://naoya.dyndns.org/~na
    あとは、このブログでもつ皮合わせていただいている、Drk7jpさんの
    リバースプロキシを導入する際はmod_rpaf
    http://www.drk7.jp/MT/archi
    も参考になりますね。
    各オープンソースのリバプロ機能比較は
    http://shibuya.pm.org/blosx
    の「竹迫良範 – mod_perl における C10K problem [.ppt 2.0M]」29ページを参照するとよいかと。
    Poundは結構いろいろできるみたいですよ。まだ使いこなしていないのでセッション系はどこまでいけるのかわかりませんが。セッション系まで含めていろいろ試してみたいと思います。試してよさそうであればブログに書きたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*