SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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 は良いの?

Mais conteúdo relacionado

Mais procurados

脆弱性診断って何をどうすればいいの?(おかわり)
脆弱性診断って何をどうすればいいの?(おかわり)脆弱性診断って何をどうすればいいの?(おかわり)
脆弱性診断って何をどうすればいいの?(おかわり)脆弱性診断研究会
 
Try new transport protocol SRT (ver. 2)
Try new transport protocol SRT  (ver. 2)Try new transport protocol SRT  (ver. 2)
Try new transport protocol SRT (ver. 2)Tetsuyuki Kobayashi
 
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所Masahiro NAKAYAMA
 
Nextcloud と Libreoffice online について
Nextcloud と Libreoffice online についてNextcloud と Libreoffice online について
Nextcloud と Libreoffice online についてTetsurou Yano
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析euphoricwavism
 
THETA プラグインで WebRTC やってみた
THETA プラグインでWebRTC やってみたTHETA プラグインでWebRTC やってみた
THETA プラグインで WebRTC やってみたHideki Shiro
 
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~Hinemos
 
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門Fujikido
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)universato
 
本当は楽しいインターネット
本当は楽しいインターネット本当は楽しいインターネット
本当は楽しいインターネットYuya Rin
 
ReviveAdserverではじめるパーソナライズドリターゲティング
ReviveAdserverではじめるパーソナライズドリターゲティングReviveAdserverではじめるパーソナライズドリターゲティング
ReviveAdserverではじめるパーソナライズドリターゲティングNobumasa Ura
 
Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目cct-inc
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Index tuning
Index tuningIndex tuning
Index tuningMicrosoft
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応歩 柴田
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発Mitsuru Katoh
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜Yui Ito
 

Mais procurados (20)

脆弱性診断って何をどうすればいいの?(おかわり)
脆弱性診断って何をどうすればいいの?(おかわり)脆弱性診断って何をどうすればいいの?(おかわり)
脆弱性診断って何をどうすればいいの?(おかわり)
 
Try new transport protocol SRT (ver. 2)
Try new transport protocol SRT  (ver. 2)Try new transport protocol SRT  (ver. 2)
Try new transport protocol SRT (ver. 2)
 
qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所qpstudy 2014.04 ミドルウェア設計の勘所
qpstudy 2014.04 ミドルウェア設計の勘所
 
Nextcloud と Libreoffice online について
Nextcloud と Libreoffice online についてNextcloud と Libreoffice online について
Nextcloud と Libreoffice online について
 
Pythonでパケット解析
Pythonでパケット解析Pythonでパケット解析
Pythonでパケット解析
 
THETA プラグインで WebRTC やってみた
THETA プラグインでWebRTC やってみたTHETA プラグインでWebRTC やってみた
THETA プラグインで WebRTC やってみた
 
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
 
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)Rubyのエラーをちょっと整理(初級者向け)
Rubyのエラーをちょっと整理(初級者向け)
 
本当は楽しいインターネット
本当は楽しいインターネット本当は楽しいインターネット
本当は楽しいインターネット
 
ReviveAdserverではじめるパーソナライズドリターゲティング
ReviveAdserverではじめるパーソナライズドリターゲティングReviveAdserverではじめるパーソナライズドリターゲティング
ReviveAdserverではじめるパーソナライズドリターゲティング
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目Msを16倍出し抜くwpf開発1回目
Msを16倍出し抜くwpf開発1回目
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
Index tuning
Index tuningIndex tuning
Index tuning
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 

Traffic Server を使ってみた