Apache Traffic Serverを試してみる

今回はApache Traffic Server を試してみることにします。
調べながら書いているので、内容はご容赦を。

Apache Traffic Serverって?

Yahoo!オープンソースとして公開したものが元になっているみたいですね。

公式ページのトップはここです。

インストール

READMEを見る限り、必要なソフトは以下の模様。

  • Fedora 11,12:
    • autoconf
    • automake
    • libtool
    • gcc-c++
    • glibc-devel
    • openssl-devel
    • tcl-devel
    • expat-devel
    • sqlite-devel (or optionally, db4-devel)
    • pcre
  • Ubuntu 8.04,8.10,9.10
    • autoconf
    • automake
    • libtool
    • g++
    • libssl-dev
    • tcl-dev
    • expat
    • libexpat-dev
    • libsqlite3-dev (or optionally, libdb-dev)
    • libpcre3-dev

すぐ使えるFedoraの環境が手元になかったので、今回もCentOSで挑戦。

さて、インストールです。
まずはインストール先を指定してconfigure

# ./configure --prefix=/usr/local/traffic_server

すると、

configure: error: in `/usr/local/src/trafficserver-2.0.0':
configure: error: check for sqlite3 failed. Have you installed sqlite3-devel?
See `config.log' for more details.

と、怒られる。
が、sqliteは入っていました。

仕方なく、

--without-sqlite3 --with-libdb

として再挑戦。

configure: error: in `/usr/local/src/trafficserver-2.0.0':
configure: error: check for pcre failed. Have you installed pcre-devel?
See `config.log' for more details.

READMEには書いてありませんが、pcre-develも必要なようです。

結局行った手順はこんな感じです。

 # bzcat trafficserver-2.0.0.tar.bz2 | tar -xv
 # cd trafficserver-2.0.0
 # ./configure --prefix=/usr/local/traffic_server --without-sqlite3 --with-libdb
 # make
 # make install

動かしてみる

起動はこんな感じです。

 # ./trafficserver start
 Starting Apache Traffic Server:                            [  OK  ]

以下のプロセスが起動します。
traffic_cop
traffic_manager
traffic_server

デフォルトでは8080, 8083, 8084, 8088番ポートを使用するようです。

停止はこんな感じです。

 # ./trafficserver stop
 Stopping traffic_cop:                                      [  OK  ]
 Stopping traffic_manager:                                  [  OK  ]
 Stopping traffic_server:                                   [  OK  ] 

各種操作は「traffic_line」に引数を与えるようです。
試しに -h の結果。

Usage: ./traffic_line [--SWITCH [ARG]]
  switch__________________type__default___description
  -q, --query_deadhosts   on    false     Query congested sites
  -p, --socket_path       str   var/tra.. Socket Path
  -r, --read_var          str   (null)    Read Variable
  -s, --set_var           str   (null)    Set Variable (requires -v option)
  -v, --value             str   (null)    Set Value (used with -s option)
  -h, --help                              Help
  -x, --reread_config     on    false     Reread Config Files
  -M, --restart_cluster   on    false     Restart traffic_manager (cluster wide)
  -L, --restart_local     on    false     Restart traffic_manager (local node)
  -S, --shutdown          on    false     Shutdown traffic_server (local node)
  -U, --startup           on    false     Start traffic_server (local node)
  -B, --bounce_cluster    on    false     Bounce traffic_server (cluster wide)
  -b, --bounce_local      on    false     Bounce local traffic_server
  -C, --clear_cluster     on    false     Clear Statistics (cluster wide)
  -c, --clear_node        on    false     Clear Statistics (local node)
  -V, --version           tog   false     Print Version Id

設定してみる

フォワードプロキシを設定してみる

以下を参考にしてやってみます。


Traffic Serverホーム直下の「etc/trafficserver」ディレクトリ配下に「record.config」ファイルがありますが、
この中で、「proxy.config.admin.autoconf_port」にPACファイル配布時に使うポートが指定されています(デフォルト8083)


全てをTraffic Serverに向くように、PACファイルを作ります。

function FindProxyForURL(url, host)
{
    return "PROXY xxx.xxx.xxx.xxx:8080;" + "DIRECT";
}

こいつをTraffic Serverホーム直下のetcディレクトリ配下に置きます。


ブラウザのプロキシを「http://xxx.xxx.xxx.xxx:8080
自動構成スクリプトを「http://xxx.xxx.xxx.xxx:8083/proxy.pac


として、アクセスしたところ、Webアクセスが可能になりました。
こんな感じでいいのかな…。

#最初は応答が帰ってくるまで時間がかかったので、
#恐らくキャッシングをしているのでしょう。。

リバースプロキシを設定してみる

こちらも以下を見ながら。


Traffic Serverホーム直下の「etc/trafficserver」ディレクトリ配下に「record.config」ファイルがありますが、
「proxy.config.reverse_proxy.enabled」が1ならリバースプロキシが有効との事。


同じ場所にある「remap.config」に以下の一行を追加して、「./traffic_line -x」。

reverse_map http://xxx.xxx.xxx.xxx:8080 http://xxx.xxx.xxx.xxx:80

同じホストにApacheをインストールして、起動させておきました。


ブラウザから「http://xxx.xxx.xxx.xxx:8080」にアクセスしたところ、
Traffic Server経由でApacheにアクセス出来ていることが確認できました。


一旦動きましたが、ログ関連の設定をどうやるのか調べなくては。。
まだ先は長いですが、また使ってみようと思います。


今日はこんなところで。