Perlbal::Manual::Configuration - Perlbalの設定の仕方
Perlbal 1.78.
デフォルトでは、Perlbalは設定ファイルを /etc/perlbal/perlbal.confで探します。
-c フラグを使って異なる設定ファイルを示すことができます。
$ perlbal -c /home/user/perlbal.conf
-c は エイリアス--confを持ちます。
perlbal
をデーモンとして実行することができます。
$ perlbal --daemon -c /home/user/perlbal.conf
--daemon はエイリアス -d を持ちます。
必要になるだろう通例の操作 (start, stop, restart) をサポートするperlbal.sh
ファイルを作成し、 /etc/init.d
の下に置くことは、よくあるやり方です。サンプルをdebian/perlbal.init
の中で見つける事ができます。
Perlbalの設定ファイルはテキストファイルで、プールとサービスを作成し、プールにサーバーを設定し、サービスのパラメータを設定し、サービスを有効/無効にします。
インデントは強制ではありませんが、読みやすさの点でよい慣例と見なされます。
設定は大文字小文字を区別しませんが、全てのディレクティブを大文字で書くことも良い慣習です。
プールの設定のサンプルです:
CREATE POOL mywebsite POOL mywebsite ADD 10.0.0.1:80 POOL mywebsite ADD 10.0.0.2:80
最初の行はmywebsite
と呼ばれるプールを作成します。2行目と3行目はプールに異なるサーバを追加します。
今後、サービスの中でこのプールを使用することができるでしょう。
また、プールを作成した直後から、有効なプールと見なされるため、どのプールにサーバを追加したかを指定する必要はありません。
CREATE POOL mywebsite POOL ADD 10.0.0.1:80 POOL ADD 10.0.0.2:80
nodefile
パラメータを使って異なるファイルにプールを作成するうことができます。
CREATE POOL dynamic SET nodefile = conf/nodelist.dat
この区別されたファイルは 一行に一つip:port
の形でアドレスを含まなければなりません。(空の行と、 #
記号で始まるコメントは無視されます。)
Perlbalは更新のために定期的にファイルをチェックします。
ファイルへのパスはperlbalが開始された場所からの相対です。
注意:
SET pool nodefile = none (also undef, null, "", '')
...ノードファイルを解除しますが、現在のメンバーからは削除しません。
更に注意: ノードファイルを設定して POOL ADDまたはPOOL REMOVE を使ってプールを修正すると、Perlbalは更新のためのノードファイルのチェックを停止するでしょう!
例では、conf/load-balancer.conf と conf/nodelist.dat をチェックします。
プールバランスメソッドを設定することができます:
SET pool balance_method = 'random'
現在のところ、random
が唯一の利用可能なロードバランスメソッドです。
サービスのサンプルです:
CREATE SERVICE service_mywebsite SET role = reverse_proxy SET pool = mywebsite SET listen = 10.0.0.3:80
一行目は service_mywebsite
という名前のサービスを作成します。
続く3行はサービスのための3つのパラメータを設定します(これと同じ例を the Perlbal::Manual::LoadBalancer manpage の中でもっと詳しくみることができます)。
常にサービスをroleの定義と一緒に開始することは良い慣習です; このやり方で、Perlbalがまだサービスがどのroleを予期しているかを知らない間に、あるroleでのみ受け付け可能なパラメータを設定する試みによって起こるエラーメッセージを避けることができます。
パラメータをどちらかの形式のコマンドで設定することができます:
SET <service-name> <param> = <value> SET <param> = <value>
パラメータの完全なリストについては、 the Perlbal::Manual::LoadBalancer manpage、 the Perlbal::Manual::ReverseProxy manpage あるいは the Perlbal::Manual::WebServer manpageを見てください。
'bool' 値は、1, true, yes, on, 0, false, off, あるいは no のいずれかを使って設定することができます。
'size' の値は、整数値のバイト、あるいは バイト, キロバイト,あるいはメガバイト について'b', 'k', あるいは 'm' が後ろにある整数値です。
サービスのスコープの外側で、以降に作成される全てのサービスのデフォルトのパラメータを設定することができます:
SET <param> = <value>
これは、上の パラメータの設定のセクションと同じパラメータをとります。
サービスを有効にするには:
ENABLE service_mywebsite
サービスを無効にするには:
DISABLE service_mywebsite
これらの行は、たとえ現在のところアクティブでなくても、ファイルの中で設定された幾つかのサービスを持たせることができるものです (一般的なシナリオは、ファイル上の全てを設定し、その後要求に応じてその場でサービスを有効/無効 にします; この方法の詳細は the Perlbal::Manual::Management manpage を見てください。)
Perlbalはもともと他の設定ファイルの中で設定ファイルを読み込むことができませんが、コアプラグインの一つがそれをします。
the Perlbal::Plugin::Include manpageを使って、この機能を使うことができます:
LOAD include INCLUDE = /etc/perlbal/my.conf INCLUDE = /etc/perlbal/other.conf /etc/perlbal/*.conf
更なる例と詳しい情報については、the Perlbal::Plugin::Include manpage を見てください。
以下は設定ファイル/コマンドの中で、拡張/挿入します:
${ip:eth0}
Expands to the configured IP for interface "eth0". おそらくLinuxでのみ動作します。
Perlbalの設定ファイルの中のコメントは、#
から始まります:
# this is a comment ENABLE myservice # this is also a comment
Makefile.PL
で使われます。trueに設定されると、モジュールは使われないでしょう。
Makefile.PL
で使われます。trueに設定されると、perlbal
実行ファイルでは無く、そのモジュールだけが構築されます。
Perlbalには4つのレベルのデバッグがあります。
この値を0から4(included)の値に設定することで、Perlbalのデバッグが有効になるでしょう。
PERLBAL_DEBUG = 0 # デバッグしない
PERLBAL_DEBUG = 4 # 全てをデバッグする
4つのレベルについての詳細は、 the Perlbal::Manual::Debugging manpage で説明されます。
この値を1に設定することで、Perlbalがバッファされているリクエストに X-PERLBAL-BUFFERED-UPLOAD-REASON
ヘッダを追加するようにします。
これはPerlbalがリクエストをバッファリングしていることを、バックエンドのマシーンに知らせるのに便利でしょう。
ヘッダーの値はなぜリクエストがバッファされたのかの理由も含んでいます。
この値は、コマンド obj
あるいは track
を適切に使用するためにtrueにしなければなりません。
詳細な情報は、the Perlbal::Manual::Management manpage を見てください。
この値をtrueにすると、pelbalはperl 5.10+上で内部オブジェクトの field 名の実行時のロックを削除することで特別なスピードの増加を与えます。この交換条件として、As a tradeoff this will make code such as plugins or patch sets that incorrectly handling fields in perlbal to silently fail rather than giving warnings and errors.
あなたが適用しようとしてるperlbalのバージョン、プラグインとバージョン、およびその他のパッチの組み合わせが信用できるまで注意して使ってください。一度perlbalのインスタンスが問題ないと信用できれば、このオプションは単純にperlbalを高速にするに違いありません。
これはPerlbalのalpha機能をテストするために使われる変数です。
これらの機能のうちの一つの開発をしている場合は、まず変数をtrueに設定します。
PERLBAL_TEST_ALPHA = 1
そして、テストファイル上では、以下のように使用します:
unless ($ENV{PERLBAL_TEST_ALPHA}) { plan skip_all => 'Alpha feature; test skipped without $ENV{PERLBAL_TEST_ALPHA}'; exit 0; } else { plan tests => 4; }
これは、state changes
コマンドを適切に使用するためにtrueに設定しなければならない値です。
詳細な情報は、the Perlbal::Manual::Management manpage を見てください。
trueを設定することで、the Perlbal::XS::HTTPHeaders manpage がインストールされている場合は、それを有効にすることができます。
もし the Perlbal::XS::HTTPHeaders manpage を有効にすると、 the Perlbal::HTTPHeaders manpage のフィールドへのアクセスができないかも知れないことに注意してください。
この変数は the Perlbal::Test manpage によってPerlbalをテストするために使われます。
TEST_PERLBAL_FOREGROUND
のtrueの値は、the Perlbal::Test manpage にフォアグラウンドでサーバを実行しなければならないと伝えます。
更に詳しい情報は the Perlbal::Test manpage を見てください。
この変数は the Perlbal::Test manpage によってPerlbalをテストするために使われます。
TEST_PERLBAL_USE_EXISTING
が true に設定されている場合は、Perlbal::Test::start_server
は既存のサーバの管理ポートに接続されているソケットが返されるでしょう。
更に詳しい情報は the Perlbal::Test manpage を見てください。