原文地址:https://www.oldyang.net/archives/168
Apache Traffic Server(ATS或TS)是一个高性能的、模块化的 HTTP 代理和缓存服务器。Traffic Server 最初是 Inktomi 公司的商业产品,该公司在 2003 年被 Yahoo 收购,之后 Traffic Server 一直在 Yahoo 内部使用长达 4 年,直到 2009 年 8 月 Yahoo 向 Apache 软件基金会(ASF)贡献了源代码,并于 2010 年 4 月成为了 ASF 的顶级项目(Top-Level Project)。 Apache Traffic Server 现在是一个开源项目,开发语言为C++。
操作系统:CentOS 5.8 X86_64
应用:Apache Traffic Server 4.1.2
安装相关的依赖包
yum install pkgconfig libtool gcc make openssl tcl expat pcre pcre-devel libcap flex hwloc lua curses curl tcl-devel
进行安装,建议安装在普通用户下
./configure --prefix=$HOME/local/trafficserver-4.1.2
make -j 24
make install
cd $HOME//local
ln -s trafficserver-4.1.2 trafficserver
sed -i '/^PATH/s/$/:$HOME\/local\/trafficserver\/bin/g' ~/.bash_profile
source ~/.bash_profile
所有的配置文件都在etc/trafficserver目录下。
该文件是ATS的核心主配置文件
修改启动ATS用户
CONFIG proxy.config.admin.user_id STRING webserver
将默认用端口更改为80,用于反向代理
CONFIG proxy.config.http.server_ports STRING 80
关闭VIA请求到原服务器头部信息
CONFIG proxy.config.http.insert_request_via_str INT 0
配置缓存服务器响应头部
CONFIG proxy.config.http.insert_response_via_str INT 2
启用所有的Accept-Encoding头部规范化:
CONFIG proxy.config.http.normalize_ae_gzip INT 1
关闭缓存动态内容
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
修改内存缓存大小,建议使用1/2或1/3物理内存
CONFIG proxy.config.cache.ram_cache.size INT 25297631232
修改缓存单个文件最大尺寸
CONFIG proxy.config.cache.ram_cache_cutoff INT 119430400
修改默认缓存算法
CONFIG proxy.config.cache.ram_cache.algorithm INT 1
修改当不配置主机时,自动跳转地址
proxy.config.header.parse.no_host_url_redirect STRING http://www.wapka.com
启于HTTP WEB UI,在文件底部添加以下两行
CONFIG proxy.config.http_ui_enabled INT 3
CONFIG proxy.config.http.enable_http_info INT 1
该文件是用于配置ATS的缓存时效等。为各类型的文件添加缓存过期时间
dest_domain=wapka.com suffix=gif revalidate=6h
dest_domain=wapka.com suffix=jpg revalidate=6h
dest_domain=wapka.com suffix=jpeg revalidate=6h
dest_domain=wapka.com suffix=png revalidate=6h
dest_domain=wapka.com suffix=bmp revalidate=6h
dest_domain=wapka.com suffix=swf revalidate=6h
dest_domain=wapka.com suffix=ico revalidate=6h
dest_domain=wapka.com suffix=js revalidate=6h
dest_domain=wapka.com suffix=css revalidate=6h
dest_domain=wapka.com revalidate=12h
该文件是用于文件缓存的设置。修改缓存文件存储,当系统内核高于2.6.3时可以使用裸设备
/home5/data 250G
该文件主要是配置主机及回源地址
map http://s1.wapka.com/ http://s.wapka.in/
reverse_map http://s.wapka.in http://s1.wapka.com
还可以配置区别跳转
regex_redirect http://[0-9].wapka.in http://www.wapka.com
也可以配置防盗链,格式为:用户请求地址,回源地址,返回用户地址,允许的domain
map_with_referer down0.game.uc.cn/ugameun/(.*)?filename=(.*) http://down0.game.uc.cn/ugameun/$1 http://down0.game.uc.cn/ugameun/$2 *\.haha.cn
启用HTTP WEB UI
map http://localhost/cache-internal/ http://{cache-internal}
map http://localhost/cache/ http://{cache} @action=allow @src_ip=127.0.0.1
map http://localhost/stat/ http://{stat} @action=allow @src_ip=127.0.0.1
map http://localhost/test/ http://{test} @action=allow @src_ip=127.0.0.1
map http://localhost/hostdb/ http://{hostdb} @action=allow @src_ip=127.0.0.1
map http://localhost/net/ http://{net} @action=allow @src_ip=127.0.0.1
map http://localhost/http/ http://{http} @action=allow @src_ip=127.0.0.1
ATS分为三个主要进程
需要注意的是,如果配置文件使用了1024以下端口,那么就需要在root下启动traffic server。如果使用suid的方式会使ATS不停的coredump的情况,目前原因未知。
启动、关闭、重启traffic_cop.(需要了解是的操作traffic_cop进程会影响其它两个进程)
bin/trafficserver start
bin/trafficserver stop
bin/trafficserver restart
启动、关闭traffic_server(以下操作需要先启动traffic_cop)
bin/traffic_line -U
bin/traffic_line -S
重启traffic_manager。
bin/traffic_line -L
重载配置文件
bin/traffic_line -x
清除全部缓存
bin/traffic_server -Cclear
清除指定缓存
URL=$2
HOST=`echo ${URL} | awk -F"/" '{print $3}'`
URI=`echo ${URL} | cut -d"/" -f4-`
curl -X PURGE -I -H Host:${HOST} http://127.0.0.1/$URI
查看日志
bin/traffic_logcat var/log/trafficserver/squid.blog
日志分析
bin/traffic_logstats var/log/trafficserver/squid
Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告工具,如收集服务器的系统信息(cpu,mem等),以及应用数据(nginx、swift等),收集到的数据存储在服务器磁盘上,可以随时查询历史信息,也可以将数据发送到nagios报警。
Tsar能够比较方便的增加模块,只需要按照tsar的要求编写数据的采集函数和展现函数,就可以把自定义的模块加入到tsar中。更多信息可以查看它的官方网站:http://tsar.taobao.org/
安装tsar的ats模块,可以非常方便查看、分析ats状态。
wget -O tsar.zip https://github.com/alibaba/tsar/archive/master.zip --no-check-certificate
unzip tsar.zip
cd tsar
修改conf/tsar.conf,添加以下配置
#trafficserver#
mod_ts_cache on
mod_ts_client on
mod_ts_codes on
mod_ts_conn on
mod_ts_err on
mod_ts_os on
mod_ts_storage on
修改module/mod_ts_client.c中,修改以下配置
const static char *sock_path = "/var/run/trafficserver/mgmtapisocket";
修改为实际路径
const static char *sock_path = "/home/webserver/local/trafficserver/var/trafficserver/mgmtapisocket";
修改完成后,执行安装
make
make install
修改源码中的trafficserver-4.1.2/mgmt/RecordsConfig.cc
将下列中的ApacheTrafficServer更改为如NemoCacheServer
{RECT_CONFIG, "proxy.config.http.request_via_str", RECD_STRING, "ApacheTrafficServer/"
{RECT_CONFIG, "proxy.config.http.response_via_str", RECD_STRING, "ApacheTrafficServer/"
将下列中的ATS修改为NCS
RECT_CONFIG, "proxy.config.http.response_server_str", RECD_STRING, "ATS/"
修改configure中的PACKAGE_VERSION为空。
使用裸设备后可以使用ATS自身的文件子系统,可以获得更好的IO性能,也是官方推荐的方式。下面为例
删除分区,不使用操作系统自带分区
`fdisk -l /dev/sde`
修改相关设备权限并创新相关设备,OWNER和GROUP需要根据实际情况进行修改
chmod a+rw /dev/sde
vim /etc/udev/rules.d/99-ats.rules
KERNEL=="sde",MODE="0660",OWNER="webserver",GROUP="webserver"
添加至ATS的stroge.config的最后
vim etc/trafficserver/storage.config
/dev/sde
重启ATS后生效
通过开启httprespone的VIA功能来快速确认缓存文件状态。首先修改下面的值为
CONFIG proxy.config.http.insert_response_via_str INT 2
通过头部中的VIA信息,如下面信息中的VIA字段中的”CHs f ”
HTTP/1.1 200 OK
Date: Tue, 18 Mar 2014 06:03:24 GMT
Server: NCS
Last-Modified: Wed, 12 Mar 2014 10:11:15 GMT
ETag: "524002f-1802-4f4660e8ff6c0"
Accept-Ranges: bytes
Content-Length: 6146
Content-Type: image/jpeg
Age: 10
Connection: keep-alive
Via: http/1.1 nemo-search1 (NemoCacheServer [cHs f ])
中括号中的字符是缓存状态的加密字段,可以在http://trafficserver.apache.org/tools/via进行查询。得到如下信息:
Proxy request results:
Result of Traffic Server cache lookup for URL:in cache, fresh (a cache "HIT")
Response information received from origin server:no server connection needed
Result of document write-to-cache:no cache write performed
用于做为Traffic_cop的守护程序,在没有启运Traffic_cop请使用该脚本。需要注意的是,该脚本需要在root下使,并将其添加至root用户的crontab中。
该脚本用于简化日常ats操作之用。
Usage: atsctl[ help | start | stop | restart | reload | stat | purge | purge all ] - help: print this help message - start: Start traffic server - stop: Stop traffic server - restart Restart traffic server - reload Reread Config Files - purge Purge the specified URL cache. Example: atsctl purge http://URL
- purge all Purge all cache