名前

Perlbal::Manual::ReverseProxy - リバースプロキシとしてのPerlbalの設定

バージョン

Perlbal 1.78.

説明

Perlbal リバースプロキシサービスの設定

最初に

Perlbalを設定するより良い説明としてまず the Perlbal::Manual::Configuration manpage を読んでください。このドキュメントはそれを読んだ後でもっと理解できるでしょう。

リバースプロキシとしてのPerlbalの設定

リバースプロキシとしてのPerlbalの設定は、ロードバランサとしての設定と似ています。

設定ファイルの例と、ロードバランサとリバースプロキシの違いの簡単な説明については、Using Perlbal as a Load Balancerの下の the Perlbal::Manual::LoadBalancer manpage を調べてください。

パラメータ

パラメータをどちらかの形式のコマンドで設定することができます:

    SET <service-name> <param> = <value>
    SET <param> = <value>
always_trusted = bool

全てのやってくる X-Forwarded-For および関係するヘッダを、信頼するかどうか。Set to true only if you know that all incoming requests from your own proxy servers that clean/set those headers.

デフォルトはfalseです。

backend_persist_cache = int

The number of backend connections to keep alive on reserve while there are no clients.

デフォルトは2です。

blind_proxy = bool

X-Forwarded-For, X-Host, および X-Forwarded-Host ヘッダの修正を無効にするフラグ。

デフォルトはfalseです。

buffer_backend_connect = size

バックエンドのwebノードに送信し始めるまで、クライアントからどれだけのcontent-body (POST/PUT/etc) データを読み込むか。If buffer_uploads is enabled, this value is used to determine how many bytes are read before Perlbal makes a determination on whether or not to spool the upload to disk.

Default is 100k.

buffer_size = size

バックエンドからクライアントへコピーする間に、クライアントのどれだけ先を取得するか。クライアントがこれよりも遅れる場合は、バックエンドからの読み込みを少しの間止めます。全ての残りデータがこのバッファに一致するとすぐに、バックエンドはリリースされ再利用されるかも知れません。

デフォルトは256kです。

buffer_size_reproxy_url = size

reproxyされたURLからクライアントへコピーする間に、クライアントのどれだけ先を取得するか。クライアントがこれよりも遅れる場合は、reproxyされたURLからの読み込みを少しの間止めます。The default is lower than the regular buffer_size (50k instead of 256k) because it's assumed that you're only reproxying to large files on event-based webservers, which are less sensitive to many open connections, whereas the 256k buffer size is good for keeping heavy process-based free of slow clients.

Default if 50k.

buffer_upload_threshold_rate = int

アップロードが秒間当たりのバイト数のこの値より小さいレートできた場合、ディスクにバッファされるでしょう。0はレートがチェックされないことを意味します。

デフォルトは0です。

buffer_upload_threshold_size = size

アップロードがバイト数でこの値より大きい場合、ディスクにバッファされるでしょう。0はサイズがチェックされないことを意味します。

デフォルトは250kです。

buffer_upload_threshold_time = int

アップロードがこの秒数よりも掛かると見積もられた場合、ディスクにバッファされるでしょう。0は時間が見積もられないことを意味します。

デフォルトは5です。

buffer_uploads = bool

ディスクシステムへのバッファアップロードの有効あるいは無効に使われます。有効の場合、アップロードに見合うbuffer_backend_connect バイトがメモリに格納されます。この時点で、このアップロードをバックエンドに単純に送信する必要があるか、ディスクにスプールする必要があるかを知るために、バッファのアップロード閾値がチェックされるでしょう。

デフォルトはfalseです。

buffer_uploads_path = path/to/directory

バッファアップロードに使われるファイルの格納のためのルートディレクトリ。

client_sndbuf_size = size

クライアントソケットSNDBUFをどれだけの大きさに設定するか。

デフォルトは0です。

connect_ahead = int

新しいクライアント接続を見越して、現在の接続に加えてどれだけ余分なバックエンド接続をkeep aliveするか。

デフォルトは0です。

enable_error_retries = bool

バックエンドが500サーバエラーを返した時に、Perlbalが透過的にバックエンドにリクエストを再試行すべきかどうか。

デフォルトはfalseです。

enable_reproxy = bool

ローカルファイルまたは他のURLへの'reproxying'(end-user-transparent internal redirct)を有効にする。When enabled, the backend servers in the pool that this service is configured for will have access to tell this Perlbal instance to serve any local readable file, or connect to any other URL that this Perlbal can connect to. バックエンドのwebノードを信頼している場合のみこれを有効にします。

デフォルトはfalseです。

詳細な情報はこのドキュメントの Reproxying を見てください。

error_retry_schedule = string of comma-separated seconds (full or partial)

再試行の間隔のカンマで区切られた秒数の文字列(完全あるいは一部)。例えば、"0,2" は最大2回の再試行を行い、最初の失敗から0秒後に1つ目の0秒、二回目の失敗から2秒後に2回目を行います。おそらくデフォルト値を修正する必要は無いでしょう。

Default it 0,0.25,0.50,1,1,1,1,1

enable_ssl = bool

クライアントへのSSLを有効にする。

デフォルトはfalseです。

high_priority_cookie = cookie_name

クライアントが高優先度キューに行くかを決めるために調査されるクッキーの名前。

詳細な情報は the Perlbal::Manual::HighPriority manpage を見てください。

high_priority_cookie_contents = string

高優先度キューに行くためにhigh_priority_cookieが含む必要がある文字列。

詳細な情報は the Perlbal::Manual::HighPriority manpage を見てください。

idle_timeout = int

エンドユーザへのidle接続がタイムアウトする秒数。バックエンドが応答あるいはデータを送信するのにどれだけ長く掛かるかも制限します。

デフォルトは30です。

listen = ip:port

listenする ip:port。サービスが動作するには、listenさせるか、他のセレクタサービスをlistenしていないサービスにマップさせるかしなければなりません。

max_backend_uses = int

一つの永続的なバックエンド接続上で、接続が開放される前に作られるリクエストの最大数。

A value of 0 means there is no limit and the connection will only be discarded once the backend asks it to be or when Perlbal is sufficiently idle.

デフォルトは0です。

max_chunked_request_size = size

チャンクされたリクエストとして受け付けられる最大のサイズ(ディスクに書かれ、バッファされたアップロードはこの上になければなりません)。0は制限が無いことを意味します。

デフォルトは 209715200 (200MB) です。

persist_client = bool

エンドユーザへのHTTP keep-alive を有効にするかどうか。

デフォルトはfalseです。

persist_backend = bool

バックエンドのwebノードへの HTTP keep-aliveを有効にするかどうか。

デフォルトはfalseですが、Perlbalがバックエンドへの唯一のクライアントの場合はtrueに設定することがとてもお勧めです。そうでなければ、Perlbalが接続を占有して他のクライアントが飢えることに気をつけてください。

persist_client_idle_timeout = int

Timeout in seconds for HTTP persist_client_idle_timeout keep-alives to the end user.

デフォルトは30です。

persist_client_timeout = int (DEPRECATED)

Set both the persist_client_timeout persist_client_idle_timeout and idle_timeout.

廃止されました。

プール

このリバースプロキシがリクエストを送信するバックエンドノードを含んでいる、事前に作成されたプールオブジェクトの名前。

queue_relief_chance = int:0-100

reliefモードにある時に標準優先度リクエストを獲得する確率。

デフォルトは0です。

詳細な情報は the Perlbal::Manual::HighPriority manpage を見てください。

queue_relief_size = int

Number of outstanding standard priority connections to activate pressure relief at.

0は高優先度キューシステムを完全に無効にします。

デフォルトは0です。

詳細な情報は the Perlbal::Manual::HighPriority manpage を見てください。

reproxy_cache_maxsize = int

サービスキャッシュに保持されるreproxyの結果 (X-REPROXY-CACHE-FOR) の最大数を設定します。These cached requests take up about 1.25KB of RAM each (on Linux x86), but will vary with usage. Perlbalはキャッシュ0から始まり、時間とともに成長します。これを調整する時には気をつけて、hawkのようなものを使ってRAMの使用率を見てください。

デフォルトは0で、キャッシュが無効であることを意味します。

role = reverse_proxy|web_server|management|selector

どのような種類のサービスか。One of 'reverse_proxy' for a service that load balances to a pool of backend webserver nodes, 'web_server' for a typical webserver', 'management' for a Perlbal management interface (speaks both command-line or HTTP, auto-detected), or 'selector', for a virtual service that maps onto other services.

server_process

Executable which will be the HTTP server on stdin/stdout. (ALPHA, EXPERIMENTAL)

ssl_cert_file = path/to/file

SSL証明書PEMファイルへのパス。

デフォルトは certs/server-cert.pem です。

ssl_cipher_list = cipher list

OpenSSL-style cipher リスト。

デフォルトは ALL:!LOW:!EXP です。

ssl_key_file = path/to/file

SSLプライベートキー PEMファイルへのパス。

デフォルトは certs/server-key.pem です。

trusted_upstream_proxies = Net::Netmask filter

A comma separated list of the Net::Netmask manpage filters (e.g. 10.0.0.0/24, see the Net::Netmask manpage) that determines whether upstream clients are trusted or not, where trusted means their X-Forwarded-For/etc headers are not munged.

upload_status_listeners = comma separated list of hosts

Comma separated list of hosts in form 'a.b.c.d:port' which will receive UDP upload status packets no faster than once a second per HTTP request (PUT/POST) from clients that have requested an upload status bar, which they request by appending the URL get argument ?client_up_sess=[xxxxx] where xxxxx is 5-50 'word' characters (a-z, A-Z, 0-9, underscore).

verify_backend = bool

実際のクライアントがバックエンドにリクエストする前に、Perlbalがバックエンドに素早くOPTIONSリクエストを送信すべきかどうか。バックエンドがApacheまたは他のプロセスベースのwebサーバの場合、これはとてもお勧めです。全てのあまりに頻繁に負荷が高いバックエンドボックスは新しいTCP接続に応答するでしょうが、Perlbalが話しかけているのはカーネルのTCPスタックであり、実際のApacheのプロセスではまだありません。このオプションは負荷の高いサイトにおいてエンドユーザの待ち時間を減らします。

デフォルトはfalseです。

verify_backend_path = path

verify_backend によって送信されるOPTIONSリクエストのパスは何を使うべきか。

デフォルトは*です。

server_tokens = bool

"Server" ヘッダを提供するかどうか。

Perlbalはデフォルトで全ての応答にヘッダを追加します(web_server roleの役割として)。このデフォルトを"off"に設定することで、Perlbalだと分かることを防ぐことができます。

デフォルトは on です。

パラメータについてもっと

backend_persist_cache vs. connect_ahead

The backend_persist_cache parameter refers to connections kept alive after being used, while connect_ahead refers to connections opened in anticipation.

例えば:

    SET backend_persist_cache = 2
    SET connect_ahead         = 1

簡単にするために、あなたのサービスが一つのサーバしか持っていないと仮定しましょう。何か起こるかの例です:

リプロキシング

Perlbalはreproxyの概念をサポートします。基本的に、これにより、バックエンドにファイルを尋ね"このファイルは本当にそこにあります、持って行ってください"という特定のヘッダを返す機能を与えます。Perlbalはその後ファイルまたはURLをロードし、他の場所にreproxyされたことを知らせること無しに透過的にユーザに送信します。

サービス単位のreproxyを有効にするために、以下の行を perlbal.conf に追加します (reproxyはデフォルトで無効です >= 1.38)。

    SET enable_reproxy  = true

あなたのディレクトリ構造をユーザに図示する十分な情報無しにディスク上のファイルをマップするURLを持つのに便利です。例えば、以下のようなファイル構造を作成することができます:

    /home/pics/$userid/$pic

Then you can have URLs such as:

    http://foo.com/mysite/users/$userid/picture/$pic

このURLがバックエンドのwebノードに渡される時に、以下のヘッダを含む単純な応答を返すでしょう:

    X-REPROXY-FILE: /home/pics/$userid/$pic

Perlbalはその後Perlbalを全く見せることなくファイルをユーザに送信するために非同期IOを使うでしょう。 at all.

これはPerlbalがアクセスできる場所にあるURLの拡張も提供します。It's the same syntax, nearly:

    X-REPROXY-URL: http://foo.com:80/resource.html

複数のURLを指定することもできます:

    X-REPROXY-URL: http://foo.com:80/resource.html http://baz.com:8080/res.htm

単純に空白区切りの複数のURLを指定します。Perlbalはそれらを一つずつ、どれか一つが200の応答コードを返すまでリクエストするでしょう。その時点でPerlbalは通常のようにユーザに応答をproxyして返すでしょう。

ユーザのヘッダはwebサーバに渡されないことに注意してください。ターゲットのサーバにとっては、単純にPerlbalが自分自身のためにリソースを要求しているように見えます。この挙動はどこかの時点で変わるかも知れません。

最後に一つだけ注意: reproxyヘッダを返すサーバは、 X-REPROXY-EXPECTED-SIZE ヘッダを返すこともできます。もしそれが存在していると、ターゲットのシステムから返されたファイルサイズと期待サイズのヘッダに違いがある場合にPerlbalはreproxyが失敗したと見なすでしょう。失敗時には、Perlbalはリストの次のURLを試します。reproxyされているファイルの場合には、ファイルサイズが異なっていると404が返されます。

参照

the Perlbal::Manual::Configuration manpage, the Perlbal::Manual::FailOver manpage, the Perlbal::Manual::LoadBalancer manpage, the Perlbal::Manual::Management manpage.

TOP
inserted by FC2 system