Perlbal::FAQ - Perlbalについてよくある質問
Perlbal 1.78.
このドキュメントは幾つかのPerlbalについて良く聞かれる質問をリストすることを目的にしています。
init.d
で使用できるサンプルのperlbal.*
はありますか?はい。debian/perlbal.init
の下に見つけることができます。start
, stop
および restart/force-reload
を実装します。あなたの好みと必要に応じてそれを調整してください。
いいえ。ありません。しかし一般的に、もし変更する場合には、それらを少しも再起動する必要が無い管理コンソール上で実施することができます。
いずれにしても、再起動はおそらく簡単です。そのトリックはgraceful restartのシミュレートをすることです。
graceful restartを実行することができるスクリプトの例があります:
$ cat restart-perlbal.sh echo "shutdown graceful" | nc localhost 60000 /usr/local/bin/perlbal --conf=/etc/perlbal.conf
考え方としては、古いPerlbalにgraceful shutdownをするように伝えます: すぐに全てのlisten中のソケットを閉じ、新しい接続が受け付けられなくなります。それが完了すると(瞬間的なものです)、新しいPerlbalを開始することができます。
これにより、ミリ秒単位の最小限のダウンタイムがあります(これは新しいPerlbalが開始するために掛かる時間です)。
この例が動作するためには、ポート60000上でmanagement
サービスがlistenしている必要があることを忘れないでください。the Perlbal::Manual::Management manpage を見てください。
現在のところ、Perlbalは一つのバランシングメソッドのみをサポートします: random
。
SET pool balance_method = 'random'
このモードにより、Perlbalは各受信したリクエストに対してプール内の1つのノードをランダムに選択します。backend_persistが有効な場合は、既存のidleバックエンド接続を再利用することを好みます。それは毎回新しい接続が開くのを待つよりも早いです。
はい。サービスにプラグインを設定すると、順番にホックを登録します。
SET plugins = AccessControl HighPri
これらのホックは配列に入れられ、そのことはそれらがプラグインの順番を保持することを意味します。
たいていの部分でPerlbalはクライアントとバックエンドwebサーバの両方にHTTP/1.0で話します。It happily takes requests advertising HTTP/1.1 and downgrading them to HTTP/1.0 when speaking to backend serves.
Perlbalはpersistent接続について(1.0でも1.1でも)知っており、HTTP/1.0 接続で応答するでしょう: リクエストのkeep-aliveはHTTP/1.1でのみ明示的にkeep-aliveされます。etc.
Perlbalは今は1.1のもっと多くのものも話し始めています。例えば、Perlbalは転送エンコーディング"chunked"リクエストのクライアントからの受け取りをサポートします(HTTP/1.1の機能)。Expect: 100-continue
に対応して100 Continue
を送信します。request-of-unknown-lengthをディスクに書き込みます(buffered_uploads
が有効な場合のみ)。そして、HTTP/1.0リクエストをバックエンドに実際の Content-Length
(now known) を埋めて送信するでしょう。
1.1のもっと多くのものがサポートされると、それはオプションになり、後でデフォルトになるでしょう。. しかしながら、何年か使われた後では、あまり理由がありません。chunkされたリクエスト(モバイルフォンが大きな画像をアップロードするときに一般的)は鬱陶しい欠点ですが、今では解決されています。HTTP/1.1のもっと多くがサポートされるかどうかは疑わしいです。
はい。SSLモードを使用するには、 the IO::Socket::SSL manpage v0.98+
をインストールする必要があります。
web_server
, reverse_proxy
あるいは selector
モードのいずれでもSSLを使うことができますが、SSLとvhostsは互換性がないため、vhostベースのselector
サービス上では使うことができません。
例として conf/ の下の ssl.conf 設定ファイルを見てください。