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

はじめに

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: 元のワーカー構成を一覧表示します。 注意: ダンプには、起動時に使用された構成のみが含まれます。ステータスワーカー自体の動的管理インターフェースによって後から適用された変更は、このダンプには含まれません。dumpアクションは、バージョン1.2.27で追加されました。

出力フォーマット

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

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

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

HTMLビューには、HTMLのメタリフレッシュオプションを介して実装された自動リフレッシュ機能があります。自動リフレッシュを開始すると、UIは編集、更新、メンテナンスを除くすべてのアクションでそれを尊重します。これらのいずれかをナビゲートした場合でも、他のアクションのいずれかに戻るとすぐに自動リフレッシュが再開されます。

HTMLページの多くの部分は、必要がない場合は最小化できます。情報を折りたたむための「非表示」リンクがいくつかあります。この機能は、以下の情報ブロックに対して存在します。

  • 凡例: 「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ファイルで行われます。タイプステータスのmystatusという名前のワーカーを定義します.

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

以下のセクションで説明するように、ステータスワーカーは非常に強力です。Webサーバーの通常の認証および承認方法を使用して、このURLを保護する必要があります.

異なる名前と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」は、他のワーカーの構成または実行時ステータスを変更するために使用できるステータスワーカーのすべての機能を無効にします。読み取り専用のステータスワーカーは、編集、更新、リセット、またはリカバリのアクションへのアクセスを許可しません.デフォルト値はfalse、つまり読み取り/書き込みです。読み取り専用を有効にするには、trueに設定する必要があります.

2つのステータスワーカーを構成できます。1つは読み取り専用で、より大きな管理者グループが利用でき、もう1つはすべての機能を使用できますが、より少ない人数でのみ使用できます.

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に設定できます.その後、比較は大文字と小文字を区別せずに実行されます.

サービス可用性評価

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

分類は、ワーカーのアクティベーション状態(アクティブ、無効、または停止)に基づいています。これは純粋な構成状態であり、実行時状態(OKまたはERR。可能なサブ状態はアイドル、ビジー、リカバリ中、プローブ中、および強制リカバリ)は実行時の状況のみに依存します.

ランタイムサブ状態は、次の意味を持ちます.

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

デフォルトでは、ステータスワーカーは、アクティベーションが「アクティブ」で、ランタイム状態が「エラー」ではなく、サブステートが空であるすべてのメンバーを「良好」にグループ化します。「不良」グループは、アクティベーションが「停止」されているか、ランタイム状態が「エラー」でサブステートが空のメンバーで構成されます。

2つのグループのいずれにも該当しないワーカーは、「劣化」していると見なされます。

良好、不良、劣化へのグループ化について、他のルールを定義できます。2つの属性「good」と「bad」には、単一の文字またはドット区切りのペアのコンマ区切りリストを入力できます。各文字は、「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: lbワーカーのメンバーを非表示にする
  • 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: プリポストタイムアウト(数値)
  • vart: 応答タイムアウト(数値)
  • var: 再試行回数
  • varo: 回復オプション(数値)
  • vabl: ビジー制限(数値)
  • vamps: 最大パケットサイズ(数値)
ホスト名またはポートを変更しても、新しい接続に対してのみ有効になります。古いアドレスへの既存の接続は引き続き使用されます。それでも、この機能は興味深いものです。ポート「0」でロードバランサーメンバーをプロビジョニングできるため、起動時に自動的に停止します。後で最終的な名前とポートがわかれば、それらを設定でき、自動的にアクティブ化されます。

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

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

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

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

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