名前

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

Consulting information with a browser

ブラウザで管理サービス(この場合、127.0.0.1のポート16000)にアクセスすると、有効になっているサービスの情報のページが表示されます。それらのサービスをクリックすることもでき、それらの更なる情報を表示することができます。

telnetを使ったPerlbalの管理

管理サービスにtelnetすると、Perlbalのインスタンスを管理できる接続を取得することができます。

    $ telnet 127.0.0.1 16000
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.

これでいくつかのコマンドにアクセスすることができます(大文字小文字は区別されません):

管理コマンド

create pool <name>
create service <name>

プールまたはサービスを作成します。

    create pool my_new_pool
    create service my_new_service
disable <service>

サービスを無効にします(リスニングを停止します)。

    disable my_service

管理 サービスを停止できないことに注意してください。

enable <service>

サービスを有効にする(リスニングを開始します)。

    enable my_service
header <service> insert <header>:<value>
header <service> remove <header>

リクエストがバックエンドに渡される前にヘッダを挿入または削除します。

ヘッダを追加する場合は値を宣言する必要があります:

    header my_service insert x-myamazingheader:myamazingvalue

ヘッダを削除する場合は、何も値を必要としません。値を持っているかどうかに関係なくヘッダは削除されるでしょう。

    header my_service remove Connection

注意: ヘッダを x- で始める必要はありませんが、非標準のヘッダは x- を前につけるのが慣習です。

load <plugin>

Perlbal の プラグインをロードします。

    load AccessControl
プラグイン

プラグインのリスト

pool <name> add <ip[:port]>
pool <name> remove <ip[:port]>

サービスからノードを追加あるいは削除することができます。

    pool add my_service 127.0.0.1:1337
    pool remove my_service 127.0.0.1:1337

既存のノードを追加、あるいは存在しないノードを削除しても、エラーメッセージが無い事に注意してください。

また、ポート番号が省略された場合にはデフォルトの :80 になることに注意してください。

reproxy_state

reproxyステータスの状態をダンプします。

    reproxy_state
    SERVER max_reproxy_connections = 0
server <param> = <value>

サーバのパラメータを設定します。パラメータは以下のうちの一つです:

set [<pool_name>] <param> = <value>

プールに属性を設定します。単にプールが作られた場合は、プール名の指定は任意です。

ノードを自動読み込みするファイルを設定する(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.

set [<service_name>] <param> = <value>

サービスに属性を設定します。サービスが単に作られた場合は、サーバ名の指定は任意です。

利用可能なパラメータのリストは、the Perlbal::Manual::LoadBalancer manpage, the Perlbal::Manual::ReverseProxy manpage および the Perlbal::Manual::WebServer manpage を見てください。

show service [<service_name>]
show pool [<pool_name>]

全てのサービスをリスト表示します:

    show service

サービスの詳細を表示します:

    show service my_service

Lists all pools, nodes and services using them:

    show pool

プールのメンバーを表示します:

    show pool my_pool
shutdown [graceful]

サーバをシャットダウンします(telnetセッションも失われるでしょう)。

全てのアクティブな接続をkillするために即座に使うことができます:

    shutdown

パラメータ gracefulを使うことで、リスニングソケットは閉じられ、クライアントが抜けるまでperlbalは存在します。

    shutdown graceful
unload <plugin>

プラグインをアンロードします。

    unload AccessControl
use <service>
use <pool>

その後の操作のための暗黙のサービスまたはプールを設定します。

例えば:

    use my_pool

単にこう打ちます:

    pool add 127.0.0.1:6000

サービスまたはプールの作成もまた暗黙のサービスを設定することに注意してください。

xs
xs [enable <module>]
xs [disable <module>]

ロードされたXSモジュールの状態を表示します:

    xs

既にロードされているXSモジュールを有効にします:

    xs enable module_name

既にロードされている XS モジュールを無効にします:

    xs disable module_name

診断コマンド

aio

the Perlbal::AIO manpage の状態を表示します。

backends

バックエンドへの接続をリスト表示します。

    backends
    127.0.0.1:3080 1
    127.0.0.1:3081 2

上の例では、3つの接続があります(それらは使われているか、connect_aheadの値に応じて単純に開いています)。

dumpconfig

各サービスの現在の設定を表示します。

サービスが dumpconfig をサポートするプラグインを使う場合は、プラグインの設定もダンプされます(詳細は、 the Perlbal::Manual::Plugins manpage の下のdumpconfigを見てください)。

fd

ファイルディスクリプタの最大値と現在どれだけ使われているかを表示します。

    fd
    max 1024
    cur 8
gladiator

the Devel::Gladiator manpage を必要とします。

Iterate's Perl's internal memory structures and can be used to enumerate all the currently live SVs.

これはリークの捜索とメモリ利用のプロファイルのために使うことができます。

help

利用可能なコマンドのリストを表示します。

leaks
leaks <code>

Iterates over active objects.

引数が指定された場合は、$_が付いているコードをオブジェクトのリファレンスであるかのように扱いいます。

リークしているかもしれないオブジェクトを表示します。

mime

知られているmime typeをリスト表示します。

    mime
    css text/css
    doc application/msword
    ...
node <ip[:port]>

特定のノードの情報をダンプします。

    ノード 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

全てのノードの情報をダンプします。

    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

各ノードがnoverifyと印をつけられてから経った時間を表示します。

verify_backend パラメータがtrueに設定された場合、実際のクライアントのリクエストに送信する前に、perlbalは OPTIONS コマンドをノードに送信しようとします。ノードがOPTIONS コマンドをサポートしない場合は、60秒の間新しいリクエストにOPTIONSコマンドが発行されないように、そのノードが内部ハッシュに追加されます。

    noverify
    127.0.0.1:8081 42

上の例では、ノード 127.0.0.1:8081 がリストにあり、 OPTIONS コマンドが再び実行されるまでまだ42秒あります。

もし時間が負の値の場合は、次のリクエストの前にOPTIONS コマンドが発行されるだろうということを意味します。

obj

スコープ内のオブジェクトカウントを表示します。

環境変数 DEBUG_OBJ はtrueに設定されていなければなりません ( the Perlbal::Manual::Configuration manpage の下の Environment Variables を見てください)。

pending

Shows pending backend connections by service, node, and age.

proc

CPU使用率、現在の時間、pid、および実行中の総リクエストを表示します。

prof on
prof off
prof data

プロファイルデータのプロファイリングまたはダンプを有効/無効にします。

queues

全ての有効なサービスについて、全てのキューの状態(通常、高優先度および低優先度)を表示します。

    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
reload <plugin_name>

再読込みをサポートしているプラグインを再読込みします。

socks [all]
ソケットのサマリ

全てのソケットのリスト表示またはソケットのサマリを表示します(デフォルトでは全てのソケットをリスト表示します)

    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

リクエストの最近の状態の変更をリスト表示します。

例えば、リクエストが処理されている時のこのコマンドを発行すると以下のようになります:

    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
states <service>

全てのサービスについてどのタイプのどの状態のソケットが現在どれだけあるかを表示します。

    states
    Perlbal::ClientProxy draining_res 1

サービスが指定された場合は、そのサービスについてのみ情報を表示します。

    states ws
    Perlbal::BackendHTTP wait_res 1
    Perlbal::ClientProxy wait_res 1
track

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
バージョン

サーバが起動した時間、現在のuptime、およびPerlbalのバージョンを表示します。

varsize

内部データ構造のサイズを追跡するためのデバッグ管理コマンド。

    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)
verbose on
verbose off

詳細モードを 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.

TOP
inserted by FC2 system