オープンソース・ソフトウェアの開発とダウンロード

UltraMonkey-L7 管理マニュアル(2.1.2-x 対応版)の表示

カテゴリ(タグ)ツリー

ファイル情報

カテゴリ(タグ)
UM-L7_2.1.2-x
ファイル名
uml7-administration_manual_2.1.2-2_ja
最終更新
2009-06-17 16:55
種類
Plain Text
作成者
J.Sugiura
概要
UltraMonkey-L7の管理マニュアル(2.1.2-x 対応版)です
言語
日本語
翻訳する
UltraMonkey-L7  管理者マニュアル  v2.3【v2.1.2-x対応版】

--------------------------------------------------------------------------------

[変更履歴]
2005.10.25 [v1.0]   初版
2005.11.15 [v1.1]   マニュアルの不備を修正
2006.03.02 [v1.2]   オプションの説明を追加
2006.07.07 [v1.3]   目次見直し及びkssl補足説明追加に伴う修正
2007.01.19 [v1.4]   追加機能に伴う修正
2007.02.19 [v1.4.1] l7directord の不具合修正に伴う URL パーシステンス部分の修正
2007.10.12 [v1.4.2] l7vs-0.6.1公開に伴う一部関連修正
2007.10.12 [v1.5]   l7vs-1.0.0公開に伴う一部関連修正(未実装分記述削除)
2008.1.6   [v1.6]   UM-L7 1.0.1-0 リリースに伴う,l7directord.cf サンプルの修正
2008.1.6   [v1.7]   sessionless プロトコルモジュールの設定例を追記
2008.4.13  [v1.8]   l7vsd-1.x-lilith-rc-1リリースに伴う修正
2008.5.30  [v1.9]   v2.0.0-xリリースに伴う修正
2008.12.17 [v2.0]   v2.1.0-0リリースに伴う修正
2009.01.27 [v2.1]   v2.1.1-0リリースに伴う修正(sslidモジュールのオプション記述
                    修正)
2009.03.17 [v2.2]   v2.1.2-0リリースに伴う修正(ipモジュールのオプション記述)
2009.06.17 [v2.3]   v2.1.2-2リリースに伴う修正(cinsert,cpassive,crewriteモジュ
                    ール関連の記述を削除)

--------------------------------------------------------------------------------

 1 前提条件
     1.1 フレームワーク部について
     1.2 プロトコル処理部について
     1.3 スケジュール部について
     1.4 制御コマンド部について
     1.5 リアルサーバ監視処理部について
 2 l7vsadm コマンドの説明
     2.1 コマンド概要
     2.2 コマンド一覧
     2.3 コマンド書式一覧
     2.4 各コマンド説明
     2.5 ProtocolModule オプション説明
 3 l7vsadm 設定例
     3.1 Sessionless モジュールの設定例
     3.2 IP モジュールの設定例
     3.3 SSL Session ID モジュールの設定例
     3.4 URL パーシステンスモジュールの設定例
     3.5 パケットフィルタモジュールの設定例
 4 サーバ監視設定ツールの説明
     4.1 設定ファイル(l7directord.cf)の説明
     4.2 l7directord.cf の設定項目
     4.3 サンプル
 5 Replication 機能
     5.1 Replication 機能の説明
 6 UltraMonkey-L7 設定ファイルの説明
     6.1 設定ファイル(l7vs.cf)の説明
     6.2 l7vs.cf のサンプルの説明

--------------------------------------------------------------------------------

 1 前提条件
     UltraMonkey-L7 とは、Linux 上で動作する Layer7 負荷分散ソフトウェアです。

     次のような機能部から構成されています。

 1.1 フレームワーク部について
     Layer7 の情報に基づいた負荷分散の基盤となる機能部です。

     これにProtocolModuleを組み合わせることにより、各種プロトコルに対応した負荷
     分散を実現します。

 1.2 プロトコル処理部について
     各種プロトコルに対する Layer7 負荷分散の振り分け条件を決定する機能部です。

     プロトコル処理部としては、以下のProtocolModuleがあります。Client パケットを
     待たずに RealServer が先行して応答するプロトコル (SMTP, FTP等) で振り分けを
     行う場合は、sessionless または ip モジュールを使う必要があります。

     ・sessionless
       RealServer への振り分けをスケジュール部に任せ UltraMonkey-L7 では何も行わ
       ない Sessionless モジュール。
     ・ip
       Client の IP アドレスを元に RealServer への振り分けを行うモジュール。
     ・sslid
       RealServer 側で付与された SSL Session ID を UltraMonkey-L7 で管理すること
       でセッション管理をする SSL Session ID モジュール
     ・url
       特定の URL 文字列を含むリクエストを一意の RealServer に振り分けする URL
       パーシステンスモジュール
     ・pfilter
       特定の文字列を含むリクエストからの通信を遮断するパケットフィルタリン
       グモジュール

     ※ その他の ProtocolModule として、以下のモジュールがありますが、現在移植中
        のため使用できません。
     ・chash
       RealServer で cookie 情報を付与し UltraMonkey-L7 で cookie 情報の一部を管
       理することでセッション管理をする Cookie パーシステンス hash モジュール
     ・urla
       HTTPレスポンスのボディ部の URL 情報よりセッション管理をする URL パーシス
       テンス Active モジュール

 1.3 スケジュール部について
     VirtualService から RealServer に対し、負荷分散による振り分けの重み条件を決
     定する機能部です。

     スケジューリング方式としては、以下の方式があり、対応する ScheduleModule を
     指定することで最適なスケジュール方式を選択できます。

     ・rr
       利用可能な RealServer に対して、均等にリクエストを割り当てるラウンドロビ
       ン方式
     ・wrr
       RealServer 毎に設定された負荷値により、クライアントからのリクエストを割り
       当てる重み付け振り分け方式
     ・lc
       接続中のコネクションが最も少ない RealServer に対してリクエストを割り当て
       る最小コネクション方式

 1.4 制御コマンド部について
     フレームワーク部に対して VirtualService の生成・削除や振り分け先サーバの設
     定、UltraMonkey-L7 の機能制御等を行うためのコマンドを提供します。

 1.5 リアルサーバ監視処理部について
     リアルサーバの監視を行うための機能部です。制御コマンド部を介して各種設定を
     行う機能も提供します。(詳細は 4 を参照)

--------------------------------------------------------------------------------

 2 l7vsadm コマンドの説明

 2.1 コマンド概要
     l7vsadm コマンドは、以下の基本書式で実行します。

     [基本書式]
     l7vsadm -制御種別オプション [-パラメータオプション 設定値] ...

     l7vsadm のコマンドオプションには、どのような設定、制御を行うか指定する制御
     種別オプションと、制御種別対応の設定内容を指定するパラメータオプションがあ
     ります。

     さらに、パラメータオプションには、フレームワークに対して各種設定、制御を行
     うためのオプション以外に、各 ProtocolModule ごとの各種設定を行うための
     ProtocolModule オプションがあります。
     (ProtocolModule オプションの詳細は、2.5 を参照)

 2.2 コマンド一覧
     l7vsadm コマンドで実行可能なコマンドの一覧を以下に示します。

     (1) List 表示コマンド (詳細は 2.4.1 を参照)
         フレームワークの各種情報 (VirtualService、RealServer の登録情報など) の
         内容を表示するコマンド

     (2) VirtualService 設定コマンド (詳細は 2.4.2 を参照)
         指定した VirtualService の追加、削除、および指定した VirtualService に
         設定されているパラメータを変更するコマンドおよび、登録されている全ての
         VirtualService を一括削除するコマンド

     (3) RealServer 設定コマンド (詳細は 2.4.3 を参照)
         指定した VirtualService に対する RealServer の追加、削除、および指定し
         た RealServer に設定されているパラメータを変更するコマンド

     (4) Replication 機能制御コマンド  (詳細は 2.4.4 を参照)
         Replication 機能に関する各種制御 (Replication 機能の開始/停止、強制的に
         即時 Replicate 実行、Replication データのダンプ)を行うコマンド

     (5) ログ機能制御コマンド (詳細は 2.4.5 を参照)
         ログ機能に関する各種制御 (負荷分散プロセス動作ログレベルの変更) を行う
         コマンド

     (6) SNMPAgent 制御コマンド(※) (詳細は 2.4.6 を参照)
         SNMPAgent に関する各種制御 (SNMPAgent 動作ログレベルの変更) を行うコマ
         ンド

     (7) パラメータ管理機能制御コマンド (詳細は2.4.7 を参照)
         パラメータ管理機能に関する各種制御 (設定パラメータの再読み込み) を行う
         コマンド

     (8) Help表示コマンド (詳細は 2.4.8 を参照)
         コマンドの書式、および使用方法を表示するコマンド

    (※) 上記のコマンドのうち、(6) のコマンドは未実装のため使用できません。

 2.3 コマンド書式一覧
    l7vsadm コマンドで実行可能なコマンドの書式一覧を以下に示します。
    (各オプションの説明、使用方法の詳細は 2.4 を参照)

      l7vsadm -A|E -t service-address -m proto-module [module-args]
              [-s scheduler] [-u connection-count] [-b sorry-server]
              [-f sorry-flag] [-Q QoSval-service] [-q QoSval-clients]
      l7vsadm -D -t service-address -m proto-module [module-args]
      l7vsadm -C
      l7vsadm -a|e -t service-address -m proto-module [module-args]
              -r server-address [-w weight]
      l7vsadm -d -t service-address -m proto-module [module-args]
              -r server-address
      l7vsadm -R -s replication-switch
      l7vsadm -R -f
      l7vsadm -R -d
      l7vsadm -L -c log-category -l log-level
  (※)l7vsadm -S -c log-category -l log-level
      l7vsadm -P -r reload-parameter
      l7vsadm -l [-n]
      l7vsadm -V [-n]
      l7vsadm -K [-n]
      l7vsadm -h

     (※) 上記の書式のうち、以下の書式は未実装のため使用できません。
      l7vsadm -S -c log-category -l log-level

 2.4 各コマンド説明
     以下に各コマンドの書式、オプション説明、使用方法を示します。

     指定必須パラメータオプションは、該当する書式で指定する必要があるオプション
     であり、指定可能パラメータオプションは、該当する書式で指定でき、省略も可能
     なオプションであることを示します。
     また、各オプションの括弧内の記述は long 表現のオプションになります。

     2.4.1 List表示コマンド
         ・書式
           l7vsadm -l [-n]
           l7vsadm -K [-n]
           l7vsadm -V [-n]

         ・制御種別オプション(必須)
           -l(--list)    :設定情報のlistを表示する。
           -K(--key)     :key情報を含む設定情報のlistを表示する。
           -V(--verbose) :設定情報の詳細listを表示する。

         ・指定必須パラメータオプション
           なし

         ・指定可能パラメータオプション
           -n(--numeric) :Endpoint(IP-Address:port) の名前解決を行わないで表示
                           する。

         ・説明
           List表示コマンドの各オプションにより出力される情報は以下のとおり。

           1) -l 指定時
              ・Version情報          [UltraMonkey-L7 の Version]
              ・VirtualService 情報  [Protocol、VirtualService の Endpoint、
                                      ProtocolModule 名、ScheduleModule 名]
              ・RealServer 情報      [RealServer の Endpoint、Schedulerの
                                      weight、サーバ接続数情報]

           2) -K 指定時
              ・Version情報          [UltraMonkey-L7 の Version]
              ・VirtualService 情報  [Protocol、VirtualService の Endpoint、
                                      ScheduleModule 名、再 scheduleフラグ、
                                      ProtocolModule キー文字列]
              ・RealServer 情報      [RealServer の Endpoint、ScheduleModule の
                                      weight、サーバ接続数情報]

           3) -V 指定時
              ・Version情報          [UltraMonkey-L7 の Version]
              ・Log情報              [負荷分散プロセスの Log カテゴリ、 Log カテ
                                      ゴリの動作 Log-Level]
              ・Replication 情報      [Replication 機能状態(モード)]
              ・SNMP情報             [SNMPAgent の Connection 状態]
              ・SNMP Log情報         [SNMPAgent の Log カテゴリ、Log カテゴリの
                                      動作 Log-Level]
              ・VirtualService 情報  [Protocol、VirtualService の Endpoint、
                                      ProtocolModule 名、ScheduleModule 名、再
                                      schedule フラグ、ProtocolModule オプション
                                      文字列]
                                     [SorryServer の Endpoint、接続上限値、Sorry
                                      フラグ](※)
                                     [上り QoS 値 (bps)、下り QoS 値 (bps)、
                                      service スループット値(bps)]
                                     (※) SorryServer の Endpoint が未設定時は 
                                          none と表記される。
              ・RealServer 情報      [RealServer の Endpoint、ScheduleModule の
                                      weight、サーバ接続数情報]

     2.4.2 VirtualService 設定コマンド
         1) VirtualService の追加
            ・書式
              l7vsadm -A -t service-address -m protocol-module [module-args]
              [-s schedule-module] [-u connection-count] [-b sorry-server] 
              [-f sorry-flag] [-Q up-stream-QoS-bps] [-q down-stream-QoS-bps]

            ・制御種別オプション(必須)
              -A(--add-service) :VirtualService を追加する。

            ・指定必須パラメータオプション
              -t(--tcp-service) :VirtualService の Endpoint を指定する。
                                  (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module):ProtocolModule 名を指定する。
                                  (例:-m sessionless, -m url)
                                  ProtocolModule 名に続いて ProtocolModule オプ
                                  ション (module-args) を指定することができる。
                                  (例:-m sessionless --forwarded-for)
                                  指定できる ProtocolModule、および
                                  ProtocolModule オプションの詳細は、2.5 を参照

            ・指定可能パラメータオプション
              -s(--scheduler)   :ScheduleModule 名を指定する。
                                  (例:-s rr, -s lc, -s wrr)
                                  指定できる ScheduleModule は rr(RoundRobin),
                                  wrr(WeightedRoundRobin), lc(LeastConnection)
                                  指定しない場合のデフォルトは rr となる。
              -u(--upper)       :VirtualService への接続数の上限値を設定する。
                                  上限値を超えた接続は SorryServer 接続となる。
                                  設定可能な範囲は、0~100000 の整数値で、指定
                                  しない場合のデフォルト値は 0(上限なし、
                                  SorryServer 接続しない)となる。
              -b(--bypass)      :SorryServer の Endpoint を指定する。
                                  (例:-t sorry01:http, -t 10.10.0.1:80)
                                  0.0.0.0:0 を指定した場合、SorryServer の 
                                  Endpoint をクリアすることができる。
              -f(--flag)        :Sorry 状態設定フラグを設定する。
                                  設定可能な値は、0 または 1 で、1 を指定すると
                                  Sorry 状態となり、0 を指定すると Sorry 状態解
                                  除となる。
                                  指定しない場合のデフォルト値は 0 (Sorry 状態解
                                  除) となる。
              -Q(--qos-up)      :Client から VirtualService に対する帯域制限値
                                  を bps で設定する。
                                  設定可能な範囲は、0~999 の整数値 + 単位(最大
                                  999K, 999M, 999G) で、指定しない場合のデフォル
                                  ト値は 0 (制限なし) となる。
                                  単位には、K(キロ)、M(メガ)、G(ギガ)を指定
                                  する必要がある。
              -q(--qos-down)    :RealServer から VirtualService に対する帯域制
                                  限値を設定する。
                                  設定可能な範囲は、0~999 の整数値 + 単位(最大
                                  999K, 999M, 999G) で、指定しない場合のデフォル
                                  ト値は 0 (制限なし) となる。
                                  単位には、K(キロ)、M(メガ)、G(ギガ)を指定
                                  する必要がある。

            ・説明
              -t, -m で指定した VirtualService を新たに登録する。
              指定されなかった指定可能パラメータオプションは初期値に設定される。

              指定できるスケジューラの特徴は以下のとおり。
              rr  - Round Robin(ラウンドロビン): 
                    利用可能な実サーバに対して均等にリクエストを割り当てる。
              wrr - Weighted Round Robin(重み付けラウンドロビン): 
                    利用可能な実サーバに対して重み付けに従って、リクエストを割り
                    当てる。重み付けは、-w オプションで指定。
              lc  - Least-Connection(最少コネクション) : 
                    接続中のコネクションが最も少ないリアルサーバに対して、リクエ
                    ストを割り当てる。

              SorryServer 関連の設定については、以下の注意が必要。
                  ・VirtualService がサービス提供不可状態(Sorry 状態)となった
                    場合に回避するためのサーバの Endpoint を設定する。

              サービス提供不可状態(Sorry 状態)には以下の3つがある。
                  ・-u オプションで指定したコネクション数を超えた場合
                  ・接続可能な RealServer が存在しない場合
                  ・-f オプションで明示的に Sorry 状態に設定された場合

         (※) Sorry 状態で Sorry サーバに切り替わった場合、ディレクトリ指定され
              ているとSorryサーバに当該ディレクトリが無いため、
              "404 Not Found"となる。
              これを避けるには、Sorry サーバ側で Apache の mod_rewrite などで
              URI を書き換え、どんなリクエストが来ても index.html を表示するよう
              な設定を行う必要がある

         2) VirtualService の削除
            ・書式
              l7vsadm -D -t service-address -m proto-module [module-args]
              
            ・制御種別オプション(必須)
              -D(--delete-service) :指定した VirtualService を削除する。
              
            ・指定必須パラメータオプション
              -t(--tcp-service)  :VirtualService の Endpoint を指定する。
                                   (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module) :ProtocolModule 名を指定する。
                                   (例:-m sessionless, -m url)
                                   ProtocolModule 名に続いて ProtocolModule オプ
                                   ション (module-args) を指定することができる。
                                   (例:-m sessionless --forwarded-for)
                                   指定できる ProtocolModule、および
                                   ProtocolModule オプションの詳細は、2.5 を参照

            ・指定可能パラメータオプション
              なし

            ・説明
              -t, -m で指定した VirtualService を削除する。
              登録時に ProtocolModule オプション (module-args) を指定した場合は
              指定が必要。

         3) VirtualService の一括削除
            ・書式
              l7vsadm -C

            ・制御種別オプション(必須)
              -C(--flush)         :登録されているすべての VirtualService を一括
                                    削除する。

            ・指定必須パラメータオプション
              なし

            ・指定可能パラメータオプション
              なし

            ・説明
              登録されている全 VirtualService が削除される。

         4) VirtualService の変更
            ・書式
              l7vsadm -E -t service-address -m protocol-module [module-args]
              [-s schedule-module] [-u connection-count] [-b sorry-server]
              [-f sorry-flag] [-Q up-stream-QoS-bps] [-q down-stream-QoS-bps]

            ・制御種別オプション(必須)
              -E(--edit-service)   :指定した VirtualService の設定情報を変更す
                                     る。

            ・指定必須パラメータオプション
              以下のパラメータは変更前の VirtualService を特定するために指定し、
              これらのパラメータの変更は変更コマンドでは出来ないため、変更する
              場合は削除コマンド、追加コマンドで行う必要がある。
              
              -t(--tcp-service)  :VirtualService の Endpoint を指定する。
                                     (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module) :ProtocolModule 名を指定する。
                                   (例:-m sessionless, -m url)
                                   ProtocolModule 名に続いて ProtocolModule オプ
                                   ション (module-args) を指定することができる。
                                   (例:-m sessionless --forwarded-for)
                                   指定できる ProtocolModule、および
                                   ProtocolModule オプションの詳細は、2.5を参照

            ・指定可能パラメータオプション
              以下が変更可能なパラメータである。
              
            ・指定可能パラメータオプション
              -s(--scheduler)   :ScheduleModule 名を指定する。
                                  (例:-s rr, -s lc, -s wrr)
                                  指定できる ScheduleModule は rr(RoundRobin),
                                  wrr(WeightedRoundRobin), lc(LeastConnection)。
                                  指定しない場合のデフォルトはrrとなる。
              -u(--upper)       :VirtualService への接続数の上限値を設定する。
                                  上限値を超えた接続はSorryServer接続となる。
                                  設定可能な範囲は、0~100000 の整数値で、指定し
                                  ない場合のデフォルト値は 0(上限なし、
                                  SorryServer 接続しない)となる。
              -b(--bypass)      :SorryServer の Endpoint を指定する。
                                  (例:-t sorry01:http, -t 10.10.0.1:80)
                                  0.0.0.0:0 を指定した場合、SorryServer の 
                                  Endpoint をクリアすることができる。
              -f(--flag)        :Sorry 状態設定フラグを設定する。
                                  設定可能な値は、0 または 1 で、1 を指定すると
                                  Sorry 状態となり、0 を指定すると Sorry 状態解
                                  除となる。
                                  指定しない場合のデフォルト値は 0 (Sorry 状態解
                                  除) となる。
              -Q(--qos-up)      :Client から VirtualService に対する帯域制限値
                                  を bps で設定する。
                                  設定可能な範囲は、0~999 の整数値 + 単位(最大
                                  999K, 999M, 999G) で、指定しない場合のデフォル
                                  ト値は 0 (制限なし) となる。
                                  単位には、K(キロ)、M(メガ)、G(ギガ)を指定
                                  する必要がある。
              -q(--qos-down)    :RealServer から VirtualService に対する帯域制
                                  限値を設定する。
                                  設定可能な範囲は、0~999 の整数値 + 単位(最大
                                  999K, 999M, 999G) で、指定しない場合のデフォル
                                  ト値は 0 (制限なし) となる。
                                  単位には、K(キロ)、M(メガ)、G(ギガ)を指定
                                  する必要がある。

            ・説明
              -t, -m で指定した VirtualService の設定情報を指定可能パラメータオ
              プションで指定した値に変更する。
              指定必須パラメータオプションの値を変更することはできない。
              登録時に ProtocolModule オプション (module-args) を指定した場合は
              指定が必要。
              指定されなかった指定可能パラメータオプションの値は変更されない。

              指定できるスケジューラの特徴は以下のとおり。
              rr  - Round Robin(ラウンドロビン): 
                    利用可能な実サーバに対して均等にリクエストを割り当てる。
              wrr - Weighted Round Robin(重み付けラウンドロビン): 
                    利用可能な実サーバに対して重み付けに従って、リクエストを割り
                    当てる。重み付けは、-w オプションで指定。
              lc  - Least-Connection(最少コネクション) : 
                    接続中のコネクションが最も少ないリアルサーバに対して、リクエ
                    ストを割り当てる。

              SorryServer 関連の設定については、以下の注意が必要。
                  ・VirtualService がサービス提供不可状態(Sorry 状態)となった
                    場合に回避するためのサーバの Endpoint を設定する。

              サービス提供不可状態(Sorry 状態)には以下の3つがある。
                  ・-u オプションで指定したコネクション数を超えた場合
                  ・接続可能な RealServer が存在しない場合
                  ・-f オプションで明示的に Sorry 状態に設定された場合

         (※) Sorry 状態で Sorry サーバに切り替わった場合、ディレクトリ指定され
              ているとSorryサーバに当該ディレクトリが無いため、
              "404 Not Found"となる。
              これを避けるには、Sorry サーバ側で Apache の mod_rewrite などで
              URI を書き換え、どんなリクエストが来ても index.html を表示するよう
              な設定を行う必要がある


     2.4.3 RealServer 設定コマンド
         1) RealServer の追加
            ・書式
              l7vsadm -a -t service-address -m proto-module [module-args] -r
              server-address [-w weight]

            ・制御種別オプション(必須)
              -a(--add-server)   :指定した VirtualService に RealServer を追加
                                   する。

            ・指定必須パラメータオプション
              -t(--tcp-service)  :VirtualService の Endpoint を指定する。
                                   (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module) :ProtocolModule 名を指定する。
                                   (例:-m sessionless, -m url)
                                   ProtocolModule 名に続いて ProtocolModule オプ
                                   ション (module-args) を指定することができる。
                                   (例:-m sessionless --forwarded-for)
                                   指定できる ProtocolModule、および
                                   ProtocolModule オプションの詳細は、2.5 を参照
              -r(--real-server)  :追加する RealServer の Endpoint を指定する。
                                   (例:-t real01:http, -t 10.10.0.1:80)

            ・指定可能パラメータオプション
              -w(--weight)       :RealServer への振り分けに使用する weight 値を
                                   設定する。
                                   設定可能な範囲は、0~100 の整数値で、指定しな
                                   い場合のデフォルト値は 1(振り分け可)となる。
                                   0 を指定した場合は、振り分け不可となる。

            ・説明
              -t, -m で指定した VirtualService に -r で指定した RealServer を新
              たに登録する。
              ProtocolModule オプション (module-args) が指定されている
              VirtualService に追加する場合は指定が必要。
              指定されなかった指定可能パラメータオプションは初期値に設定される。

         2) RealServer の削除
            ・書式
              l7vsadm -d -t service-address -m proto-module [module-args] -r
              server-address

            ・制御種別オプション(必須)
              -d(--delete-server):指定した VirtualService から RealServer を削
                                   除する。

            ・指定必須パラメータオプション
              -t(--tcp-service)  :VirtualService の Endpoint を指定する。
                                   (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module) :ProtocolModule 名を指定する。
                                   (例:-m sessionless, -m url)
                                   ProtocolModule 名に続いて ProtocolModule オプ
                                   ション (module-args) を指定することができる。
                                   (例:-m sessionless --forwarded-for)
                                   指定できる ProtocolModule、および
                                   ProtocolModule オプションの詳細は、2.5を参照
              -r(--real-server)  :追加する RealServer の Endpoint を指定する。
                                   (例:-t real01:http, -t 10.10.0.1:80)

            ・指定可能パラメータオプション
              なし

            ・説明
              -t, -m で指定した VirtualService から -r で指定した RealServer を
              削除する。
              ProtocolModule オプション (module-args) が指定されている
              VirtualService から削除する場合は指定が必要。

         3) RealServer の変更
            ・書式
              l7vsadm -e -t service-address -m proto-module [module-args] -r
              server-address [-w weight]

            ・制御種別オプション(必須)
              -e(--edit-server)  :指定した VirtualService の RealServer 情報を
                                   変更する。

            ・指定必須パラメータオプション
              -t(--tcp-service)  :VirtualService の Endpoint を指定する。
                                   (例:-t service01:http, -t 10.10.0.1:80)
              -m(--proto-module) :ProtocolModule 名を指定する。
                                   (例:-m sessionless, -m url)
                                   ProtocolModule 名に続いて ProtocolModule オプ
                                   ション (module-args) を指定することができる。
                                   (例:-m sessionless --forwarded-for)
                                   指定できる ProtocolModule、および
                                   ProtocolModule オプションの詳細は、2.5 を参照
              -r(--real-server)  :追加する RealServer の Endpoint を指定する。
                                   (例:-t real01:http, -t 10.10.0.1:80)

            ・指定可能パラメータオプション
              -w(--weight)       :RealServer への振り分けに使用する weight 値を
                                   設定する。
                                   設定可能な範囲は、0~100 の整数値で、指定しな
                                   い場合のデフォルト値は 1(振り分け可)となる。
                                   0 を指定した場合は、振り分け不可となる。

            ・説明
              -t, -m で指定した VirtualService に登録されている -r で指定した
              RealServer の設定情報を指定可能パラメータオプションで指定した値に
              変更する。
              指定必須パラメータオプションの値を変更することはできない。
              ProtocolModule オプション (module-args) が指定されている
              VirtualService の RealServer 情報を変更する場合は指定が必要。
              指定されなかった指定可能パラメータオプションは変更されない。

     2.4.4 Replication 機能制御コマンド
            ・書式
              l7vsadm -R -s replication-switch
              l7vsadm -R -f
              l7vsadm -R -d

            ・制御種別オプション(必須)
              -R(--replication) :Replication 機能の制御コマンドを実行する。

            ・指定必須パラメータオプション
              -s(--switch)      :Replication 機能の開始/停止を指定する。
                                  start を指定すると Replication 機能開始となり
                                  stop を指定すると Replication 機能停止となる。
              -f(--force)       :データを強制即時レプリケーションする。
              -d(--dump)        :Replication データのダンプを実行する。

            ・指定可能パラメータオプション
              なし

            ・説明
              Replication 機能の各種制御(Replication 機能の開始/停止、強制的に
              即時レプリケーション、Replication データのダンプ)を行う。

     2.4.5 ログ機能制御コマンド
            ・書式
              l7vsadm -L -c log-category -l log-level

            ・制御種別オプション(必須)
              -L(--log)      :ログ機能の制御コマンドを実行する。

            ・指定必須パラメータオプション
              -c(--category) :l7vsd の出力ログレベルを変更する場合に、変更する
                               l7vsd のログカテゴリ文字列を指定する。
                               指定できるログカテゴリは、以下の説明を参照のこと
                               all を指定した場合は、全ログカテゴリのログレベル
                               が一括して変更される。
              -l(--level)    :負荷分散プロセスの出力ログを指定した動作ログレベ
                               ルに変更する。
                               指定できるログレベルは、fatal, error, warn, info,
                               debug の 5 種類。

            ・指定可能パラメータオプション
              なし

            ・説明
              ログ機能の各種制御(負荷分散プロセス動作ログレベルの変更)を行う。
              ログカテゴリ文字列は省略形の文字列で指定することも可能である。
              ログカテゴリ文字列の一覧を以下に示す。

              指定可能ログカテゴリ文字列      (省略形)
              l7vsd_network                   (nw)
              l7vsd_network.bandwidth         (nw.bw)
              l7vsd_network.num_connection    (nw.conn)
              l7vsd_network.qos               (nw.qos)
              l7vsd_virtual_service           (vs)
              l7vsd_real_server               (rs)
              l7vsd_sorry_server              (sorry)
              l7vsd_real_server.balancing     (rs.bal)
              l7vsd_replication               (rep)
              l7vsd_start_stop                (stastp)
              l7vsd_system                    (sys)
              l7vsd_system.memory             (sys.mem)
              l7vsd_system.socket             (sys.sock)
              l7vsd_system.signal             (sys.sig)
              l7vsd_environment               (env)
              l7vsd_environment.parameter     (env.para)
              l7vsd_logger                    (logger)
              l7vsd_parameter                 (para)
              l7vsd_event                     (event)
              l7vsd_schedule                  (sched)
              l7vsd_program                   (prog)
              l7vsd_protocol                  (prot)
              l7vsd_module                    (mod)
              all                             (省略形なし)

     2.4.6 SNMPAgent制御コマンド
        ★ 本コマンドは現在未実装のため使用できません。

            ・書式
              l7vsadm -S -c log-category -l log-level

            ・制御種別オプション(必須)
              -S(--snmp)     :SNMPAgentの制御コマンドを実行する。

            ・指定必須パラメータオプション
              -c(--category) :SNMPAgent の出力ログレベルを変更する場合に、変更
                               する SNMPAgent のログカテゴリ文字列を指定する。
                               指定できるログカテゴリは、以下の説明を参照のこと
                               allを指定した場合は、全ログカテゴリのログレベルが
                               一括して変更される。
              -l(--level)    :負荷分散プロセスの出力ログを指定した動作ログレベ
                               ルに変更する。
                               指定できるログレベルは、fatal, error, warn, info,
                               debug の 5 種類。

            ・指定可能パラメータオプション
              なし

            ・説明
              SNMPAgent の各種制御(SNMPAgent 動作ログレベルの変更)を行う。
              ログカテゴリ文字列は省略形の文字列で指定することも可能である。
              ログカテゴリ文字列の一覧を以下に示す。

              指定可能ログカテゴリ文字列    (省略形)
              snmpagent_start_stop          (snmp_stastp)
              snmpagent_manager_receive     (snmp_mngrcv)
              snmpagent_manager_send        (snmp_mngsnd)
              snmpagent_l7vsd_receive       (snmp_vsdrcv)
              snmpagent_l7vsd_send          (snmp_vsdsnd)
              snmpagent_logger              (snmp_logger)
              snmpagent_parameter           (snmp_para)
              all                           (省略形なし)

     2.4.7 パラメータ管理機能制御コマンド
            ・書式
              l7vsadm -P -r reload-parameter

            ・制御種別オプション(必須)
              -P(--parameter) :パラメータ管理機能の制御コマンドを実行する。

            ・指定必須パラメータオプション
              -r(--reload)    :指定した設定パラメータを再読み込みし、設定を反映
                                する。
                                指定できる設定パラメータ文字列は、replication,
                                logger, snmpagent があり all を指定した場合は、
                                全ての種類の設定パラメータが再読み込みされ、反映
                                される。

            ・指定可能パラメータオプション
              なし

            ・説明
              パラメータ管理機能の各種制御(設定パラメータの再読み込み)を行う。
              再読み込みで指定できる設定パラメータは、Replication 機能の設定
              (replication)、ログ機能の設定 (logger)、SNMPAgent の設定
              (snmpagent) である。
              これ以外の設定パラメータも指定可能だが、将来の拡張用として用意して
              あるため、指定しても何も起こらない。
              指定できる設定パラメータ文字列の一覧を以下に示す。

              指定可能パラメータ設定文字列
              all
              l7vsd           (指定可能だが未対応)
              iomux           (指定可能だが未対応)
              lsock           (指定可能だが未対応)
              conn            (指定可能だが未対応)
              dest            (指定可能だが未対応)
              service         (指定可能だが未対応)
              module          (指定可能だが未対応)
              replication
              logger
              l7vsadm         (指定可能だが無効)
              snmpagent

     2.4.8 Help 表示コマンド
            ・書式
              l7vsadm -h

            ・制御種別オプション(必須)
              -h(--help) :コマンドの使用方法を表示する。

            ・指定必須パラメータオプション
              なし

            ・指定可能パラメータオプション
              なし

            ・説明
              コマンド書式、および各オプションの説明が表示される。


 2.5 ProtocolModule オプション説明
     ProtocolModule オプションは、各 ProtocolModule のセッション管理方法に対応し
     た設定であり、オプションの指定方法は、各 ProtocolModule によって異なるが、
     基本的な書式は以下のようにななります。

     [基本書式]
     --moudule-option module-args

     以下に各 ProtocolModule オプションのオプション説明、使用方法を示します。
     また、各オプションの括弧内の記述は省略表現のオプションになります。

     (1) Session less モジュールオプション
         RealServer への振り分けをスケジュール部に任せ UltraMonkey-L7 では何も行
         わないモジュール
         (UltraMonkey-L4 とほぼ同等の動作をするモジュール)

         --forwarded-for(-F)
             Client の IP アドレスを X-Forwarded-For ヘッダフィールドに挿入する
             よう指示する。
             デフォルト(指定しない場合の)動作は挿入しない。

     (2) IP モジュールオプション
         Client の IP アドレスを元に RealServer への振り分けを行うモジュール

         --forwarded-for(-F)
             Client の IP アドレスを X-Forwarded-For ヘッダフィールドに挿入する
             よう指示する。
             デフォルト(指定しない場合の)動作は挿入しない。

         --reschedule(-R)
             セッション維持失敗時に再スケジュールを行うよう指定する。
             指定しない場合のデフォルトは--no-rescheduleとなる。

         --no-reschedule(-N)
             セッション維持失敗時に再スケジュールを行なわないよう指定する。

     (3) SSL Session IDモジュール(sslid)オプション
         RealServer 側で付与された SSL Session ID を UltraMonkey-L7 で管理するこ
         とでセッション管理をするモジュールです。

         --timeout(-T) 数値
             UltraMonkey-L7 2.1.0-0 まで使用されていたオプションであり、
             互換性確保のために留置してある。
             指定しても効果はない。

         --maxlist(-M) 数値
             UltraMonkey-L7 でセッション情報 (SSL Session ID) を管理しておくリス
             ト数を設定する。
             設定可能な範囲は、0~INT_MAX の整数値でで、指定しない場合のデフォル
             ト値は 1024 となる。
             0 を指定した場合、リスト数はデフォルト値の 1024 となる。

         --reschedule(-R)
             セッション維持失敗時に再スケジュールを行うよう指定する。
             指定しない場合のデフォルトは --no-reschedule となる。

         --no-reschedule(-N)
             セッション維持失敗時に再スケジュールを行なわないよう指定する。

     (4) URL Persistence モジュール(url)オプション
         特定の URL に関して、一意のリアルサーバへの通信するために使用するモジュ
         ールです。

         --pattern-match(-P) 文字列 (※obsolete - 非推奨オプション)
             リクエストを一意の RealServer に送信するための特定の URL 文字列を設
             定する。
             127 文字以内の英数字を設定する。
             シェルのワイルドカード ( * は 0 文字以上の任意の文字と一致し、? は
             任意の 1 文字と一致) も使用可能。
             ここで指定した文字列が HTTP リクエストヘッダの URI 部分、もしくは
             Host フィールド部分に含まれているかがチェックされる。
             (例: --pattern-match '/index.html')

         --uri-pattern-match(-U) 文字列
             リクエストを一意の RealServer に送信するための特定の URL 文字列を設
             定する。
             32 文字以内の英数字を設定する。正規表現(※)が使用可能。
             ここで指定した文字列が HTTP リクエストヘッダの URI 部分に含まれてい
             るかがチェックされる。
             (例: --uri-pattern-match '^(?:http://[^/]+)?/images/.*jpg$')

         --host-pattern-match(-H) 文字列
             リクエストを一意の RealServer に送信するための特定の URL 文字列を設
             定する。
             32 文字以内の英数字を設定する。正規表現(※)が使用可能。
             ここで指定した文字列が Host フィールド部分に含まれているかがチェッ
             クされる。
             (例: --host-pattern-match '^[^.]+\.example\.com$')

         --forwarded-for(-F)
             Client の IP アドレスを X-Forwarded-For ヘッダフィールドに挿入する
             よう指示する。
             デフォルト(指定しない場合の)動作は挿入しない。

     (5) パケットフィルタモジュール(pfilter)オプション
         特定の文字列を含むリクエストからの通信を遮断するパケットフィルタリング
         モジュール

         --pattern-match(-P) 文字列
             遮断するパケット文字列を設定する。
             127 文字以内の英数字を設定する。正規表現(※)が使用可能。
             ここで指定した文字列が Client パケットに含まれているかがチェックさ
             れる。
             (例: --pattern-match '^POST')

         --read-byte(-R) 数値
             Client パケットの先頭何バイトをチェックするかを指定する。
             省略した場合のデフォルト値は 1024 となる。
             (例: --read-byte 100)

         ※ 0.6.0 以前では別の VirtualService にかぶせて使うことができたが、現在
            のバージョンでは、pfilter に RealServer をセットして、フィルタされな
            かった場合にスケジューラに従って RealServer に振り分けされる。

     (※) 正規表現について
          記述可能な正規表現は Perl の正規表現になります。
          また、拡張行アンカーマッチモード(複数行モード)とドット全マッチモード(
          単一行モード)が有効になっています。
          
          1) 拡張行アンカーマッチモード
            "^" が文字列先頭だけでなく行頭にもマッチします
            "$" が文字列末尾だけでなく行末にもマッチします
            
            例: 正規表現 ^abcdefg$
                abcdefg                       マッチする
                abcdefgh                      マッチしない
                abcdefg\nhijklmn              マッチする
                567890\nabcdefg\nhijklmn      マッチする
            
            (参考)
               '\A', '\z' を使うことで文字列先頭、文字列末尾のみにマッチさせるこ
               とができます。正規表現 \Aabcdefg\z は abcdefg にのみマッチし
               ます。

          2) ドット全マッチモード
            "." は通常改行文字にはマッチしませんが、このモードでは改行文字もマッ
            チします。
            
            例: 正規表現 \A.*\z
                abcdefg                       マッチする
                abcdefg\r\nhijklmn            マッチする

          (補足)
            モード修飾子を使うことで、上記のモードの変更や大文字小文字の無視など
            を行うことが出来ます。
            
            例: 正規表現 (?-m)^GET            拡張行アンカーマッチモード無効
                GET                           マッチする
                HEAD...\nGET...               マッチしない

            例: 正規表現 (?-s)/.*png          ドット全マッチモード無効
                /icons/folder.png             マッチする
                /index.html\r\n\r\n...png     マッチしない

            例: 正規表現 (?i)abcdef           大文字と小文字を区別しない
                ABCDEF                        マッチする
                AbCdEf                        マッチする

            その他の詳細な正規表現については、Perl の正規表現マニュアルなどを、
            ご参照ください。(perldoc perlre, perldoc perlreref など)

--------------------------------------------------------------------------------

 3 l7vsadm 設定例
     各ProtocolModuleに対する設定例を以下に示します。

 3.1 Sessionless モジュールの設定例
     Sessionless モジュールの使用には必須オプションはありません。

     # l7vsadm -A -t 192.168.8.100:80 -m sessionless -s rr
     # l7vsadm -a -t 192.168.8.100:80 -m sessionless -r 192.168.16.11:80
     # l7vsadm -a -t 192.168.8.100:80 -m sessionless -r 192.168.16.12:80

     以上の設定にて、指定してあるスケジューラに従って 各 RealServer へ振分けを行
     います。

 3.2 IP モジュールの設定例
     IP モジュールの使用には必須オプションはありません。

     # l7vsadm -A -t 192.168.8.100:80 -m ip -s rr
     # l7vsadm -a -t 192.168.8.100:80 -m ip -r 192.168.16.11:80
     # l7vsadm -a -t 192.168.8.100:80 -m ip -r 192.168.16.12:80

     以上の設定にて、Client の IP アドレスに従って 各 RealServer へ振分けを行い
     ます。

 3.3 SSL Session ID モジュールの設定例
     SSL Session ID モジュールは、SSL Session ID を管理する期間と管理するリスト
     数を指定する設定となります。

     # l7vsadm -A -t 192.168.8.100:80 -m sslid --timeout 7200 --maxlist 512 \
       -s rr
     # l7vsadm -a -t 192.168.8.100:80 -m sslid -r 192.168.16.11:80
     # l7vsadm -a -t 192.168.8.100:80 -m sslid -r 192.168.16.12:80

     以上の設定にて、512 個の SSL Session ID を 2 時間管理します。
     2 時間以内に 512 個以上の異なる SSL Session ID でリクエストが送られてきた場
     合は、最も古い SSL Session ID が破棄されます。

 3.4 URL パーシステンスモジュールの設定例
     URL モジュールは、HTTP リクエストヘッダの URI 部分、および Host フィールド
     部分に指定した文字列が存在する場合に、指定されたスケジューラに従ってサーバ
     へ振り分けるという設定となります。
     URL モジュールは、必須オプションが 3 種類あり、どれかひとつ以上を設定する必
     要があります。--pattern-match は URI, Host の両方を検索し、シェルのワイルド
     カードが利用できますが、後の 2 つのオプションを使うことを推奨します。
     --uri-pattern-match は URI のみを検索し、正規表現を利用することができます。
     --host-pattern-match は Host のみを検索し、正規表現を利用することができます。

     # l7vsadm -A -t 192.168.8.100:80 -m url --uri-pattern-match '\A/js/' -s rr
     # l7vsadm -a -t 192.168.8.100:80 -m url --uri-pattern-match '\A/js/' \
       -r 192.168.16.11:80

     以上の設定にて、リクエスト URI が /js/ で始まる場合は、 RealServer 
     192.168.16.11 に振り分けます。

     # l7vsadm -A -t 192.168.8.100:80 -m url \
       --host-pattern-match '^([^.]+)\.example\.com$' -s rr
     # l7vsadm -A -t 192.168.8.100:80 -m url \
       --host-pattern-match '^([^.]+)\.example\.com$' -r 192.168.16.11:80
     # l7vsadm -A -t 192.168.8.100:80 -m url \
       --host-pattern-match '^([^.]+)\.example\.com$' -r 192.168.16.12:80

     以上の設定にて、Host ヘッダフィールドに (任意).example.com という文字列が存
     在した場合は、指定してあるスケジューラに従って RealServer 192.168.16.11,
     192.168.16.12 に振り分けます。Apache の VirtualHost と似た動きになります。

 3.5 パケットフィルタモジュールの設定例
     パケットフィルタモジュールは、Client パケットに指定した文字列が含まれる場合
     接続を切断し、含まれない場合はスケジューラに従って振り分けを行います。

     # l7vsadm -A -t 192.168.8.100:80 -m pfilter \
       --pattern-match '\A(?!(?:GET|HEAD))' -s rr
     # l7vsadm -a -t 192.168.8.100:80 -m pfilter \
       --pattern-match '\A(?!(?:GET|HEAD))' -r 192.168.16.11:80
     # l7vsadm -a -t 192.168.8.100:80 -m pfilter \
       --pattern-match '\A(?!(?:GET|HEAD))' -r 192.168.16.12:80

     以上の設定にて、GET, HEAD メソッドのリクエストを RealServer 192.168.16.11,
     192.168.16.12 に振り分け、それ以外の POST メソッドなどのリクエストは切断さ
     れます。

--------------------------------------------------------------------------------

 4 サーバ監視設定ツールの説明

 4.1 設定ファイル(l7directord.cf)の説明
     UltraMonkey-L7 は、2 で示したコマンドベースによる設定方法と l7directord に
     よる設定ファイルを使用した設定方法があります。
     ここでは l7directord の設定ファイルである l7directord.cf の説明を行います。
     各パラメータは、UltraMonkey (L4) の ldirectord を流用しているため、本マニュ
     アルで説明するパラメータ以外の l7directord の設定に関しては、ldirectord 自
     体を参照願います。
     (参照URL: http://ultramonkey.jp/2.0.1/topologies/hc-ha-lb-eg.html)

 4.2 l7directord.cf の設定項目
     設定ファイルのサンプルは /etc/ha.d/conf/l7directord.cf.sample にインストー
     ルされます。環境にあわせて編集後、/etc/ha.d/conf/l7directord.cf または、
     /etc/ha.d/l7directord.cf に保存し、l7directord を起動すれば、振り分け設定が
     l7vsd に反映されます。
     
     4.2.1 全体設定
           設定ファイルの行頭に設定項目名が書かれているものは、全体に関与する設
           定項目で、全ての VirtualService に対して効果を持ちます。
           VirtualService によって設定を変えたい場合は、一部の設定項目のみ後述の
           VirtualService 毎の設定で上書きすることが可能です。

     4.2.1.1 RealServer 監視設定
             RealServer の監視に関する時間や回数に関する設定

           (1) checktimeout (省略時: 5)
               Ping 監視、ポート監視で、この設定秒数未満で正常な応答が得られない
               場合は、監視失敗として監視失敗回数を 1 増加させます。

           (2) negotiatetimeout (省略時: 5)
               サービス監視で、この設定秒数未満で正常な応答が得られない場合は、
               監視失敗として監視失敗回数を 1 増加させます。

           (3) checkinterval (省略時: 10)
               この設定秒数間隔で監視を実施します。

           (4) retryinterval (省略時: 5)
               監視失敗時は、この設定秒数間隔で監視を実施します。checkinterval
               以下の秒数を設定することで、異常検知にかかる時間を短縮できます。

           (5) checkcount (省略時: 3)
               監視失敗回数が、この設定回数に達した場合に、対象サーバを異常と判
               断し、l7vsd から切り離します。

             サーバ異常と判断するまでの時間について例を挙げる

               checktimeout=5 (もしくは negotiatetimeout=5)
               retryinterval=1
               checkcount=3

             上記の設定でサーバに異常があり、監視が常にタイムアウトするとすると
             最初の監視が始まり、5 秒後にタイムアウト(失敗 1 回目)、1 秒間待って
             次の監視が始まり、5 秒後にタイムアウト(失敗 2 回目)、1 秒間待って、
             次の監視が始まり、5 秒後にタイムアウト(失敗 3 回目)して、サーバ異常
             と判断されて振り分けから除外される。つまり、監視開始から 17 秒後に
             サーバ異常となる。(5 + 1 + 5 + 1 + 5 = 17)
             ただし、ここで示した秒数は全てタイムアウトした場合であるため、異常
             と判断されるまでの最大の秒数となっており、例えばサービス監視でサー
             ビスを提供するプロセスがダウンしていた場合は、特定ポートへの接続に
             失敗するため、監視開始後、瞬時に失敗と判断される。そのため、上記の
             例だと約 2 秒後に 3 回監視失敗となり、サーバ異常と判断される。
             (0 + 1 + 0 + 1 + 0 = 2)
             
             サーバ異常後、監視に成功した場合は、自動的に l7vsd の振り分け対象に
             追加される。

     4.2.1.2 ログ出力設定
             l7directord のログ出力に関する設定

           (1) logfile (省略時: /var/log/l7vs/l7directord.log)
               l7directord のログ出力先を指定します。絶対パスで記述 (先頭が /) 
               した場合は、そのファイルに出力され、それ以外の場合は syslog に出
               力されます。syslog に出力される場合、設定値がファシリティとなりま
               す。
               (例: logfile = /var/log/l7vs/l7directord.log, logfile = local0)
               
           (2) supervised
               この設定を行った場合、l7directord プロセスがデーモンとならずに動
               作し、ログを標準出力、標準エラーに出力する。
               設定項目のうち supervised のみ後ろに値を取らず (= 1 などはいらな
               い) supervised と記述するだけでよい。
               この設定は外部ツールとして daemontools でデーモン監視をする際に有
               効です。

     4.2.1.3 RealServer 異常時の設定
             監視異常の際の挙動に関する設定

           (1) quiescent (省略時: yes)
               RealServer 異常時は l7vsd の振り分けから除外されますが、その除外
               の仕方に関する設定です。この設定を有効にした場合、異常と判断され
               た RealServer は l7vsd から削除されずに、重み (weight) が 0 に設
               定されることで、振り分け対象から外されます。無効の場合は、l7vsd
               から削除されます。
               
           (2) fallback
               VirtualService に属する RealServer が全て異常となり、どの
               RealServer にも振り分けられなくなった場合に、自動的に追加される
               代替 RealServer の設定です。IP アドレスとポート番号を指定します。
               この設定により追加された fallback サーバは、RealServer が回復して
               正常に振り分けができるようになった際に自動的に削除されます。
               (例: fallback = 127.0.0.1:80)
           
     4.2.1.4 設定ファイルの監視設定
             設定ファイルの変更を監視する設定
             l7directord は設定ファイルを定期的に監視し、変更が起きた場合にいく
             つかの動作を起こすことが出来ます。設定ファイルの監視では、設定ファ
             イルの MD5 チェックサムが変化した場合に、中身が変更されたと判断して
             おり、ファイルの更新時間だけが変化した場合などは無視されます。

           (1) configinterval (省略時: 10)
               設定ファイルの変更を監視する秒間隔を指定します。
               (例: configinterval = 5)

           (2) autoreload (省略時: no)
               設定ファイルが変更されたことを検知した場合に、その変更後の内容を
               プロセスに反映するかどうかを設定します。
               
           (3) callback
               この設定に、絶対パスで実行可能なファイルを指定すると、設定ファイ
               ルの変更を検知した際に、設定ファイルを引数として実行します。この
               設定は autoreload 設定とは関係なく、autoreload が no の場合も実行
               されます。


     4.2.2 VirtualService 毎の設定
           virtual 行以降で、先頭にインデントが置かれて設定項目名が書かれている
           ものは、その virtual に関してのみ作用する設定です。
     
     4.2.2.1 VirtualService の定義
     
           (1) virtual
               VirtualService の IP アドレスとポート番号を指定する。
               この設定項目のみ行頭に書く必要がある
               (例: virtual = 192.168.0.2:80)
               
           (2) module (省略時: sessionless)
               VirtualService に設定するプロトコルモジュールと必要であれば、その
               オプションを指定する。現在設定可能なプロトコルモジュールは以下の
               3 つ。
                   url, sessionless, sslid
               (例: module = sessionless --forwarded-for)

           (3) scheduler (省略時: rr)
               VirtualService に設定するスケジュールモジュールを指定する。現在指
               定可能なスケジュールモジュールは以下の 3 つ。
                   rr, wrr, lc
               (例: scheduler = lc)
               
           (4) sorryserver
               VirtualService が sorry 状態になった際に振り分けられる Sorry サー
               バの IP アドレス、ポート番号を指定する
               (例: sorryserver = 192.168.1.101:80)
               
           (5) maxconn (省略時: 0)
               VirtualService あたりの最大同時接続数を指定する。これを超える接続
               があった場合は、Sorry サーバに振り分けられる。0 を指定した場合は
               制限無しとなる。
               (例: maxconn = 1000)
               
           (6) qosup (省略時: 0)
               VirtualService あたりの許容スループット(上り方向)を指定する。こ
               の設定を超えるスループットになる場合は、パケットの転送が遅延され
               る。0 を指定した場合は、制限なしとなる。
               (例: qosup = 200K)

           (7) qosdown (省略時: 0)
               VirtualService あたりの許容スループット(下り方向)を指定する。こ
               の設定を超えるスループットになる場合は、パケットの転送が遅延され
               る。0 を指定した場合は、制限なしとなる。
               (例: qosdown = 100M)

     4.2.2.2 RealServer の定義と監視設定
     
           (1) real
               RealServer の IP アドレスとポート番号を指定する。オプションとして
               転送モード、重み (weight)、後述の request, receive を RealServer
               毎、個別に設定できる。なお、転送モードは masq (マスカレード) のみ
               指定可能です。また、IP アドレスは -> を挟んで範囲指定することも出
               来ます。
               (例: real = 192.168.0.11:80,
                    real = 192.168.0.11:80 masq 100 index.html 'Test Page',
                    real = 192.168.0.11->192.168.0.15:80)

           (2) checkport
               RealServer の監視を行う際に、real で指定したポート番号と、別の
               ポートに監視リクエストを送る場合に、ポート番号を設定します。
           
           (3) checktype (省略時: negotiate)
               RealServer の監視方法を指定します。以下の 6 種類から選択します。
                   negotiate : サービス監視を行う
                   connect   : ポート監視を行う
                   ping      : Ping 監視を行う
                   数値      : サービス監視とポート監視を併用する
                   custom    : カスタム監視を行う
                   off       : 監視せずに、常にサーバ異常と判断する
                   on        : 監視せずに、常にサーバ正常と判断する
               negotiate の場合は後述の設定を行う必要があります。数値の場合は、
               設定した数値回数のポート監視と 1 回のサービス監視を繰り返します。
               サービス監視による負荷が大きい場合に有効です。custom の場合は後述
               の customcheck 設定を行う必要があります。

           (4) service (省略時: none)
               サービス監視時の監視サービスを指定します。以下の 13 種類から選択
               します。
               
               1) http
                  HTTP で接続し、ドキュメントルートにリクエスト送信、レスポンス
                  確認を行います。レスポンスコードが 4xx, 5xx の場合は監視失敗と
                  判断されます。後述の request, receive, httpmethod, virtualhost
                  をオプションとして設定可能。
                  
               2) https
                  HTTPS で接続し監視します。他は http と同一。
                  
               3) smtp
                  SMTP で接続し、サーバが正常な SMTP 応答を返すことを確認する。
                  
               4) pop
                  POP3 で接続し、サーバが正常な POP3 応答を返すことを確認する。
                  後述の login, passwd をオプションとして設定可能。
                  
               5) imap
                  IMAP で接続し、サーバが正常な IMAP 応答を返すことを確認する。
                  後述の login, passwd をオプションとして設定可能。
                  
               6) ftp
                  FTP で接続し、login, passwd で設定した値でログインできることを
                  確認する。後述の request, receive をオプションとして設定可能。
                  
               7) ldap
                  LDAP で接続し、サーバが正常な LDAP 応答を返すことを確認する。
                  後述の request, receive をオプションとして設定可能。
                  
               8) dns
                  DNS サーバに接続し、名前解決が正常に行えることを確認する。後述
                  の request, receive を設定する必要がある。
                  
               9) nntp
                  NNTP で接続し、サーバが正常な NNTP 応答 (ステータスコード 2xx)
                  を返すことを確認する。
                  
              10) pgsql
                  指定した PostgreSQL データベース (database 項目で指定) に接続
                  できることを確認する。後述の request, receive をオプションとし
                  て設定可能。
                  
              11) mysql
                  指定した MySQL データベース (database 項目で指定) に接続できる
                  ことを確認する。後述の request, receive をオプションとして設定
                  可能。
                  
              12) sip
                  SIP サーバに接続し、指定した Call ID で正常な応答 (ステータス
                  コード 200) を返すことを確認する。後述の login も参照。
                  
              13) none
                  何も行わず、サーバ正常と判断する。
                  
           (5) request
               以下のように service の設定によって、動作が異なる。
               
               i) http, https
                  監視用の URL を http://~ で指定、または URI で指定する。指定
                  した場合は、その URL を取得するリクエスト (GET または HEAD) を
                  送信する。URI の場合、先頭の / はつけてもつけなくてもかまわな
                  い。
                  (例: request = http://192.168.0.2/foo/bar/index.html,
                       request = /doc/manual.html,
                       request = favicon.ico)
                  
               ii) ftp
                  監視用のファイルを指定する。FTP 監視ではログイン後 / に移動す
                  るため、/ からの相対パスとして記述しても、絶対パスとして記述し
                  てもよい。指定した場合は、そのファイルが GET できるか確認され
                  る。
                  (例: request = /etc/passwd,
                       request = etc/hosts)
                  
               iii) ldap
                  LDAP で検索する際の BaseDN を指定する。指定した場合は、BaseDN
                  をスコープ base、フィルタ (objectClass=*) で検索し、見つかるこ
                  とを確認する。
                  (例: request = dc=my-domain,dc=com)
                  
               iv) dns
                  DNS で名前解決する際のリクエストを指定する。指定したリクエスト
                  を正引き、または逆引きできるかを確認する。後述の receive も設
                  定する必要がある。
                  (例: request = www.example.com,
                       request = 127.0.0.1)
                  
               v) pgsql, mysql
                  データベース接続後に送信するクエリーを指定する。結果が 0 行の
                  場合、監視失敗と判断される。
                  (例: request = 'select * from test',
                       request = 'insert into test values (1)',
                       request = 'delete from test where test = 1')
                  
           (6) receive
               以下のように service の設定によって、動作が異なる。いずれも
               request の設定が必須である。
               
               i) http, https
                  取得した URL のデータ内に、ここで指定する文字列が存在するかが
                  確認される。常に Perl の正規表現で確認されるため、'.' などの文
                  字は注意する必要がある。
                  (例: receive = "DOCTYPE HTML PUBLIC",
                       receive = "2009\.[01][0-9]\.[0-3][0-9]")
               
               ii) ftp
                  取得したファイルのデータ内に、ここで指定する文字列が存在するか
                  が確認される。常に Perl の正規表現で確認されるため、'.' などの
                  文字は注意する必要がある。
                  (例: receive = "root.*\/bin\/bash",
                       receive = "127\.0\.0\.1")
               
               iii) ldap
                  LDAP の検索結果に、ここで指定する文字列が存在するかが確認され
                  る。常に Perl の正規表現で確認されるため、'.' などの文字は注意
                  する必要がある。
                  (例: receive = 'dc=my-domain,dc=com',
                       receive = '^dc=[^,]+,dc=[^,]+$')
               
               iv) dns
                  DNS で request に設定した値を名前解決した結果を指定します。
                  (例: receive = '192.168.0.101',
                       receive = 'localhost')
               
               v) pgsql, mysql
                  request で指定したクエリーを処理した結果の行数を 1 以上で指定
                  します。
                  (例: receive = 1)
               
           (7) login
               service によって若干動作が異なる。
               
               i) pop, imap, ftp, pgsql, mysql
                  ログイン名として使われる。passwd の設定も必要。
                  (例: login = postgres)
                  
               ii) sip
                  Call ID として使われる。
               
           (8) passwd
               service が pop, imap, ftp, pgsql, mysql の際にログインのパスワー
               ドとして使われる。
               (例: passwd = password)
               
           (9) httpmethod (省略時: GET)
               service が http, https の際に送信するリクエストのメソッドを指定し
               ます。GET または HEAD が指定できます。
               (例: httpmethod = HEAD)
               
           (10) virtualhost
               service が http, https の際に送信するリクエストの Host フィールド
               を指定します。
               (例: virtualhost = www.example.net)
               
           (11) database
               service が pgsql, mysql の際に、接続するデータベース名を指定しま
               す。
               (例: database = template1)

           (12) realdowncallback
               RealServer の異常を検知した際に、実行するファイルを指定します。指
               定された場合、異常サーバの IP アドレスを引数としてファイルが実行
               されます。
               (例: realdowncallback = /usr/local/bin/down_notify.sh)
               
           (13) realrecovercallback
               RealServer の回復を検知した際に、実行するファイルを指定します。指
               定された場合、異常から回復したサーバの IP アドレスを引数として、
               ファイルが実行されます。
               (例: realrecovercallback = /usr/local/bin/recover_notify.sh)

           (14) customcheck
               checktype に custom を指定した際に、RealServer 監視として実行する
               コマンドを指定します。コマンドの実行結果が 0 の場合は監視成功、そ
               れ以外の場合は監視失敗となります。コマンド文字列中の _IP_ は監視
               対象の RealServer の IP アドレスに、_PORT_ はポート番号に置き換え
               られます。
               (例: customcheck = wget -q -O /dev/null http://_IP_:_PORT_/)
               
     4.2.2.3 上書き可能な全体設定項目
             以下の全体設定項目は VirtualService 毎の設定内にも記述することがで
             き、その場合は、全体設定項目の設定値を無視して、その VirtualService
             のみの固有の設定として扱われる。
             
             ・checkcount
             ・checkinterval
             ・retryinterval
             ・checktimeout
             ・negotiatetimeout
             ・quiescent
             ・fallback
             
             
 4.3 サンプル

     例として、期待する機能を持たせる為の設定パターンをいくつか挙げる。
     各々について記載のない定義値に関しては省略時の値が使用されるものとする。

     1) 2 台の RealServer に振り分け Ping で監視する
     
     virtual  = xxx.xxx.xxx.xxx:80
         real = 192.168.1.2:80
         real = 192.168.1.3:80
         checktype = ping
     
     2) 2 台の RealServer にそれぞれの重みを 2:3 に変えて、重みつきの振り分け
        を行う。また、サービス監視を行い、Apache の mod_status を用いてアイドル
        状態の worker があることを確認する。
     
     virtual  = xxx.xxx.xxx.xxx:80
         real = 192.168.1.2:80 2
         real = 192.168.1.3:80 3
         scheduler = wrr
         service   = http
         request   = /server-status
         receive   = "[1-9][0-9]? idle workers"
     
     3) 2 台の RealServer に振り分け  sslid モジュールを使って、クライアントの
        セッションを維持する。
     
     virtual  = xxx.xxx.xxx.xxx:443
         real = 192.168.1.2:443
         real = 192.168.1.3:443
         module    = sslid


--------------------------------------------------------------------------------

 5 Replication 機能

 5.1 Replication 機能の説明

     Replication 機能は、Heartbeat2 による冗長化構成の際に、MASTER サーバと
     SLAVE サーバの間で SSL セッション ID 情報、VirtualService の QoS 情報、
     Sorry フラグ情報などの同期を行うために使用する機能です。

     Replication 機能は、冗長化構成、および機能の実行状況により以下の状態
     (Replication Mode) で動作します。
     現在の状態は、"l7vsadm -V" コマンドで確認できます。

         SINGLE     :非冗長化構成で、Replication が機能していない状態
         MASTER     :冗長化構成で、Replication がMASTERサーバとして実行中(同期
                      元)である状態
         SLAVE      :冗長化構成で、Replication がSLAVEサーバとして実行中(同期
                      先)である状態
         MASTER_STOP:MASTER(同期元)で、コマンドによりReplication 機能が停止し
                      ている状態
         SLAVE_STOP :SLAVE(同期先)で、コマンドによりReplication 機能が停止し
                      ている状態

     上記の MASTER ⇔ MASTER_STOP、SLAVE ⇔ SLAVE_STOP の状態切替は、Replication
     機能制御コマンドの "l7vsadm -R -s stop"、"l7vsadm -R -s start" で行うことが
     できます。

     Replication 機能に関する設定(対向サーバ情報、利用コンポーネント情報などは、
     UltraMonkey-L7 設定ファイルの [replication] セクションに記述します。
     設定方法の詳細は、6 UltraMonkey-L7 設定ファイルの説明を参照

     また、Replication 機能制御コマンドにより、強制的に現在の Replication データ
     を SLAVE サーバに反映させたり、現在の Replication データをダンプしたりする
     ことができます。

     Replication 機能制御コマンドの詳細は、2.4.4 Replication 機能制御コマンドを
     参照

--------------------------------------------------------------------------------

 6 UltraMonkey-L7 設定ファイルの説明

 6.1 設定ファイル (l7vs.cf) の説明
     UltraMonkey-L7 に関する各種設定を記述することができます。
     設定可能な項目は、[logger]、[l7vsadm]、[replication]、[snmpagent] の 4 種類
     で、各々のセクションごとに記述します。

     [logger]
         ・UltraMonkey-L7 を構成する各プロセス(l7vsd/l7vsadm/SNMPAgent)のログ
           出力に関する設定(ログファイル、ログローテーション、ログレベルなど)
           を記述します。

     [l7vsadm]
         ・l7vsadm コマンドに関する設定(2 重起動チェック、l7vsd 接続チェックな
           ど)を記述します。

     [replication]
         ・Replication 機能に関する設定(対向サーバ情報、利用コンポーネント情報
           など)を記述します。

     [snmpagent]
         ・SNMPAgnet に関する設定を記述します。
         ※SNMPAgnet に関する設定は現在未実装のため使用できません。
           (記述があっても機能しません)

 6.2 l7vs.cfのサンプルの説明
     [iomux]
     max_events = 1024                                <- イベント数(ファイルディスクリプタ数)上限値

     [conn]
     # recv/send buffer size
     read_bufsize = 20480                             <- 受信データサイズ

     #
     # l7vs log setting
     #
     [logger]                                         <- ロガーセクション
     # l7vsd logfile base name
     l7vsd_log_filename = '/var/log/l7vs/l7vsd.log'   <- l7vsd 出力ログファイル
     # l7vsd log rotate pattern
     l7vsd_rotation = 'size'                          <- ログローテーション方法
                                                         'size'    (サイズ)
                                                         'date'    (日付)
                                                         'datesize'(日付+サイズ)
                                                         が指定できます
     # l7vsd rotate max backup number
     l7vsd_max_backup_index = '10'     <- ローテーションによるバックアップファイ
                                          ルの世代数です。1~12 で指定できます
     # l7vsd rotate file size
     l7vsd_max_filesize = '10M'        <- サイズによるローテーション時のファイル
                                          サイズの指定です。65535~ULONG_MAXで指
                                          定できます。K(キロ)、M(メガ)、G(ギ
                                          ガ)での指定も可能です
     
     # l7vsd log categories level
     l7vsd_network                = 'info'      <- ログカテゴリ l7vsd_network の
                                                   デフォルトログレベルです
                                                   debug, info, warn, error,
                                                   fatal が指定できます
     l7vsd_network.bandwidth      = 'info'
     l7vsd_network.num_connection = 'info'
     l7vsd_network.qos            = 'info'
     l7vsd_virtual_service        = 'info'
     l7vsd_real_server            = 'info'
     l7vsd_sorry_server           = 'info'
     l7vsd_real_server.balancing  = 'info'
     l7vsd_replication            = 'info'
     l7vsd_start_stop             = 'info'
     l7vsd_system                 = 'info'
     l7vsd_system.memory          = 'info'
     l7vsd_system.socket          = 'info'
     l7vsd_system.signal          = 'info'
     l7vsd_environment            = 'info'
     l7vsd_environment.parameter  = 'info'
     l7vsd_logger                 = 'info'
     l7vsd_parameter              = 'info'
     l7vsd_event                  = 'info'
     l7vsd_schedule               = 'info'
     l7vsd_program                = 'info'
     l7vsd_protocol               = 'info'
     l7vsd_module                 = 'info'
     
     # l7vsadm log file base name
     l7vsadm_log_filename = '/var/log/l7vs/l7vsadm.log'      <- l7vsadm 出力ログ
                                                                ファイルです
     # l7vsadm rotate pattern
     l7vsadm_rotation = 'date'                     <- ログローテーション方法です
     # l7vsadm rotate max backup number
     l7vsadm_max_backup_index = '10'               <- ローテーションによるバック
                                                      アップファイルの世代数です
     # l7vsadm rotate timing ( every month rotate )
     l7vsadm_rotation_timing = 'month'             <- 日付によるローテーション時
                                                      のタイミング(周期)の指定
                                                      です
                                                      'year' (毎年),
                                                      'month'(毎月),
                                                      'week' (毎週),
                                                      'date' (毎日),
                                                      'hour' (毎時)
                                                      が指定できます
     # l7vsadm rotate timing ( day and time )
     l7vsadm_rotation_timing_value = '1 0:01'      <- 日付によるローテーション時
                                                      のタイミング(切替時間)の
                                                      指定です
                                                 'year' の例 -> '5/15 10:30'
                                                 'month'の例 -> '15 10:30'
                                                 'week' の例 -> 'tue 10:30'
                                                 'date' の例 -> '10:30'
                                                 'hour' の例 -> '30'
       ※ローテーションタイミングは、最大で毎年周期(1年毎)までの仕様としている
         ため、閏年2/29は例外の月日として設定してもエラーとなる。
     
     # l7vsadm log categories level
     l7vsadm_parse           = 'info'          <- ログカテゴリ l7vsadm_parse の
                                                  デフォルトログレベルです
     l7vsadm_operate         = 'info'
     l7vsadm_communicate     = 'info'
     l7vsadm_config_result   = 'info'
     l7vsadm_common          = 'info'
     l7vsadm_logger          = 'info'
     l7vsadm_parameter       = 'info'
     l7vsadm_protocol        = 'info'
     l7vsadm_module          = 'info'
     
     # snmpagent log file base name
     snmpagent_log_filename = '/var/log/l7vs/snmpagent.log'  <- snmpagent 出力ロ
                                                                グファイルです
     # snmpagent log rotate pattern
     snmpagent_rotation = 'datesize'               <- ログローテーション方法です
     # snmpagent log rotate max backup num
     snmpagent_max_backup_index = '10'             <- ローテーションによるバック
                                                      アップファイルの世代数です
     # snmpagent max logfile size
     snmpagent_max_filesize = '30M'                <- サイズによるローテーション
                                                      時のファイルサイズの指定で
                                                      す
     # snmpagent log rotate timing ( every week )
     snmpagent_rotation_timing = 'week'            <- 日付によるローテーション時
                                                      のタイミング(周期)の指定
                                                      です
     # snmpagent log rotate timing ( a day of week and time )
     snmpagent_rotation_timing_value = 'wed 23:59' <- 日付によるローテーション時
                                                      のタイミング(切替時間)の
                                                      指定です
     
     # snmpagent log categories level
     snmpagent_start_stop       = 'info'        <- ログカテゴリ l7vsadm_parse の
                                                   デフォルトログレベルです
     snmpagent_manager_receive  = 'info'
     snmpagent_manager_send     = 'info'
     snmpagent_l7vsd_receive    = 'info'
     snmpagent_l7vsd_send       = 'info'
     snmpagent_logger           = 'info'
     snmpagent_parameter        = 'info'
     
     #
     # l7vsadm setting
     #
     [l7vsadm]                         <- l7vsadm セクション
     cmd_interval = 1                  <- l7vsadm コマンド 2 重起動チェック時の
                                          リトライ間隔(秒)です
     cmd_count = 10                    <- l7vsadm コマンド 2 重起動チェック時の
                                          リトライ回数(回)です
     con_interval = 1                  <- l7vsd 接続チェック時のリトライ間隔(秒)
     con_count = 10                    <- l7vsd 接続チェック時のリトライ回数(回)
     
     #
     # l7vsd replication setting
     #
     [replication]                         <- replication セクション
     #ip_addr = '192.168.0.254'            <- データの送信先(SLAVE)の IP アド
                                              レスです
                                              ホスト名で記述することも可能です
     #service_name = '40000'               <- MASTER からデータを受信する port 
                                              番号です
                                              サービス名で記述することも可能です
     #nic = 'eth0'                         <- MASTER からデータを受信する NIC 名
                                              です
     #interval = 1000                      <- データ(1ブロック=512byte)の送信
                                              間隔(uS)です
                                              10~10000uSで指定できます
     #compulsorily_interval = 500          <- 強制 Replication コマンド実行時の
                                              データ(1ブロック=512byte)の送信
                                              間隔(mS)です
                                              4~400mSで指定できます
     #cmponent_id_00 = 'virtualservice'    <- Replication 機能を使用するコンポー
                                              ネント名です
                                              コンポーネントの ID
                                              (cmponent_id_xx) は通番で、00~99
                                              までを指定できます
     #cmponent_size_00 = 64                <- コンポーネントが使用するブロックサ
                                              イズ(1ブロック=512byte)です     
                                              コンポーネントの ID
                                              (cmponent_id_xx) と一対で指定し、
                                              0~100000 で指定できます
     #cmponent_id_01 = 'chash'
     #cmponent_size_01 = 1
     #cmponent_id_02 = 'sslid'
     #cmponent_size_02 = 200
     
     #
     # snmpagent settings
     #
     [snmpagent]                           <- snmpagentセクション
     nic = 'eth0'
     ip_addr = '172.0.0.1'
     port = 60162
     interval = 1000
     status = 0
     
     ※SNMPAgnetセクションの設定は現在未実装のため使用できません。
     (記述があっても機能しません)
     
--------------------------------------------------------------------------------