改訂版:Apache Traffic Server 〜実運用に向けての設定

Apache のログとか眺めてると、 Apache Traffic Server (以下、 ATS )について取り上げたエントリーへのアクセスがそれなりにあるのだけど、4 年も前の内容だし、ATS 自身もバージョンが上がっていて、ちょっと現状とあってなさそうな感じもしたので、新しいエントリーを起こしておきます。
4 年前は、バージョンが 2.1.9 とか 3.0.0 が出たばかりだとかって時期ですから。

アップデート対象のエントリーは、以下の 3 本。

インストール

インストールの対象とするとは Debian なんですけど、 wheezy には含まれていたのに、 jessie では外されたようですね…。(詳しいパッケージ情報
jessieでも、wheezy-backports のでも sid のでもパッケージは使えるのだけど、jessie と sid を混在状態にすると、後々めんどくさいことになるので、今回は jessie に wheezy-backports のものをインストールすることにします。ちなみに、wheezy-backports は 5.0.1 、 sid は5.2.0 なので、より新しい物を使いたいのであれば sid のものを、ということになりますね。

/etc/apt/sources.list に、以下のような行を追加。

# wheezy-backports
deb http://ftp.jp.debian.org/debian/ wheezy-backports main non-free contrib

"aptitude update" でパッケージ情報を更新した後、"aptitude install trafficserver" と実行すればインストールが行われます。

# aptitude install trafficserver
以下の新規パッケージがインストールされます:
  libaio1{a} libtcl8.5{a} tcl8.5{a} trafficserver
更新: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
5,383 k バイトのアーカイブを取得する必要があります。展開後に 14.7 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]

インストール完了後には、ATS は port8080 で待ち受けしている状態になります。

16334 ?        Ssl    0:00 /usr/bin/traffic_cop
16337 ?        Sl     0:02  \_ /usr/bin/traffic_manager
16376 ?        Sl     0:17      \_ /usr/bin/traffic_server -M --httpport 8080:fd=7

パラメータを変更してサービスとして有効にする

さて、ここから実際に細かく設定をしていく事になります。
設定自体は、"traffic_line" コマンドでほとんど事足ります。勿論、直接設定ファイル( /etc/trafficserver/record.config )をしても構いません。

まず、Proxy としてリクエストを待ち受ける物理インターフェースの設定。
インストール直後だと "lo" が指定されているので、これを "eth0" に変更。

traffic_line -s proxy.config.cluster.ethernet_interface -v eth0

次に、デフォルトだとリバースプロキシとして動作しているので、これをフォワードプロキシとして動作するように変更。

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

サーバ自身の名前とアラートメールの送付先アドレスを変更。

root@mb202:~# traffic_line -s proxy.config.proxy_name -v mb201
root@mb202:~# traffic_line -s proxy.config.alarm_email -v root@downtown.jp

アクセス元クライアントのIPアドレスと、Proxy 経由であることを隠すための変更。

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

ここまでの変更が終わったら、設定を反映します。

traffic_line -x

これで、設定完了。
キャッシュとして割り当てるメモリやディスク容量などは、状態によって変更していく必要はありますけど、Web Proxy と利用するための最低限の設定は出来ている状態になっています。

動作確認

確認は簡単に、wget で。
~/.wgetrc で ATS 経由でアクセスするよう設定をして、適当な Web サイトへアクセス。

root@mb202:~# more .wgetrc
http_proxy = http://127.0.0.1:8080/
root@mb202:~# wget -d http://www.yahoo.co.jp/
DEBUG output created by Wget 1.16.3 on linux-gnu.
URI encoding = `UTF-8'
URI encoding = `UTF-8'
--2015-05-23 21:49:17--  http://www.yahoo.co.jp/
127.0.0.1:8080 に接続しています... 接続しました。
Created socket 4.
Releasing 0x00007fe218651860 (new refcount 0).
Deleting unused 0x00007fe218651860.
---request begin---
GET http://www.yahoo.co.jp/ HTTP/1.1
User-Agent: Wget/1.16.3 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: www.yahoo.co.jp
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
---request end---
Proxy による接続要求を送信しました、応答を待っています...
---response begin---
HTTP/1.1 200 OK
Server: ATS/5.0.1
Date: Sat, 23 May 2015 12:49:17 GMT
Content-Type: text/html; charset=UTF-8
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: -1
Pragma: no-cache
X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
Age: 0
Transfer-Encoding: chunked
Proxy-Connection: keep-alive
---response end---
200 OK
Registered socket 4 for persistent reuse.
URI content encoding = `UTF-8'
長さ: 特定できません [text/html]
`index.html.3' に保存中
index.html.3             [ <=>                     ]  17.14K  --.-KB/s 時間 0.01s
2015-05-23 21:49:17 (1.55 MB/s) - `index.html' へ保存終了 [17547]
root@mb202:~#

と、こんな感じでコンテンツを取ってこれれば、動作は正常です。

で、ATS 使っているかというと…

一時期、完全に Squid の置き換えが出来るかなぁ、とか思っていた時期もあったんですけどね。
自宅のネットワークを IPv6 対応にしたりしている関係で、 ATS 経由での Web アクセスで IPv6 対応のコンテンツが見えて欲しいんですが、どうもそれが上手くいかないということがあって、使っていないというのが現状。

あと、 Squid も、3 系以降はマルチコアシステムに対応( "workers" というプロパティで、マルチプロセスにするかどうかを決められる)するようになって、随分とパフォーマンスを引き出すのが楽になりましたし、フィルタリング製品との連携なんかは、 Squid のほうが色々とノウハウもあって、楽なんですよねぇ。

ATS も、もう少し設定調べて、IPv6 な Web サイトも見れるようにしたいとは思っているんですが…。
時間見つけて、もう少し悪戦苦闘してみますか〜。

トラックバック(0)

コメントする