低スペックな頭の僕がPOUNDでロードバランサ立ててみる
IT業界転職ブームですね。地豆んじゃーリーダーとその上司のお二方が転職されて新しい道を歩まれるとのことです。いやほんとおめでたい。
POUNDってなんぞ。
http://www.apsis.ch/pound/のWHAT POUND ISってところ見ろし。
インストール
とりあえず動かすためにインストールしてみます。ターゲットはOracleVirtualBox上に構築したScientificLinux6.1*2。なんでScientificLinuxかって?厨二的な何かだから気にするな。別にCentOSでもいいよ。今回はソースからインストールします。
//ソースを落としてきます $ wget http://www.apsis.ch/pound/Pound-2.5.tgz
とりあえず最新のstableのVerを落としてきます。適当なディレクトリに展開しておきましょう。展開先に移動してconfigureします。
//こんふぃぎゃー # ./configure --with-ssl=/usr/lib
とやっていると残念ながら失敗してしまいました。
Missing OpenSSL (-lcrypto) - aborted
OpenSSLのライブラリがないよー(';ω;`)となっていますので入れましょう。
//openssl-develインストール # yum install openssl-devel
もう一回configureしてmakeします。
//こんふぃぎゃーしてmake # ./configure --with-ssl=/usr/lib # make
ここで痛恨のコンパイルエラーです。
[root@anko Pound-2.5]# make gcc -DF_CONF=\"/usr/local/etc/pound.cfg\" -DVERSION=\""2.5"\" -DC_SSL=\""/usr/lib"\" -DC_T_RSA=\""0"\" -DC_MAXBUF=\""0"\" -DC_OWNER=\"""\" -DC_GROUP=\"""\" -DC_SUPER=\""0"\" -DC_CERT1L=\"""\" -g -O2 -pthread -DUPER -DNEED_STACK -DHAVE_SYSLOG_H=1 -pthread -I/usr/lib/include -D_REENTRANT -D_THREAD_SAFE -Wstrict-prototypes -pipe -c -o pound.o pound.c In file included from pound.c:28: pound.h:340: error: expected specifier-qualifier-list before ‘LHASH’ make: *** [pound.o] エラー 1
どうやらOpenSSLのVer記述が入っている場所に問題があるようです。Pound-2.6fではfixしているよ。*3とのことなのでPound-2.6fをコンパイルしてインストールします。
//ソースを落としてきます $ wget http://www.apsis.ch/pound/Pound-2.6f.tgz //適当に展開してこんふぃぎゃーしてmakeしてまでは一緒なので省略 # make install
とりあえず動かしてみる
設定ファイルはデフォルトでは/usr/local/etc/pound.cfgにおいておけばOK。pound起動時の-fオプションで好きな場所を指定できる。超簡単な内容は以下の通り。
ListenHTTP Address 192.168.10.151 Port 80 Service BackEnd Address 192.168.10.154 Port 80 Priority 5 End BackEnd Address 192.168.10.156 Port 80 Priority 4 End End End
ListenHTTPにはPOUNDが常駐するサーバIPとポートを指定。BackEndのところに振り分けたい先を書いておく。Priorityは数字が大きい方に優先して振り分けられる。詳しくはmanコマンドでマニュアル確認すると最後にフォーマットなどが出てくるので参照してくだしあ。ネットで検索する時はVerによって記述方法が違うのでその辺注意しましょう。*4
挙動の確認
バックエンドサーバにそれぞれ判別できるようなものをいれてPOUND起動したらブラウザでPOUNDが常駐してるところにアクセスしてF5連打したら振り分けられていることがわかる。ログは/var/log/messageに出力されるのでそこを確認してもよい。*5
まとめ
makeするときのエラーなんかがなければ20分くらいで設定までいけそうなかんじ。あればっかりは回避しようがないらしくおとなしくPound-2.6fを利用しました。ただlogの出力先の設定がどう解決したらよいものやらといったかんじ。
*2:http://www.scientificlinux.org/
*3:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=622041
*4:http://www.atmarkit.co.jp/flinux/rensai/apache2_05/apache05c.htmlの記事は古いから注意
*5:実運用でここに出してると結構アレな状況になるので要注意