Apache Traffic Server 〜プロキシとして動かす為の必要最低限の設定

Apache Traffic Serverの続き。

細かい設定については、別のエントリーにて。
#実はまだ、ちゃんと動かせていない、という事情もあたりする・・・。

Apache Traffic Server 〜とりあえずインストール - Soukaku's HENA-CHOKO Blog

インストールが終わったのはいいんだけど、ちゃんと動いてくれなくて四苦八苦。
「とりあえず、基本に戻ろう」ということで、パッケージのインストールと同時にインストールされるドキュメントを漁ってみたら/usr/share/doc/trafficserver/CONFIGURATION.Debian.gzというのがあって、改めて読み直してみたら、色々と設定ファイルに手を入れないとProxyとして動いてくれないらしい。

まず、いじらないといけないのは、/etc/default/trafficserverの中の

TC_START=no

の"no"を"yes"に変更しないと、起動スクリプトを叩いてもTraffic Server関連のデーモンが起動しません。
で、書き換えてTraffic Serverを起動させてみると・・・。

root@debian:~# /etc/init.d/trafficserver start
root@debian:~# ps axf | grep traffic
30544 pts/1    S+     0:00                      \_ grep traffic
30532 ?        Ss     0:00 /usr/bin/traffic_cop

一応、traffic_copというデーモンは起動しているけど、

[May  2 20:18:18.312] Manager {140219748378400} FATAL: [LocalManager::initCCom] Unable to find network interface wlan0.  Exiting...
[May  2 20:18:18.313] Manager {140219748378400} FATAL:  (last system error 2: No such file or directory)
[May  2 20:18:18.313] Manager {140219748378400} NOTE: [LocalManager::mgmtShutdown] Executing shutdown request.
[May  2 20:18:18.313] Manager {140219748378400} NOTE: [LocalManager::processShutdown] Executing process shutdown request.

という感じで、/var/log/trafficserver/traffic.outにエラーが吐かれているので、まだ設定が足りない模様。
ログ中に"Unable to find network interface wlan0."とあるので、どうもネットワークインタフェースに関する設定がおかしいらしいことがわかるので、Traffic Serverの設定ファイルである/etc/trafficserver/records.configを"wlan0"をキーワードにgrepしてみる。

root@debian:~# grep wlan0 /etc/trafficserver/records.config
CONFIG proxy.config.cluster.ethernet_interface STRING wlan0

ビンゴ!ということで、まずこのパラメータをviなどで修正。
#下の作業ログでは、perlで書き換えてます。

root@debian:~# perl -pi.bak -e 's/wlan0/eth0/' /etc/trafficserver/records.config
root@debian:~# diff -u /etc/trafficserver/records.config.bak /etc/trafficserver/records.config
--- /etc/trafficserver/records.config.bak       2011-05-02 20:15:58.000000000 +0900
+++ /etc/trafficserver/records.config   2011-05-02 20:26:51.000000000 +0900
@@ -307,7 +307,7 @@
 #
 ##############################################################################
 CONFIG proxy.config.cluster.cluster_port INT 8086
-CONFIG proxy.config.cluster.ethernet_interface STRING wlan0
+CONFIG proxy.config.cluster.ethernet_interface STRING eth0
 ##############################################################################
 #
 # Cache

起動スクリプトでTraffic Serverを再起動して、起動しているプロセスを確認してみると・・・。

root@debian:~# /etc/init.d/trafficserver restart
Restarting Apache Traffic Server: trafficserver\n.
root@debian:~# ps axf | grep traffic
30691 pts/1    S+     0:00                      \_ grep traffic
30657 ?        Ss     0:00 /usr/bin/traffic_cop
30659 ?        Ssl    0:00  \_ /usr/bin/traffic_manager
30669 ?        Sl     0:00      \_ /usr/bin/traffic_server -M -A,8:X

"traffic_cop"、"traffic_manager"、"traffic_server"の3つのデーモンが起動して、やっと動作するようになりました。
で、ここまで動けばちゃんとプロキシとして動いているように見えますが、ローカルのproxyを参照するように設定したwgetでYahoo!にアクセスしてみると

root@debian:~# wget http://www.yahoo.co.jp/
--2011-05-02 20:34:17--  http://www.yahoo.co.jp/
127.0.0.1:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 404 Not Found
2011-05-02 20:34:17 エラー 404: Not Found。

となって、正しくアクセス出来ていないという状況。
前のエントリーでインストールまでしか書かなかったのは、この状態が続いていたためだったりした訳ですが、これを解消するヒントは上の方に書いたとおり/usr/share/doc/trafficserver/CONFIGURATION.Debian.gzの中身にあったということで、以下がそのポイントとなります。

Traffic Serverは、直接/etc/trafficserver/records.configをエディタで編集してもいいのだけど、以下の設定変更は"traffic_line"コマンドを利用して設定変更を行っていきます。
"traffic_line"コマンドは"traffic_manager"が起動していないと使えないので、"proxy.config.cluster.ethernet_interface"はエディタなどで変更しておかないといけない、ということになるわけ。

/usr/share/doc/trafficserver/CONFIGURATION.Debian.gzを眺めていて、特に気になったのが

* Proxy server can basically act in two modes: As forward proxy and as a rever-
  se proxy. Traffic Servers primary purpose is to act as reverse proxy (e.g.
  different to Squid). Nonetheless you can Traffic Server still instruct to act
  as forward proxy as well. If you know what you are doing, you need to set
     CONFIG proxy.config.url_remap.remap_required INT 0
  for that purpose.

という記述。
Traffice Serverをリバースプロキシとして動かすための設定らしいのだけど、「このパラメータを変えないと、フォワードプロキシとして動かないヨ!(意訳)」と書いてあるようなので、実際の設定を確認してみたら・・・。

root@debian:~# traffic_line -r proxy.config.url_remap.remap_required
1

ということで、インストール直後はリバースプロキシで動いてる・・・。orz
早速、"proxy.config.url_remap.remap_required"を書き換えて設定を反映。

root@debian:~# traffic_line -s proxy.config.url_remap.remap_required -v 0
root@debian:~# traffic_line -x

で、wgetでテスト。

root@debian:~# wget http://www.yahoo.co.jp/
--2011-05-02 20:53:10--  http://www.yahoo.co.jp/
127.0.0.1:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`index.html' に保存中
    [ <=>                                                                                   ] 25,644      --.-K/s 時間 0.09s
2011-05-02 20:53:11 (276 KB/s) - `index.html' へ保存終了 [25644]

ということで、これでプロキシとして動作するようになりました。
おそらく、ソースからインストールしたTraffic Serverでもリバースプロキシが、デフォルトで設定された状態だと思われるので、どうしても動いてくれないなー、というときは"proxy.config.url_remap.remap_required"の値を確認してみるといいかもしれません。
で、ここまでがホントに最低限の設定。実際に運用に供するにはログに関する設定が足りなかったりするので、その辺については別エントリーにて。

[追記 - 2011/5/3 6:03 ]
FAQページを眺めていたら、まさにドンピシャな"How do I enable forward proxy mode?"という項目が・・・。
そこには次の二つのパラメータの値を"0"とするように書いてあるので、

# traffic_line -s proxy.config.reverse_proxy.enabled -v 0
# traffic_line -s proxy.config.url_remap.remap_required -v 0
# traffic_line -x

とすれば、無事フォワードプロキシとして動作する様になる、と。
#やっぱり、ちゃんとドキュメント類は当たってみるもんですな。

トラックバック(1)

Apache のログとか眺めてると、 Apache Traffic Server... 続きを読む

コメントする