以前poundのインストール記事を書きましたが、 Webアプリケーション上にてOpenID取得など長いURIを取得する際には、 旧バージョンのpoundですと、取得出来ない場合があります。 今回はそれを踏まえての記事となります。 本日は、「poundによる負荷分散その2」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。 本日は、「poundによる負荷分散その2」についてです。
システム・ネットワーク構成は以下を前提としてのご説明になります。
192.168.1.93 poundサーバー
192.168.1.23 webサーバー1
192.168.1.33 webサーバー2
以下サイトを参考にしました。貴重な情報に感謝いたします。
参考:
Request URI is too long. - taslamの日記
Pound が Header Buffer を 2KByte しか確保しない不都合 :: Drk7jp:
揺動散逸日記 libunwind build failure.:
必要なアプリケーションをインストール
1 2 3 4 |
# yum install openssl-devel pkgconfig pcre-devel # wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/libunwind-0.99-0.2.frysk20070405cvs.el5.kb.i386.rpm # wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/google-perftools-devel-1.3-3.el5.kb.i386.rpm # wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/google-perftools-1.3-3.el5.kb.i386.rpm |
1 2 3 |
# rpm -ivh libunwind-0.99-0.2.frysk20070405cvs.el5.kb.i386.rpm # rpm --test -ivh google-perftools-1.3-3.el5.kb.i386.rpm google-perftools-devel-1.3-3.el5.kb.i386.rpm # rpm -ivh google-perftools-1.3-3.el5.kb.i386.rpm google-perftools-devel-1.3-3.el5.kb.i386.rpm |
poundをインストール
ソースを確認してからインストール。
どうも古めのpoundではHTTPリクエストのヘッダのサイズにRFC以下の制限があるようです。 waku2traffics.comサーバーでは、 OpenIDを取得する際に「Request URI is too long.」と出てしまいました。 そのため、最新版を導入&制限がどうなっているのかの確認をしてからのインストールとなります。
また、waku2traffics.comサーバーは64bitCPUにて稼動しているので、本来であればx86_64版を導入すべきですが、インストールの際に障害が発生した為、今回はi386版をインストールします。
1 2 3 4 |
# wget http://www.invoca.ch/pub/packages/pound/pound-2.4.5-1.src.rpm # rpm -ivh pound-2.4.5-1.src.rpm # cd /usr/src/redhat/SOURCES/ # tar zxvf Pound-2.4.5.tgz |
以下の記述を確認。
1 2 3 4 |
# vi Pound-2.4.5/pound.h #define MAXBUF 1024 ↓ #define MAXBUF 4096 |
1 2 3 4 5 6 7 8 9 |
# tar zcvf Pound-2.4.5.tgz Pound-2.4.5 # cd /usr/src/redhat/SPECS # rpmbuild -ba pound.spec (略) 書き込み完了: /usr/src/redhat/SRPMS/pound-2.4.5-1.src.rpm 書き込み完了: /usr/src/redhat/RPMS/x86_64/pound-2.4.5-1.x86_64.rpm 書き込み完了: /usr/src/redhat/RPMS/x86_64/pound-debuginfo-2.4.5-1.x86_64.rpm 実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.92726 # rpm -Uvh /usr/src/redhat/RPMS/x86_64/pound-2.4.5-1.x86_64.rpm |
設定ファイルの編集
設定ファイルの内容は、以前書いたpoundインストール記事と変わりありません。
設定ファイルのバックアップ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# cp /etc/pound.cfg /etc/pound.cfg.bk # vi /etc/pound.cfg ######## グローバル設定 # 実行ユーザ指定 User "nobody" # 実行グループ指定 Group "nobody" # ログをApacheのcombined と同じ形式で出力する LogLevel 3 # ハートビートを送る間隔 ( 秒 ) Alive 30 # daemonとして実行 ( 0指定でフォアグラウンドで実行 ) Daemon 1 # PoundサーバのIPアドレス,ポート ListenHTTP Address 192.168.1.93 Port 80 End ######## 例外振り分け:MovableType関連 # MovableType本体 Service URL "^/MovableType/.*" BackEnd Address 192.168.1.23 Port 80 Priority 5 End End ######## 基本振り分け # ※重み付けは、例外振り分け1P内で振り分け先がバラけるより # 同じホストにまとまった方が表示が速いと思うので、 # 例外振り分け先にアクセスをまとめておいた方がいいかも。 # 現状は双方ホスト共に同じ 5 とする。 Service URL ".*" BackEnd Address 192.168.1.23 Port 80 Priority 5 End BackEnd Address 192.168.1.33 Port 80 Priority 5 End End |
あとはserviceなり直接叩くなりすれば起動します。 私はheartbeatから起動していますが、ここでは説明を割愛します。
上記設定ファイルの記述例の前にも書きましたが、 poundの設定書式は、昔と比べて現在はかなり変わっています。注意しましょう。