ステータスワーカーリファレンス

はじめに

Tomcatコネクタには、ステータスワーカーと呼ばれる特別な種類のワーカーがあります。ステータスワーカーは、リクエストをTomcatインスタンスに転送しません。代わりに、実行時にステータスと構成情報を取得し、さらに多くの構成項目を動的に変更することを可能にします。これは、シンプルな組み込みWebインターフェースを介して行うことができます。

ステータスワーカーは、ロードバランシングワーカーと組み合わせて使用すると特に強力です。

このドキュメントでは、ステータスワーカーのHTMLユーザーインターフェースについては説明しません。これまでは非常にシンプルなので、そのまま使用してください。このドキュメントでは、ステータスワーカーのあまり明らかでない機能について説明します。また、さまざまなリクエストパラメータとその意味についても完全に網羅し、自動化スクリプトにステータスワーカーを組み込めるようにします。

ステータスワーカーのドキュメントはjk 1.2.20から始まります。

使用パターン

アクション

ステータスワーカーは次のアクションを認識しています

  • list: 設定されているすべてのワーカーの構成とランタイム情報を一覧表示します。出力はまずグローバル情報(バージョンデータ)でグループ化され、次にロードバランサー情報、その後にAJPワーカー情報、最後に凡例が表示されます。ロードバランサーの場合、サマリー部分があり、その後に各メンバーワーカーの詳細が表示されます。すべてのワーカーについて、URLマッピング(転送定義)も含まれます。
  • show: listと同じですが、選択した1つのワーカーのデータのみを表示します。
  • edit: 選択したワーカーの構成データを編集するためのフォームを生成します。「edit」の特殊なサブタイプがあり、ロードバランサーのすべてのメンバーの1つの属性、たとえばアクティベーション状態を簡単に変更できます。
  • update: 編集フォームで行われた変更をコミットします。注意: 変更は構成ファイルには永続化されません。Webサーバーを再起動するとすぐに、ステータスワーカーを介して行われたすべての変更は失われます!一方、ステータスワーカーによって行われた変更は、Webサーバーを再起動することなく実行時に適用されます。
  • reset: ワーカーのすべてのランタイム統計をリセットします。
  • recover: エラー状態にあるロードバランサーのメンバーを、即時回復のためにマークします。
  • version: WebサーバーとJKソフトウェアのバージョン情報のみを表示します。
  • dump: 元のワーカー構成を一覧表示します。注意: このダンプには、起動時に使用された構成のみが含まれます。ステータスワーカー自身の動的管理インターフェースによって後で適用された変更は、このダンプには含まれません。ダンプアクションはバージョン1.2.27で追加されました。

出力フォーマット

ほとんどのアクションで、4つの出力フォーマットから選択できます。

  • HTML: ブラウザで対話的に使用します。
  • XML: スクリプト環境がXMLに対応している場合に、自動化に特に役立ちます。このフォーマットは豊富な構造情報を持っていますが、行ベースでは動作しないため、XMLツールと組み合わせて使用することをお勧めします。
  • Properties: このフォーマットは、Javaプロパティファイルのルールに準拠した行ベースのフォーマットです。ほとんどの構造情報は階層キーに含まれています。構成の性質を持つ情報については、workers.propertiesで使用できる行と非常によく似た行を生成するはずです。完全な構成ファイルを生成するわけではありません!
  • Text: シンプルなテキスト出力フォーマット。
「edit」アクションは、HTML出力タイプでのみ意味があります。

ユーザーインターフェースの機能

HTMLビューには、HTMLのmeta refreshオプションを介して実装された自動更新機能があります。自動更新を開始すると、UIはedit、update、maintainを除くすべてのアクションでそれを尊重します。これらのいずれかを介してナビゲートしても、他のアクションに戻るとすぐに自動更新が再び開始されます。

HTMLページには、興味のない部分を最小化できる箇所が多数あります。「Hide」リンクがいくつかあり、情報の一部を折りたたむことができます。この機能は、以下の情報ブロックに存在します。

  • 凡例: 「list」および「show」アクションで表示される情報の凡例を表示しません。
  • URIマッピング: ワーカーのURIマッピングを表示しません。
  • ロードバランシングワーカー: タイプ「lb」のワーカーを表示しません。
  • AJPワーカー: タイプajpのワーカーを表示しません。
  • バランサーメンバー: ロードバランサーの各メンバーに関する詳細情報を表示しません。
  • ロードバランサー構成: ロードバランサーの構成データを表示しません。
  • ロードバランサーサマリー: ロードバランサーのステータスサマリーを表示しません。
  • AJP構成: ajpワーカーのロードバランサーメンバーの構成データを表示しません。
最後の3つの最小化機能はバージョン1.2.27で追加されました。

URLマップと仮想ホストに関する特別な考慮事項

注意: 以下の制限はバージョン1.2.26以降で削除されました。

Apacheモジュールmod_jkは、仮想ホストに関するApache HTTP Serverの内部インフラストラクチャを利用しています。この欠点は、ステータスワーカーが定義されている仮想ホストのURLマップしか表示できないことです。他の仮想ホストの構成オブジェクトに到達することはできません。もちろん、使用している任意の仮想ホストでステータスワーカーを定義できます。URLマップ以外の表示されるすべての情報は、ステータスワーカーが呼び出された仮想ホストに関係なく同じになります。

ロギング

ステータスワーカーは、構成への変更をログレベル「info」で通常のJKログファイルに記録します。無効なリクエストはログレベル「warn」で記録されます。何か問題のある動作を報告したい場合は、ログファイルの内容を「debug」レベル、または「trace」レベルで取得すると役立ちます。

構成

基本構成

ステータスワーカーの基本構成は、通常のAJPワーカーの構成と非常によく似ています。ワーカーの名前と、それにマップしたいURLを指定する必要があります。構成の最初の部分はworkers.propertiesファイルで行われます。ここでは、タイプstatusのmystatusという名前のワーカーを定義します。

worker.list=mystatus
worker.mystatus.type=status
次に、このワーカーにマップされるURL、つまりステータスワーカーの機能に到達するために使用するURLを定義します。選択したWebサーバーでmod_jkがサポートする任意の方法を使用できます。uriworkermap.properties内のマップ、workers.propertiesの追加のmount属性、またはApache HTTP Server用のJkMountが可能です。uriworkermap.propertiesの行の例を次に示します。
/private/admin/mystatus=mystatus
URIパターンは大文字と小文字を区別します。

以下のセクションで学習するように、ステータスワーカーは非常に強力です。このURLを保護するために、Webサーバーの通常の認証および認可メソッドを使用する必要があります。

異なる名前とURLマッピングを使用して、ステータスワーカーの複数のインスタンスを定義することもできます。たとえば、それらを個別に構成し、特定のグループの人々に使用を許可したい場合があります。

出力のカスタマイズ

workers.propertiesエントリには、ステータスワーカーの出力のさまざまな側面をカスタマイズできるいくつかの属性があります。

属性cssは、スタイルシートのURLに設定できます。

worker.mystatus.css=/private/admin/static/mystatus.css
HTML出力を書き込む際、ステータスワーカーは以下の行を含めます。
<link rel="stylesheet" type="text/css" href="/private/admin/static/mystatus.css" />
mod_jkリリースにはサンプルスタイルシートは含まれておらず、デフォルトではcss属性は空であるため、ページにスタイルシート参照は含まれません。ステータスワーカーの出力ページのHTMLコードには、クラス属性は含まれていません。スタイルシートまたはHTMLレイアウトの改善に貢献したい場合は、tomcat開発者メーリングリストにご連絡ください。

プロパティ出力フォーマットは、属性prefixを介してカスタマイズできます。ステータスワーカーが出力するすべてのプロパティの名前は、このプレフィックスで始まります。デフォルトは「worker」です。

XML出力時にフォーマットに影響を与える属性がいくつかあります。属性nsを使用すると、すべてのステータスワーカー要素に使用される名前空間プレフィックスを設定できます。デフォルトは「jk:」です。「-」に設定すると、名前空間プレフィックスが無効になります。

xmlns属性を使用すると、プレフィックスを名前空間URLにマッピングできます。デフォルト値はxmlns:jk="https://tomcat.dokyumento.jp"です。「-」に設定すると、URLの出力が無効になります。

最後に、doctype属性を介してXMLドキュメントタイプを指定できます。指定された文字列は、XMLヘッダーの直後のドキュメントの冒頭に挿入されます。デフォルトは空です。

アクセスを保護する

選択したステータスワーカーのURLへのアクセスを制御するために、Webサーバーに組み込まれているアクセス制御機能を使用することを強くお勧めします。ただし、ステータスワーカーの2つの構成属性が役立ちます。「read_only」属性は、他のワーカーの構成や実行時ステータスを変更するために使用できるステータスワーカーのすべての機能を無効にします。read_onlyステータスワーカーは、edit、update、reset、またはrecoverアクションへのアクセスを許可しません。デフォルト値はfalse、つまり読み書き可能です。read_onlyを有効にするには、trueに設定する必要があります。

2つのステータスワーカーを構成できます。一方はread_onlyで、より大きな管理者グループに利用できるようにし、もう一方は全機能を利用できますが、少数の人々にのみ使用させることができます。

worker.list=jk-watch
worker.jk-watch.type=status
worker.jk-watch.read_only=true
worker.jk-watch.mount=/user/status/jk
worker.list=jk-manage
worker.jk-manage.type=status
worker.jk-manage.mount=/admin/status/jk
バージョン1.2.21以降、読み書き可能なステータスワーカーは、HTML GUIのリンクを介してユーザーによって一時的に読み取り専用モードに切り替えることもできます。ユーザーはいつでも読み書き可能に戻すことができます。「read_only」属性を介して読み取り専用として構成されたステータスワーカーのみが、いかなる変更の適用からも完全に安全です。

使用できるもう1つの属性はuserです。デフォルトではこのリストは空であり、ユーザーに制限がないことを意味します。userをカンマ区切りのユーザー名リストに設定できます。Webサーバーがリクエストとともにユーザー名を送信するように構成されている場合、ステータスワーカーは、リクエストに添付された名前がそのuserリストに含まれているかどうかをチェックします。

ユーザーリストは、「user」属性の複数の出現に分割することができます。

デフォルトでは、ユーザー名は大文字と小文字を区別して一致します。バージョン1.2.21以降、属性user_case_insensitivetrueに設定できます。そうすると、比較は大文字と小文字を区別しなくなります。

サービス可用性評価

ロードバランシングワーカーの場合、ステータスワーカーは興味深い概要情報を表示します。ロードバランサーのメンバーを「good」、「bad」、「degraded」のクラスに分類します。この機能は、外部エスカレーション手順と組み合わせることができます。グローバルなシステム設計と運用慣行によっては、好みの分類が異なる場合があります。

この分類は、ワーカーのアクティベーション状態(active、disabled、stopped)という純粋な構成状態と、実行時状況のみに依存する実行時状態(OKまたはERR、およびサブステートとしてのidle、busy、recovering、probing、forced recovery)に基づいています。

ランタイムのサブステータスは以下の意味を持ちます

  • OK (アイドル状態): このワーカーは、前回のバランサーメンテナンス以降、リクエストを受信していません。デフォルトでは、バランサーメンテナンスは60秒ごとに実行されます。ワーカーはOKであるはずですが、しばらく使用する必要がなかったため、確実ではありません。この状態はバージョン1.2.24以前はN/Aと呼ばれていました。
  • OK (ビジー): このワーカーのすべての接続がリクエストに使用されています。
  • ERROR (回復中): ワーカーはしばらくエラー状態にあり、現在回復のためにマークされています。このワーカーに適した次のリクエストがそれを使用します。
  • ERROR (プロービング中): ワーカーを回復状態に設定した後、このワーカーに適したリクエストを受信しました。このリクエストが現在ワーカーを使用しています。
  • ERROR (強制回復): ワーカーはエラー状態ですが、代替ワーカーがないため、引き続き使用します。

デフォルトでは、ステータスワーカーは、「active」のアクティベーションを持ち、サブステートが空の「error」ではないランタイム状態を持つすべてのメンバーを「good」にグループ化します。「bad」グループは、「stopped」のアクティベーションを持つか、サブステートが空の「error」のランタイム状態にあるメンバーで構成されます。

どちらのグループにも当てはまらないワーカーは「degraded」(劣化)と見なされます。

good、bad、degradedへのグループ化に対して、他のルールを定義できます。「good」と「bad」の2つの属性は、単一文字またはドット区切りのペアのカンマ区切りリストで設定できます。各文字は、「active」、「disabled」、「stopped」、「ok」、「idle」、「busy」、「recovering」、「error」のいずれかの可能な状態の最初の文字を表します。追加の状態「probing」と「forced recovery」は常に「recovering」と同等と評価されます。構成状態とランタイム状態をドットで結合する場合、カンマ区切りのエントリは論理「or」で結合されます。それらは論理「and」で結合されます。したがって、「good」のデフォルト値は「a.o,a.i,a.b,a.r」であり、「bad」のデフォルト値は「e,s」です。

ステータスワーカーは最初に「bad」定義との一致を試み、成功しない場合は「good」との一致を試み、最終的に「bad」または「good」のいずれも一致が見つからない場合は「degraded」を選択します。

リクエストパラメータ

このセクションは、JKステータス管理インターフェースに基づいた自動化スクリプトの構築に役立つはずです。このインターフェースは、将来的にさらにパラメータを追加することのみを想定しているという意味で安定しています。以前のバージョンからの既存のパラメータは、元のセマンティクスを維持します。また、出力フォーマットであるXML、Properties、およびTextも安定して保持されると予想しています。したがって、自動化スクリプトでステータスワーカーの出力を解析したい場合は、これらを使用してください。

アクション

アクションはパラメータcmdによって決定されます。値は「list」、「show」、「edit」、「update」、「reset」、「recover」、「version」、「dump」を取ることができます。cmdパラメータを省略した場合、デフォルトの「list」が使用されます。「list」、「refresh」、「version」、「dump」を除くすべてのアクションには、追加のパラメータが必要です。

アクション「dump」はバージョン1.2.27で追加されました。

出力フォーマット

フォーマットはパラメータmimeによって決定されます。値は「html」、「xml」、「txt」、「prop」を取ることができます。mimeパラメータを省略した場合、デフォルトの「html」が使用されます。アクション「edit」(編集フォーム)は「mime=html」の場合にのみ意味があります。

ワーカーの選択

単一のワーカーに対して操作するアクションは、そのワーカーを選択するために1つまたは2つの追加パラメータを必要とします。パラメータwには、ワーカーリストからのワーカー名が含まれます。アクションがロードバランサーのメンバー(サブワーカー)に対して操作する場合、パラメータwにはロードバランサーワーカーの名前が含まれ、追加パラメータswにはサブワーカーの名前が含まれます。

自動更新

自動更新中、パラメータreには更新間隔が秒単位で含まれます。このパラメータを省略すると、自動更新はオフになります。

非表示オプション

パラメータoptには、有効なオプションのビットマスクが含まれます。デフォルトは0であり、デフォルトではオプションは有効になっていません。以下のオプションが存在します

  • 0x0001: ロードバランサーワーカーのメンバーを非表示にする
  • 0x0002: URLマップを非表示にする
  • 0x0004: 凡例を非表示にする
  • 0x0008: ロードバランサーワーカーを非表示にする
  • 0x0010: AJPワーカーを非表示にする
  • 0x0020: 読み書き可能なステータスワーカーに対して読み取り専用アクションのみを許可する。
  • 0x0040: ロードバランサーの構成を非表示にする
  • 0x0080: ロードバランサーのステータス概要を非表示にする
  • 0x0100: AJPワーカーとロードバランサーメンバーワーカーの構成を非表示にする
値0x0040-0x0100はバージョン1.2.27で追加されました。

標準更新アクションのデータパラメータ

ワーカーの設定を変更するには、更新ボタンをクリックして編集アクションを使用できます。しかし、更新アクションに直接呼び出しを行うこともできます。以下のリクエストパラメータには、変更したい構成情報が含まれています。まず、ロードバランサーワーカーのリストです。

  • vlr: リトライ回数 (数値)
  • vlt: 回復時間 (秒)
  • vlee: エラーエスカレーション時間 (秒)
  • vlx: 最大応答タイムアウト数 (数値)
  • vls: スティッキーセッション (0/f/n/off=オフ, 1/t/y/on=オン; 大文字小文字を区別しない)
  • vlf: スティッキーセッション強制 (0/f/n/off=オフ, 1/t/y/on=オン; 大文字小文字を区別しない)
  • vlm: メソッド (0/r="リクエスト数", 1/t="トラフィック", 2/b="ビジー状態", 3/s="セッション数", 4/s="次へ"; 大文字小文字を区別せず、最初の文字のみが使用されます)
  • vll: ロック (0/o="楽観的", 1/p="悲観的"; 大文字小文字を区別せず、最初の文字のみが使用されます)
次に、ロードバランサーメンバーの設定を変更するために使用できるパラメータのリストです。
  • vwa: アクティベーションフラグ (0/a="アクティブ", 1/d="無効", 2/s="停止"; 大文字小文字を区別せず、最初の文字のみが使用されます)
  • vwf: ロードバランシング係数 (整数ウェイト)
  • vwn: スティッキーセッションで使用するルート (文字列)
  • vwr: 単純なフェイルオーバールールを定義するためのリダイレクト (文字列)
  • vwc: JKにレプリケーション設計を伝えるためのドメイン (文字列)
  • vwd: 優先順位を表す距離 (整数)
最後に、AJPワーカーとAJPロードバランサーメンバーの設定を変更するために使用できるパラメータのリストです。
  • vahst: ホスト (文字列)
  • vaprt: ポート (数値)
  • vacpt: コネクションプールタイムアウト (数値)
  • vact: 接続タイムアウト (数値)
  • vapt: prepostタイムアウト (数値)
  • vart: 応答タイムアウト (数値)
  • var: リトライ回数 (数値)
  • varo: 回復オプション (数値)
  • vabl: ビジー制限 (数値)
  • vamps: 最大パケットサイズ (数値)
ホスト名またはポートを変更しても、新しい接続にのみ適用されることに注意してください。すでに確立されている古いアドレスへの接続は引き続き使用されます。それにもかかわらず、この機能は興味深いです。なぜなら、ロードバランサーメンバーをポート「0」でプロビジョニングでき、起動時に自動的に停止されるからです。後で最終的な名前とポートがわかったら、それらを設定することができ、自動的にアクティブ化されます。

先頭の文字「v」はバージョン1.2.27でパラメータに追加されました。AJPワーカーの設定変更もバージョン1.2.27で導入されました。

すべてのパラメータの詳細については、workers.propertiesリファレンスを参照してください。

ロードバランサーメンバーのアスペクト編集

editアクションを使用すると、ロードバランサーまたはロードバランサーのメンバーのすべての設定をそれぞれ1ページで編集できます。ロードバランサーのすべてのメンバーに対して1つの構成側面を同時に編集したい場合は、パラメータattによってトリガーされます。パラメータの値は、編集したい側面を示します。リストは、前のセクションと同じですが、「vahst」と「vaprt」は除きます: 「vwa」、「vwf」、「vwn」、「vwr」、「vwc」、「vwd」、「vacpt」、「vact」、「vapt」、「vart」、「var」、「varo」、「vabl」、「vamps」。ただし、ここでは、リクエストパラメータ名として使用する代わりに、名前をパラメータattに入れる必要があります。

すべてのロードバランサーメンバーの共通アスペクトの値は、「val0」、「val1」、...という名前のパラメータで指定されます。