Apache Traffic Server安装配置指南

鲍永春
2023-12-01

原文地址: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目录下。

record.conf

该文件是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

cache.conf

该文件是用于配置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

stroage.conf

该文件是用于文件缓存的设置。修改缓存文件存储,当系统内核高于2.6.3时可以使用裸设备

/home5/data 250G

remap.conf

该文件主要是配置主机及回源地址

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分为三个主要进程

  • traffic_server:进程负责接受连接,处理协议请求,然后从缓存或源服务器获取对象并返回
  • traffic_manager进程是ATS的命令和控制设施,负责启动、监控和配置traffic_server进程,它也负责代理的端口配置、统计信息的接口、集群管理和虚拟IP的故障转移。如果traffic_manager检测到traffic_server进程失效,它立即重启traffic_server进程并且维护一个连接队列,保存此时到来的请求,完全重启后这个队列里的连接将按顺序被处理。
  • traffic_cop进程监视traffic_server和traffic_manager进程,此进程周期性的查询traffic_server和traffic_manager进程的健康状况,如果查询在一定间隔时间内未返回或者返回信息不正确,traffic_cop将重启traffic_manager和traffic_server进程。

需要注意的是,如果配置文件使用了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监控ATS

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

隐藏VIA中的版本信息

修改源码中的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

定制脚本

monitor

用于做为Traffic_cop的守护程序,在没有启运Traffic_cop请使用该脚本。需要注意的是,该脚本需要在root下使,并将其添加至root用户的crontab中。

atsctl

该脚本用于简化日常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

 类似资料: