Kilimanjaro

INDEX

Kilimanjaroとは?

Kilimanjaroはマルチキャストプロキシ(MultiCast Proxy)です。
クライアントからのリクエストを複数のサーバーに送信します。
クライアントからのリクエストはいったんキューに溜められ、裏で順に送信されます。

以下のようなことが可能です。

動作環境
IIS 5.0, 5.1, 6.0, 7.0, 7.5 and later
パッケージ内容
Kilimanjaro.dll
ISAPI Extension本体
Kilimanjaro.setting
設定ファイル
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
IIS 5.0, 5.1
  1. IISの設定でWebDAVを使用できるように設定する。
  2. "Kilimanjaro.dll" を目的のWebディレクトリのアプリケーションマッピングに登録。
    • "実行ファイル" に "Kilimanjaro.dll" を指定。
    • "拡張子" に ".*" を指定。
    • "動詞" に "すべての動詞" を指定。
    • "スクリプトエンジン" にチェック。
    • "ファイルの存在を確認する" のチェックをはずす。
  3. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "IUSR_{xxx}" の読み取り権限があるか。
    • パッケージディレクトリの ログフォルダに "IUSR_{xxx}" の変更権限があるか。
    • パッケージディレクトリの 一時ファイルフォルダに "IUSR_{xxx}" の変更権限があるか。
IIS 6.0
  1. IISの設定でWebDAVを使用できるように設定する。
  2. "Kilimanjaro.dll" を目的のWebディレクトリのワイルドカードアプリケーションマップに登録。
    • "実行ファイル" に "Kilimanjaro.dll" を指定。
    • "ファイルの存在を確認する" のチェックをはずす。
  3. IISの "Web サービス拡張" に "Kilimanjaro.dll" を追加し、許可する。
  4. アプリケーションプールを適切に設定する。
    • "リサイクル", "ワーカープロセス" はしないようにする。
    • "アイドルタイムアウト" はしないようにする。
  5. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "NETWORK SERVICE" の読み取り権限があるか。
    • パッケージディレクトリに "IUSR_{xxx}" の読み取り権限があるか。
    • パッケージディレクトリの ログフォルダに "IUSR_{xxx}" の変更権限があるか。
    • パッケージディレクトリの 一時ファイルフォルダに "IUSR_{xxx}" の変更権限があるか。
IIS 7.0, 7.5
  1. IISの設定でWebDAVを使用できるように設定する。
  2. "Kilimanjaro.dll" を目的のWebディレクトリのハンドラーマッピングに登録。
    • "ワイルドカードスクリプトマップの追加"をクリック。
    • "実行可能ファイル" に "Kilimanjaro.dll" を指定。
    • "名前" に "Kilimanjaro" などを指定。
  3. IISの "ISAPIおよびCGIの制限" に "Kilimanjaro.dll" を追加し、許可する。
  4. アプリケーションプールを適切に設定する。
    • "リサイクル", "定期的な間隔" はしないようにする。
    • "アイドル状態のタイムアウト"はしないようにする。
  5. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "SERVICE" の読み取り権限があるか。
    • パッケージディレクトリに "IUSR" の読み取り権限があるか。
    • パッケージディレクトリの ログフォルダに "IUSR" の変更権限があるか。
    • パッケージディレクトリの 一時ファイルフォルダに "IUSR" の変更権限があるか。
利用方法

クライアントとアクセス対象となる本サーバーの間にKilimanjaroを配置してください。

┏━━━━━━┓        ┏━━━━━━┓        ┏━━━━━━┓
┃Client      ┃Request ┃Kilimanjaro ┃        ┃Web Server1 ┃
┃            ┠────╂─┬────╂───→┃            ┃
┃            ┃←───╂─│────╂────┨            ┃
┃            ┃Response┃  ↓        ┃        ┃            ┃
┃            ┃        ┃Enqueue_____┃        ┗━━━━━━┛
┃            ┃        ┃───→****┃Dequeue ┏━━━━━━┓
┃            ┃        ┃~~~~~~~~~~~~┠───→┃Web Server2 ┣━┓
┃            ┃        ┃Log*******←╂────┨            ┃3 ┃
┗━━━━━━┛        ┗━━━━━━┛Response┃            ┃  ┃
                                                ┃            ┃  ┃
                                                ┗━┳━━━━┛  ┃...
                                                    ┗━━━━━━┛

Kilimanjaroの特性上、設定ファイルの<Proxy/>(後述)で1番目に記載したサーバーにはクライアントからのリクエストがそのまま送信され、レスポンスもそのまま返されます。
2番目以降に記載したサーバーにはキューに溜められたリクエストが送信され、レスポンスはログファイルに保存されます。
また、現在のKilimanjaroはOPTIONS, TRACE, GET, HEAD, POST, COPY, PROPFIND, DELETE, MOVE, PROPPATCH, MKCOL メソッドのみに対応しています。

動作中に設定ファイルを変更した場合はアプリケーションプールのリサイクルなどが必要です。

利用リファレンス
Log (アクセスログ)

ログファイルは設定された<LogDir/>(後述)に保存されます。
1日毎に[日付].logとして新しいファイルが作成されます。
<Proxy/>(後述)で1番目に設定したサーバー以外へのアクセスログが出力されます。
ログは左から順に、日時 Kilimanjaroステータス ホスト名 動詞 パス レスポンス、です。
(ex.)

2010/06/16-12:34:56 201 192.168.0.68:8080 PUT /test.txt 201 2010/06/16-12:34:56 201 192.168.0.68:8081 PUT /test.txt 201 2010/06/16-23:56:12 201 192.168.0.68:8080 DELETE /test.txt 200 2010/06/16-23:56:12 201 192.168.0.68:8081 DELETE /test.txt 200

設定リファレンス
<Kilimanjaro/>

Kilimanjaro設定のルート要素。

属性
[なし]
子要素
  • <Proxy/>
  • <QueueBuf/>
  • <LogDir/>
<Proxy/>

送信先サーバーに関して設定します。
<Proxy/>は複数、最大で256個指定できます。
1つの<Proxy/>に対して1つの送信先サーバーを指定できます。
1つ目に指定するサーバーへはキューイングされずにリアルタイムに処理がスルーされます。

属性
Server
送信先サーバーを指定してください。
(ex.)
<Proxy Server="192.168.0.68"/> <Proxy Server="192.168.0.69:8080"/> <Proxy Server="192.168.0.69:8081"/>
子要素
[なし]
<QueueBuf/>

キューに溜めるリクエストボディの一時ファイルを保存するためのディレクトリを指定します。
"Kilimanjaro.dll"からの相対パスを指定できます。
設定するディレクトリをあらかじめ作成しておいてください。

一時ファイルディレクトリのパス。
属性
[なし]
子要素
[なし]
<LogDir/>

ログファイルの出力先を設定します。
"Kilimanjaro.dll"からの相対パスを指定できます。
設定するディレクトリをあらかじめ作成しておいてください。


ログディレクトリのパス。
属性
[なし]
子要素
[なし]
更新履歴
2010/06/16
  • Version: 1.0.0.0
2010/06/21
  • Version: 1.1.1.0
  • VCランタイムを利用しないように変更
  • Transfer-Encoding: chunked に対応
2012/05/30
  • Version: 1.1.1.1
  • 送信先サーバーがHTTPステータスに長文を返したときにクラッシュする問題対処
2012/08/30
  • Version: 1.1.1.3
  • 送信先サーバーとのネットワーク接続が不安定になったとき、 送受信処理がタイムアウトせず2台目以降のサーバーへの送信処理がハングする問題対処
  • 内部的な不具合の修正
2012/10/18
  • Version: 1.1.1.4
  • 依存しているライブラリのバージョンをより安全なものに変更