Perlbal::Manual::Management - Perlbal の動的な管理
Perlbal 1.78.
動的に設定およびデバッグするための Perlbal の管理
サービスの設定の仕方
Perlbalを設定するより良い説明としてまず the Perlbal::Manual::Configuration manpage を読んでください。このドキュメントはそれを読んだ後でもっと理解できるでしょう。
以下のやり方で管理サービスを作成することができます:
CREATE SERVICE mgmt SET role = management SET listen = 127.0.0.1:16000 ENABLE mgmt
ブラウザで管理サービス(この場合、127.0.0.1のポート16000)にアクセスすると、有効になっているサービスの情報のページが表示されます。それらのサービスをクリックすることもでき、それらの更なる情報を表示することができます。
管理サービスにtelnetすると、Perlbalのインスタンスを管理できる接続を取得することができます。
$ telnet 127.0.0.1 16000 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
これでいくつかのコマンドにアクセスすることができます(大文字小文字は区別されません):
プールまたはサービスを作成します。
create pool my_new_pool
create service my_new_service
サービスを無効にします(リスニングを停止します)。
disable my_service
管理
サービスを停止できないことに注意してください。
サービスを有効にする(リスニングを開始します)。
enable my_service
リクエストがバックエンドに渡される前にヘッダを挿入または削除します。
ヘッダを追加する場合は値を宣言する必要があります:
header my_service insert x-myamazingheader:myamazingvalue
ヘッダを削除する場合は、何も値を必要としません。値を持っているかどうかに関係なくヘッダは削除されるでしょう。
header my_service remove Connection
注意: ヘッダを x-
で始める必要はありませんが、非標準のヘッダは x-
を前につけるのが慣習です。
Perlbal の プラグインをロードします。
load AccessControl
プラグインのリスト
サービスからノードを追加あるいは削除することができます。
pool add my_service 127.0.0.1:1337
pool remove my_service 127.0.0.1:1337
既存のノードを追加、あるいは存在しないノードを削除しても、エラーメッセージが無い事に注意してください。
また、ポート番号が省略された場合にはデフォルトの :80 になることに注意してください。
reproxyステータスの状態をダンプします。
reproxy_state SERVER max_reproxy_connections = 0
サーバのパラメータを設定します。パラメータは以下のうちの一つです:
バックエンドへの同時接続の最大数。
ip
) = <value>
特定の一つのバックエンドへの同時接続の最大数。
RLIMIT_NOFILE
の値を設定します(このプロセスのopen filesの最大数)。
the BSD::Resource manpageを必要とします。また、Perlbalはsuperuserで実行されていなければなりません。
プロセスのnice
レベルを設定します。
One of none
, linux
for the Linux::AIO manpage, or ioaio
for the IO::AIO manpage.
This controls how disk IO is done asynchronously. Highly recommended to use the Linux::AIO manpage or the IO::AIO manpage for webserving or reproxying files. For purely reverse proxy or only reproxying URLs, none is fine.
disk IOをしている子スレッドの数。Use between 2 and 50.
オブジェクトを追跡する開発者オプション
pidfileを書き込むファイル名(指定されない場合はpidfileはありません)。
サーバがクラッシュした場合にバックトレースを実行するかどうかを示す1または0。
プールに属性を設定します。単にプールが作られた場合は、プール名の指定は任意です。
ノードを自動読み込みするファイルを設定する(Perlbal は更新のために定期的にファイルをチェックするでしょう):
SET my_pool nodefile = /path/to/file
ノードを自動読み込みするファイルの設定を外します(これは現在のメンバーを削除しないことに注意してください):
SET my_pool nodefile = none
undef
, null
, "" および '' は単に none
と解釈されます。
手動で(POOL ADD または POOL REMOVEによって)プールを修正することはノードファイルの定期的なチェックを無効にするということに注意してください。
ロードバランシング メソッドの設定:
SET pool balance_method = 'random'
Yes, we do realize that random
is the only method currently available, but hey.
サービスに属性を設定します。サービスが単に作られた場合は、サーバ名の指定は任意です。
利用可能なパラメータのリストは、the Perlbal::Manual::LoadBalancer manpage, the Perlbal::Manual::ReverseProxy manpage および the Perlbal::Manual::WebServer manpage を見てください。
全てのサービスをリスト表示します:
show service
サービスの詳細を表示します:
show service my_service
Lists all pools, nodes and services using them:
show pool
プールのメンバーを表示します:
show pool my_pool
サーバをシャットダウンします(telnetセッションも失われるでしょう)。
全てのアクティブな接続をkillするために即座に使うことができます:
shutdown
パラメータ graceful
を使うことで、リスニングソケットは閉じられ、クライアントが抜けるまでperlbalは存在します。
shutdown graceful
プラグインをアンロードします。
unload AccessControl
その後の操作のための暗黙のサービスまたはプールを設定します。
例えば:
use my_pool
単にこう打ちます:
pool add 127.0.0.1:6000
サービスまたはプールの作成もまた暗黙のサービスを設定することに注意してください。
ロードされたXSモジュールの状態を表示します:
xs
既にロードされているXSモジュールを有効にします:
xs enable module_name
既にロードされている XS モジュールを無効にします:
xs disable module_name
the Perlbal::AIO manpage の状態を表示します。
バックエンドへの接続をリスト表示します。
backends 127.0.0.1:3080 1 127.0.0.1:3081 2
上の例では、3つの接続があります(それらは使われているか、connect_ahead
の値に応じて単純に開いています)。
各サービスの現在の設定を表示します。
サービスが dumpconfig
をサポートするプラグインを使う場合は、プラグインの設定もダンプされます(詳細は、 the Perlbal::Manual::Plugins manpage の下のdumpconfig
を見てください)。
ファイルディスクリプタの最大値と現在どれだけ使われているかを表示します。
fd max 1024 cur 8
the Devel::Gladiator manpage を必要とします。
Iterate's Perl's internal memory structures and can be used to enumerate all the currently live SVs.
これはリークの捜索とメモリ利用のプロファイルのために使うことができます。
利用可能なコマンドのリストを表示します。
Iterates over active objects.
引数が指定された場合は、$_
が付いているコードをオブジェクトのリファレンスであるかのように扱いいます。
リークしているかもしれないオブジェクトを表示します。
知られているmime typeをリスト表示します。
mime css text/css doc application/msword ...
特定のノードの情報をダンプします。
ノード 3 127.0.0.1:8181 attempts 10 127.0.0.1:8181 lastattempt 1290461126
Calling node
with a parameter is the same as calling nodes
.
全てのノードの情報をダンプします。
nodes 127.0.0.1:8181 attempts 10 127.0.0.1:8181 lastattempt 1290461126 127.0.0.1:8081 connects 19 127.0.0.1:8081 lastconnect 1290461127 127.0.0.1:8081 attempts 19 127.0.0.1:8081 responsecodes 200 11 127.0.0.1:8081 lastattempt 1290461127
各ノードがnoverifyと印をつけられてから経った時間を表示します。
verify_backend
パラメータがtrueに設定された場合、実際のクライアントのリクエストに送信する前に、perlbalは OPTIONS
コマンドをノードに送信しようとします。ノードがOPTIONS
コマンドをサポートしない場合は、60秒の間新しいリクエストにOPTIONS
コマンドが発行されないように、そのノードが内部ハッシュに追加されます。
noverify 127.0.0.1:8081 42
上の例では、ノード 127.0.0.1:8081 がリストにあり、 OPTIONS
コマンドが再び実行されるまでまだ42秒あります。
もし時間が負の値の場合は、次のリクエストの前にOPTIONS
コマンドが発行されるだろうということを意味します。
スコープ内のオブジェクトカウントを表示します。
環境変数 DEBUG_OBJ
はtrueに設定されていなければなりません ( the Perlbal::Manual::Configuration manpage の下の Environment Variables
を見てください)。
Shows pending backend connections by service, node, and age.
CPU使用率、現在の時間、pid、および実行中の総リクエストを表示します。
プロファイルデータのプロファイリングまたはダンプを有効/無効にします。
全ての有効なサービスについて、全てのキューの状態(通常、高優先度および低優先度)を表示します。
queues service_mywebsite-normal.age 1 service_mywebsite-normal.count 8 service_mywebsite-highpri.age 0 service_mywebsite-highpri.count 0 service_mywebsite-lowpri.age 0 service_mywebsite-lowpri.count 0
再読込みをサポートしているプラグインを再読込みします。
全てのソケットのリスト表示またはソケットのサマリを表示します(デフォルトでは全てのソケットをリスト表示します)
socks fd age 3 748s Perlbal::ClientManage(R): open to 85.245.86.253:52248 4 1003s Perlbal::TCPListener(R): open: listening on 82.102.30.112:80 for service 'ws' 6 1003s Perlbal::TCPListener(R): open: listening on 0.0.0.0:60000 for service 'mgmt'
ソケットのサマリ 1 Perlbal::ClientManage 2 Perlbal::TCPListener Aggregate write buffer: 0.0k Open files: 0
リクエストの最近の状態の変更をリスト表示します。
例えば、リクエストが処理されている時のこのコマンドを発行すると以下のようになります:
state changes Perlbal::ClientProxy=HASH(0x12d7ec28): reading_headers, wait_backend, backend_req_sent, wait_res Perlbal::BackendHTTP=HASH(0x12d75f30): connecting, bored, sending_req, wait_res wait_res 2
リクエストが処理された直後は以下のようになります:
state changes Perlbal::BackendHTTP=HASH(0x12d75f30): connecting, bored, sending_req, wait_res, xfer_res, closed closed 1
注意: この機能は環境変数 PERLBAL_TRACK_STATES
がtrueに設定されているかどうかに依存します。
全てのサービスについてどのタイプのどの状態のソケットが現在どれだけあるかを表示します。
states Perlbal::ClientProxy draining_res 1
サービスが指定された場合は、そのサービスについてのみ情報を表示します。
states ws Perlbal::BackendHTTP wait_res 1 Perlbal::ClientProxy wait_res 1
Dumps objects tracked, sorted by age.
track 15s Perlbal::HTTPHeaders=HASH(0x1a043a50): Perlbal::HTTPHeaders::clone, Perlbal::BackendHTTP::assign_client, Perlbal::Service::register_boredom, Perlbal::BackendHTTP::event_write, Danga::Socket::EpollEventLoop, (eval), Perlbal::run 15s Perlbal::HTTPHeaders=HASH(0x19594fe0): Perlbal::HTTPHeaders::new, Perlbal::Socket::read_headers, Perlbal::Socket::read_response_headers, Perlbal::BackendHTTP::event_read_waiting_options, Perlbal::BackendHTTP::event_read, Danga::Socket::EpollEventLoop, (eval), Perlbal::run 15s Perlbal::HTTPHeaders=HASH(0x1a043d80): Perlbal::HTTPHeaders::new, Perlbal::Socket::read_headers, Perlbal::Socket::read_response_headers, Perlbal::BackendHTTP::event_read, Danga::Socket::EpollEventLoop, (eval), Perlbal::run 15s Perlbal::BackendHTTP=HASH(0x1a044608): Perlbal::BackendHTTP::new, Perlbal::Service::spawn_backends, Perlbal::Service::note_bad_backend_connect, Perlbal::BackendHTTP::event_err, Danga::Socket::EpollEventLoop, (eval), Perlbal::run 15s Perlbal::BackendHTTP=HASH(0x1a042588): Perlbal::BackendHTTP::new, Perlbal::Service::spawn_backends, Perlbal::Service::note_bad_backend_connect, Perlbal::BackendHTTP::verify_failure, Perlbal::BackendHTTP::event_read_waiting_options, Perlbal::BackendHTTP::event_read, Danga::Socket::EpollEventLoop, (eval), Perlbal::run 15s Perlbal::BackendHTTP=HASH(0x1a044488): Perlbal::BackendHTTP::new, Perlbal::Service::spawn_backends, Perlbal::Service::request_backend_connection, Perlbal::ClientProxy::request_backend, Perlbal::ClientProxy::handle_request, Perlbal::ClientProxy::event_read, Danga::Socket::EpollEventLoop, (eval), Perlbal::run
これが動作するには、環境変数 DEBUG_OBJ
がtrueに設定され、サーバオプション track_obj
が on でなければなりません:
server track_obj = 1 OK
サーバが起動した時間、現在のuptime、およびPerlbalのバージョンを表示します。
内部データ構造のサイズを追跡するためのデバッグ管理コマンド。
varsize svc-ws-bored_backends [] 2 svc-ws-pending_connects {} 2 {127.0.0.1:3080} = {127.0.0.1:3081} = Perlbal::BackendHTTP=HASH(0x1cfd2490)
詳細モードを on または off にします。
verbose on load AccessControl OK verbose off load AccessControl verbose on OK load AccessControl OK
はい。詳細モードは load
のようなコマンドの完了時にOKメッセージの表示を有効にするだけです。verbose ステータスに関係なく、エラーは表示されます。
この機能はどのような認証も実装していないことに注意してください。指定したアドレスにtelnetできる場合は、その場で情報へのアクセスと変更をすることができます。
いくつかの認証の代替が一般的に採用されています:
the Perlbal::Manual::Configuration manpage, the Perlbal::Manual::Debugging manpage.