您的位置:首页 > 运维架构 > Apache

Apache Traffic Server安装配置指南

2015-12-16 14:55 751 查看
原文地址: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: