Apache Traffic Server 〜実運用に向けての設定

さらに、前回からの続き。
前のエントリーと一部重複しているのは、端折ってしまった説明の補足ということで。

で、ここまでがホントに最低限の設定。実際に運用に供するにはログに関する設定が足りなかったりするので、その辺については別エントリーにて。

Apache Traffic Server 〜プロキシとして動かす為の必要最低限の設定 - Soukaku's HENA-CHOKO Blog

とにかく設定しておいたほうが良いもの

「とにかく動かしたい」ということであれば、最低でも次の3つのパラメータの値を変更する必要がある。

まず一つめ。このパラメータだけはテキストエディタなどで/etc/trafficserver/records.confgを直接編集する必要しないとダメ。

CONFIG proxy.config.cluster.ethernet_interface STRING eth0

複数のTraffic Serverを使ってクラスタ組む際にどのネットワークインタフェースをクラスタリングのために使うのかを指定するパラメータなのだけど、単体で動作させるにしても、これを実在するネットワークインターフェースにしておかないと、すべてのdaemonが起動してくれないので"eth0"などを指定。
変更後に、Traffic Severを再起動して

# ps axf | grep traffic
12797 pts/7    S+     0:00                      \_ grep traffic
 7547 ?        Ss     0:00 /usr/bin/traffic_cop
 7551 ?        Ssl    0:00  \_ /usr/bin/traffic_manager
 8608 ?        Sl     0:14      \_ /usr/bin/traffic_server -M -A,8:X

"traffic_cop"、"traffic_manager"、"traffic_server"の各daemonが起動していれば、これ以降のパラメータ変更と設定の反映は、"traffic_line"コマンドを利用して行えるようになります。


次に、リバースプロキシに関するパラメータ。

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

デフォルトでは、Traffic Serverはリバースプロキシで動作するようになっているため、フォワードプロキシとして動作させるために、それぞれ"0"をセットしてリバースプロキシを無効化。
"traffic_line -x"と実行して変更した値が反映すると、フォワードプロキシとして動作を開始します。

とりあえず、設定しておいたほうがいいかも、ぐらいのものも

残りはお好きにどうぞ、というところなんだけど、どちらかといえばやっておいたほうがいいのが、ログ関連。

traffic_line -s proxy.config.log.squid_log_is_ascii -v 1

ログの出力形式に関するパラメータで、/var/log/trafficserver/squid.blogというSquidでいうところのacees.logに相当するログファイルに関するもの。
デフォルトではbinary形式になっていて、いささか面倒なので、これをASCII形式に変更するために"1"をセット。
#ASCII形式に変更するとファイル名も/var/log/trafficserver/squid.logと、微妙に変化します。

traffic_line -s proxy.config.log.rolling_size_mb -v 15

ログのローテート回数を指定するパラメータ。
デフォルトでは10世代が指定されているので、それを変更したい場合に世代数を指定する。今のところ"15"をセットしているけど、Traffic Serverでは1ログファイル1日分という制限があるため、currentのログ+過去15日分という形でログがローテートされていきます。
ディスク容量との兼ね合いもあるので、その辺を考慮して世代数を決めればよいでしょう。

traffic_line -s proxy.config.proxy_name -v nexus01
traffic_line -s proxy.config.alarm_email -v root@downtown.jp

このふたつは、Traffic Serverが動作しているサーバ名と、アラートメールの送付先アドレスを指定するパラメータ。
必須ではないのだけど、環境に合わせて変更しておくほうが良いでしょう。

traffic_line -s proxy.config.http.cache.cache_responses_to_cookies -v 3

cookieがセットされたContentに対する扱いを指定するパラメータ。
recoreds.conf中にも説明が書いてあるのだけど、cookieがセットされている「Content-Typeがtext」以外のオブジェクトをキャッシュさせたいので"3"をセット。

これ、なんのために設定するのかというと、

見てみると、id:TAKESAKOさんから「もしかしたらMS ISAサーバとか使ってたりして。デフォルトでURLに?を含まないコンテンツをキャッシュする設定になっているので、他の人のCookieで見たページが見えることがあります。たぶん、ISAサーバの設定を変えればOK」とのコメントを頂きました。

楽天の怪奇現象はどうやらISAが原因らしい - なお記

ということが、Squidでも発生したことがあって、その対策として「Content-Typeがtextであるオブジェクトはキャッシュしない」という設定をしたところ、同じような事象が再発していないから。
#Squidではもっと大雑把で、「cookieの有無に関係なく、Content-Typeがtextのであるオブジェクトはキャッシュしない」んですが・・・。

あと、「内部ネットワークの情報をアクセス先に渡したくないなぁ」という場合は、

traffic_line -s proxy.config.http.anonymize_insert_client_ip -v 0
traffic_line -s proxy.config.http.insert_squid_x_forwarded_for -v 0

をやっておくとよいでしょう。

ついでにあと一つ

これも、/var/log/trafficserver/traffic.outを眺めていて気がついたのだけど、

[May  2 22:27:15.417] Server {47530675194816} WARNING: cache unable to open '/var/cache/trafficserver/cache.db': Permission denied
[May  2 22:27:15.417] Server {47530675194816} WARNING: unable to open cache disk(s): Cache Disabled

というWARNINGが出ている。
コレは「キャッシュされたオブジェクトデータを格納するDBファイルの出力先ディレクトリのパーミッションの問題」なので、

# chown trafficserver.trafficserver /var/cache/trafficserver/

を実行したあとに、Traffic Serverを再起動すれば無問題。
おそらくdebパッケージ作成時の手順抜けなんじゃないかなぁ、と推測。

とりあえず、これだけ設定しておけば、普通に使う分には困らない、と思う。
実際にSquidの置き換えで動かそうとするには「特定セグメントから特定ドメインのサイトにアクセスさせない」とか「特定URLはすべてキャッシュしない」といった設定が必要になってきたりするので、その辺はこれから試行錯誤してみないとなぁ・・・。

トラックバック(1)

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

コメントする