Kouhei TANUMA
tanum****@nttco*****
2009年 2月 16日 (月) 12:52:18 JST
竹林さん 田沼です。 メール入れ違いになりましたが、対応した分をマージしました。 また、新規のものをいくつか追加しています。 一通り確認はしてありますが、いきなり stable にするのは ちょっと不安な気がしないでもないです。どうしましょうか? >・l7directord の IP アドレス変換ルーチン修正(x86 環境で out of range 発生) これは前の v2.1.1 で修正したようです。(忘れてました) 以下、変更点一覧です。 1. crewrite モジュール追加 --cookie-name キーオプション(必須) --forwarded-for, --reschedule, --no-reschedule(他と同様) リアルサーバで --cookie-name に指定したクッキー名で、 値に 0 を 15 桁つけなければならない。 そこに cinsert と同様のリアルサーバ情報を上書きする 2. cpassive モジュール追加 --cookie-name キーオプション(必須) --forwarded-for, --reschedule, --no-reschedule(他と同様) リアルサーバで --cookie-name に指定したクッキー名で、 値に cinsert と同様のリアルサーバの IP アドレスと ポートを整数に変換し連結したものをつけなければならない。 3. pfilter モジュール追加 --pattern-match キーオプション(必須) --read-byte 数値(任意、デフォルト1024) pfilter モジュールは実装を以前から変えている。 以前のキーオプションは --path-match だったが パケットフィルタという名前だと、リクエストパケット全体を フィルタするべきで、URL モジュールに合わせて --pattern-match とした。 また、検索処理も fnmatch から、より汎用的な正規表現に変更した。 (boost::regex 使用) オプションの --read-byte はリクエストの先頭何バイトを 検索対象とするか。 (例) 古いですが CodeRed 避け --pattern-match "/default\.ida\?\\S{200}" (例) GET, HEAD 以外禁止 --pattern-match '\A(?!(GET|HEAD))' 4. ソース IP アドレスパーシステンスモジュール追加(ip モジュール) キーオプションなし --forwarded-for, --reschedule, --no-reschedule(他と同様) クライアント接続時に即リアルサーバ確定(fast schedule) 中居さんのコメントに従い、プロトコルモジュールとして実装。 アルゴリズムは以前に作成したスケジューラでのものと似ていて ソース IP アドレスをハッシュ変換して、ハッシュ−リアルサーバの テーブルをチェック。既にリアルサーバが決まっていれば そのリアルサーバに振り分け、決まっていなければスケジューラに 任せる。 以前まで振り分けられていたリアルサーバがなくなった場合は reschedule フラグに従い、reschedule オンの場合は、再度 スケジューラ任せ、reschedule オフの場合は、その場で切断される。 (この辺は他のモジュールと同じ動作) デフォルトは reschedule オフ。 課題として、ハッシュ−リアルサーバのテーブルをレプリケーション する必要がある。(未実装) また、テーブルは sockaddr_in * ハッシュサイズ(デフォルト256) になっていて、IPv6 非対応。(メモリは 16 * 256 = 4K) 5. cinsert モジュールのテンポラリクッキー対応 --cookie-expire に 0 を指定することで、 expires を出力しなくした。 6. url モジュールの検索高度化 --pattern-match (既存) --uri-pattern-match (新規) --host-pattern-match (新規) いずれか必須のキーオプション(全て指定しても OK) --pattern-match は既存のもので fnmatch で URI と Host ヘッダフィールドから文字列検索。 (互換性のために残してます) --uri-pattern-match は URI のみ対象の正規表現検索。 --host-pattern-match は Host ヘッダフィールドのみ対象の 正規表現検索。(boost::regex 使用) (例) イメージのマッチ --uri-pattern-match "(jpg|gif|png)$" (例) VirtualHostのマッチ --host-pattern-match "^images.example.com$" 7. l7directord ログ修正 logfile を指定していた場合でも、起動時のログが 標準の /var/log/l7vs/l7directord.log に固定で 出力されてしまうのを修正 8. l7directord プロトコルモジュール修正 上記モジュールを指定できるように修正 9. l7directord カスタム監視設定追加 checktype=custom customcheck=実行コマンド 上記を指定することで、実行コマンドで監視を行い、 0 が戻れば UP、それ以外は DOWN と判定する。 マクロとして _IP_, _PORT_ が使えて、それぞれ リアルサーバの IP アドレスとポートに変換される。 あわせてマニュアルも修正し、man ファイルも更新。 (例) 自前で Ping 監視 checktype = custom customcheck = ping -c1 -w1 _IP_ (例) 自前のアプリケーション監視 checktype = custom customcheck = /usr/local/bin/check_app.sh _IP_:_PORT_ 以上、宜しくお願い致します。 On Tue, 10 Feb 2009 14:02:09 +0900 Shinya TAKEBAYASHI <takeb****@oss*****> wrote: > 田沼 さん > 各位 > > > 竹林です. > > 2.1.2-0(仮称)のリリース用にブランチを作成しました. > > svn://svn.sourceforge.jp/svnroot/ultramonkey-l7/stable/ultramonkey-l7/ > branches/2.1.2-0 > > です. > > 対応して頂いた下記の分について,できあがってからで結構ですので > 上記ブランチにマージして頂けますか. > > > ・crewrite モジュール > > ・cpassive モジュール > > ・pfilter モジュール > > ・cinsert のテンポラリ cookie 対応 > > ・l7directord の初期ログ出力の問題対応 > > > よろしくお願い致します.