SlideShare a Scribd company logo
Traffic Server を使ってみた


    社内インフラ勉強会
   2011/8/22 藤本和寿
Traffic Serverとは

Apache Traffic Server(略称 ATS, TS)

プロキシサーバーでSquidとかVarnishとかの仲間

日本語の文章が本当に少ないし、英語の文章も少ない
Traffic Serverとは

というか、公式のドキュメントしかない


3.0.1がreleaseされているのに3系のドキュメントがない気が…
目的

前の勉強会でVarnishを使ってみた。

Varnishはオンメモリのキャッシュだと使っているところがあるらしい
けど、ディスクでキャッシュさせるような使い方をしようとして失敗し
ている人がたくさんいる。

Traffic Server ならどうかな…
Varnishの微妙な点

前に検証したときは
 ● 指定したキャッシュ容量を越えるとキャッシュを捨てた
 ● リスタートをするとキャッシュを捨てた
 ● 勝手にリスタートしたりキャッシュがたまらなくなったり
Squidの微妙な点

● rebuilding…があるので気軽にリスタートできない
● 古い
環境

Debian 6.0.2
Apache Traffic Server 3.0.1
起動方法

trafficserver {start|stop|restart}
設定

設定ファイルがいろいろある

bypass.config,cache.config,congestion.config,filter.config,
hosting.config,icp.config,ip_allow.config,logs.config,
log_hosts.config,logs_xml.config,parent.config,partition.config,
records.config,remap.config,splitdns.config,
ssl_multicert.config,storage.config,update.config
設定

今回使ったのは

1. remap.config
    reverse proxyの設定
2. storage.config
    cacheする先の設定
3. records.config
   いろいろチューニングするためのメインの設定
    例.メモリのサイズ
設定

他には

● cache.config
  キャッシュルールの設定
● parent.config
  多段キャッシュとかsibling
● ip_allow.config
  アクセス制御
remap.config

reverse proxy の設定

1. 全部 local の dispatcher に任せる
  map / http://localhost:1080
2. 自分でdispatcherみたいなのをするには…
  192.168.0.1がorigin
  regex_map http://img(01|02).pixiv.net/ http://192.168.0.1:80/ 
storage.config

キャッシュする先の設定

1. 128MB のキャッシュファイル
   指定ディレクトリにcache.dbをつくる
   /usr/local/var/trafficserver 128M
2. Raw device
   こう書けば、filesystemがない状態のdiskを指定できる
   ディスクキャッシュが使われない
   /dev/sdb
   検証時はこれを使った
records.config

1. メモリを2G使う
  CONFIG proxy.config.cache.ram_cache.size INT 2147483648
使ってみた

192.168.0.15にTraffic Serverを設定
画像のキャッシュとして、キャッシュクラスタに追加

画像フロントで設定
upstream cache_cluster {
  consistent_hash $host$request_uri;
  server 192.168.0.11:8080 weight=100;
…
  server 192.168.0.15:8080 weight=100;
}
使ってみた
munin

ないので作る

traffic_line -r hoge でいろいろパラメータが取れるのでSquidとの比
較用に使えそうな値をグラフ化
使ってみた




        リクエスト数
使ってみた




        ヒット率
使ってみた




        キャッシュ
使ってみた

restart してもキャッシュが消えない

rebuilding がない(時間がかからない?)
使ってみた

キャッシュを置くメモリの領域を2GBにしてみる

デフォルトでは指定したディスク1Gあたり1MB?
でもアプリケーションを起動するともっと使う
使ってみた
使ってみた




        iowait、変わらない
使ってみた




    ディスクから読み出す量はちゃんと減ってる
  2KBのwriteがずっと走ってるのはよく分からない
log

Squid形式のlogが出せる

$ curl -H 'Host:img01.pixiv.net' localhost:8080
$ tail /usr/local/var/log/trafficserver/squid.log
1312450988.955 1 127.0.0.1 TCP_MISS/200 300 GET http:
//localhost:1080/ - DIRECT/localhost text/html -
log

$ tail -f squid.log
1312450464.079 40 192.168.0.6 TCP_MISS/200 17412 GET
http://localhost:1080/img/arisuhideki/17932429_s.jpg -
DIRECT/localhost image/jpeg -
1312450464.531 0 192.168.0.6 TCP_HIT/200 20542 GET http:
//localhost:1080/img/sikiura/20761431_s.jpg - NONE/-
image/jpeg -
log

Squid形式のログを出してかつ、asciiで出力する

./records.config:
CONFIG proxy.config.log.squid_log_is_ascii INT 0
CONFIG proxy.config.log.squid_log_enabled INT 1
traffic_line

管理ツール

ヒット率
$ sudo traffic_line -r proxy.node.cache_hit_ratio
0.182696

キャッシュの空き領域
$ sudo traffic_line -r proxy.node.cache.percent_free
0.967941


http://trafficserver.apache.org/docs/v2/admin/cli.htm#1025718
traffic_line

hoge.configを編集したら、設定を反映
$ sudo traffic_line -x

メモリのサイズとかrestartが必要な設定もある
まとめ

1. VarnishはSquidに置き換えるのに難しかった
2. Traffic Serverは指定したサイズ以上のキャッシュを使おうとして
   も挙動はおかしくならないし、restartしてもキャッシュは消えない
3. SquidやVarnishのような優れた管理ツールはない
今後

● キャッシュを捨てるアルゴリズムの検証
  →メモリもディスクも
● 使用するメモリ領域の検証
● ほんとうに raw device は良いの?

More Related Content

What's hot

クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようNTT Communications Technology Development
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティKazushi Kamegawa
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Hiroyuki Wada
 
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)Amazon Web Services Japan
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWSRyusaburo Tanaka
 
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニアakira6592
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例briscola-tokyo
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
 
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あう
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あうセキュリティの基本とAWSでのセキュリティ対策をフルコースで味あう
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あうShinodaYukihiro
 
PHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うPHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うTaiji INOUE
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-Yuta Imai
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみたKumano Ryo
 
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Takuro Sasaki
 

What's hot (20)

クラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えようクラウドを最大限活用するinfrastructure as codeを考えよう
クラウドを最大限活用するinfrastructure as codeを考えよう
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティ
 
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
 
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
 
Proxy War
Proxy WarProxy War
Proxy War
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS非SAPの人に贈るSAP on AWS
非SAPの人に贈るSAP on AWS
 
新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
Kongの概要と導入事例
Kongの概要と導入事例Kongの概要と導入事例
Kongの概要と導入事例
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
vSphere環境での自動化とテスト
vSphere環境での自動化とテストvSphere環境での自動化とテスト
vSphere環境での自動化とテスト
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
「var禁止」禁止
「var禁止」禁止「var禁止」禁止
「var禁止」禁止
 
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あう
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あうセキュリティの基本とAWSでのセキュリティ対策をフルコースで味あう
セキュリティの基本とAWSでのセキュリティ対策をフルコースで味あう
 
PHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使うPHPのセッション管理にDynamoDBを使う
PHPのセッション管理にDynamoDBを使う
 
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
EC2のストレージどう使う? -Instance Storageを理解して高速IOを上手に活用!-
 
Azure Arc 概要
Azure Arc 概要Azure Arc 概要
Azure Arc 概要
 
元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた元OracleMasterPlatinumがCloudSpanner触ってみた
元OracleMasterPlatinumがCloudSpanner触ってみた
 
Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発Swaggerで始めるモデルファーストなAPI開発
Swaggerで始めるモデルファーストなAPI開発
 

Traffic Server を使ってみた