pound
その他UNIX系
poundとは
poundはロードバランサー、リバースプロキシの機能を持つアプリケーションです。
もう少し詳しく書くと以下のような特色を持っています。
・リバースプロキシ先を複数記述することによりロードバランシング設定が可能
・それぞれにPriority値を設定することにより、振り分け率をstaticに設定可能
・リバースプロキシ先の生死を定期的に確認し、その結果振り分けの有無を自動で切り替え
・httpsプロトコルに対応しているので、SSL wrapperとして使用可能
・IP,Cookie,query_string,Basic認証、リクエストヘッダによるセッション維持に対応
・URLパターンによる振り分け設定が可能
・設置が非常に簡単
ただし、pound自体の冗長化機能は持っていないので注意です。
従って、いわゆる商用でのロードバランサーの機能としては不十分なのですが、個人で負荷分散やSSL Wrapperとして使う分には十分すぎる機能を持っていると思います。
インストール
Pound-2.4.5.tgz の例です。
poundの公式サイトからアーカイブを取得して展開します。
% gzip -dc Pound-2.4.5.tgz | tar xvf - % cd Pound-2.4.5
あとはお決まりの手順です。
% ./configure % make % su # make install
設定
デフォルトでは/usr/local/etc/pound.cfgを設定ファイルとして読み込むので、/usr/local/etc/pound.cfgを作成します。
アーカイブ中にも特に雛形等は無いようなので一から作成するしかなさそうです。
主な全体的な設定:
項目 | デフォルト | 概要 |
---|---|---|
User | 実行ユーザー。ダブルクォーテーションで括らないとエラーとなるので注意 | |
Group | 実行グループ。ダブルクォーテーションで括らないとエラーとなるので注意 | |
LogLevel | 1 | ログのレベル |
Alive | 30 | バッグエンドのサーバにハートビートを送る間隔(秒) |
Daemon | 1 | デーモンとして実行するか否か。daemontoolsで管理する時とかに0に設定すべしとドキュメントに記述されているが、0に設定すると確かにforegroundで実行されるのだが、poundが子プロセスをforkしているように見え、daemontoolsがpidを取得できず、管理できていないように見える。 |
LogFacility | daemon | syslogのLogFacility値。-を設定するとstdout/stderrとなる。 |
以下、簡単な設定例です。
User "pound" Group "pound" LogLevel 2 Alive 50 Daemon 0 LogFacility - ListenHTTP Address xxx.xxx.xxx.xxx Port 80 End Service BackEnd Address 192.168.0.10 Port 80 Priority 6 End End Service BackEnd Address 192.168.0.11 Port 80 Priority 4 End End ListenHTTPS Address xxx.xxx.xxx.xxx Port 443 Cert "/path/to/xxx.pem" End Service BackEnd Address 192.168.0.10 Port 443 Priority 6 End End Service BackEnd Address 192.168.0.11 Port 443 Priority 4 End End
証明書について
上記の例のように、poundでhttps参照を受ける際には、CertでSSL関連ファイルを指定します。
このファイルの中身は、証明書、秘密鍵の順でマージしたファイルになります。
また、中間証明書が必要な認証局の場合には、証明書、中間証明書、秘密鍵の順でマージしたファイルとなります。
マージする順番が異なると動作しないので注意が必要です。
起動
以下のコマンドで実行します。
# /usr/local/sbin/pound
-c を指定すると、設定ファイルのシンタックスチェックが可能です。
-f で設定ファイルが指定可能です。