Apache Traffic Server安装配置
作者:互联网
介绍
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 7.9 X86_64
应用:Apache Traffic Server 7.0.0
#官网
https://trafficserver.apache.org/
安装环境
yum install 'liblz*' -y
yum install net-tools -y
yum install gcc gcc-c++ glibc-devel -y
yum install autoconf automake pkgconfig libtool -y
yum install perl-ExtUtils-MakeMaker perl-URI.noarch -y
yum install openssl-devel tcl-devel expat-devel -y
yum install pcre pcre-devel zlib-devel xz-devel -y
yum install libcap libcap-devel flex hwloc hwloc-devel -y
yum install lua-devel curl curl-devel sqlite-devel bzip2 -y
1.安装pcre
[root@web_01 pcre-8.36]# wget http://ftp.exim.llorien.org/pcre/pcre-8.36.tar.gz
[root@web_01 pcre-8.36]# tar xf pcre-8.36.tar.gz
[root@web_01 pcre-8.36]# cd pcre-8.36
[root@web_01 pcre-8.36]# ./configure --prefix=/usr/local/trafficserver/pcre
[root@web_01 pcre-8.36]# make && make instal
2.安装trafficserver
[root@web_01 ~]# cd /usr/local/src/
[root@web_01 src]# wget https://mirrors.aliyun.com/apache/trafficserver/trafficserver-7.0.0.tar.bz2
[root@web_01 pcre-8.36]# tar xf trafficserver-7.0.0.tar.bz2
[root@web_01 pcre-8.36]# cd trafficserver-7.0.0
[root@web_01 trafficserver-7.0.0]# ./configure --prefix=/usr/local/trafficserver --with-pcre=/usr/local/trafficserver/pcre --enable-example-plugins --enable-experimental-plugins
[root@web_01 trafficserver-7.0.0]# make && make install
注:--enable-example-plugins --enable-experimental-plugins 这两条指令是为了安装ATS官方集成的插件
[root@web_01 trafficserver-7.0.0]# cd /usr/local/trafficserver/bin/
[root@web_01 bin]# ./trafficserver start
Starting Apache Traffic Server: [ Ok
Traffic Server进程管理
我们可以看到ATS服务启动了三个进程(traffic_cop、traffic_manager、traffic_server)来服务ats请求,管理,控制、监控系统的健康情况,如下图1所述:
- traffic_server 进程是ATS的事务处理引擎。负责接收和处理协议请求以及从本地缓存或源服务器提供资源。
- traffic_manager进程是用来命令和控制ATS的工具,负责启动、监控以及重新配置端口、统计接口、集群管理以及VIP故障转移。
如果traffic_manager进程检测到traffic_server进程失败,它不仅会立即重启该进程,而且会为所有转入的请求维护一个连接队列。在traffic_server重新启动前的几秒内传入的所有连接将被保存在一个队列,并以FIFO的方式处理,这个连接队列接收任何server故障重启时的连接。
- traffic_top进程监控traffic_server和traffic_manager进程的健康状况。
traffic_top进程通过抓取合成web页面的心跳请求方式周期性地(每分钟若干次)查询traffic_server和traffic_manager进程。如果失败事件发生(如果在超过时间间隔内没有收到请求或者收到错误的请求)traffic_top重启traffic_server和traffic_manager。
简单配置
#修改records.config文件
#25行
CONFIG proxy.config.http.server_ports STRING 80
#29行
CONFIG proxy.config.http.insert_response_via_str INT 2
#添加
CONFIG proxy.config.log.custom_logs_enabled INT 1
#添加
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
#添加
CONFIG proxy.config.diags.show_location INT 1
#修改remap.config文件添加如下:
regex_map http://(.*) http://$1
#修改logs_xml.config文件添加如下:
<LogFormat>
<Name = "ats_access_log"/>
<Format = "%<cqtd>/%<cqtt> %<cqhm> \"%<cquuc>\" %<pssc> %<ttms> %<cqhl>
%<psql> %<crc> \"%<chi>\" %<pqsn> \"%<{Referer}cqh>\" \"%<psct>\" \"%<{User-agent}cqh>\"
%<csssc> %<pqsi>"/>
</LogFormat>
<LogObject>
<Format = "ats_access_log"/>
<Filename = "access"/>
<Protocols = "http"/>
<RollingEnabled = "3"/>
<RollingIntervalSec = "7200"/>
<RollingSizeMb = "2048"/>
</LogObject>
#修改storage.config文件
var/trafficserver 4G
#重启服务
[root@controller bin]# pwd
/usr/local/trafficserver/bin
[root@controller bin]# ./trafficserver restart
#测试
[root@controller bin]# curl -vx 127.0.0.1:80 -o /dev/null 'http://news.sohu.com/'
* About to connect() to proxy 127.0.0.1 port 80 (#0)
* Trying 127.0.0.1...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET http://news.sohu.com/ HTTP/1.1
> User-Agent: curl/7.29.0
> Host: news.sohu.com
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< Content-Type: text/html;charset=UTF-8
< Content-Length: 170289
< Server: ATS/7.0.0
< Date: Fri, 01 Dec 2017 03:26:44 GMT
< Cache-Control: max-age=120
< X-From-Sohu: X-SRC-Cached
< FSS-Cache: EXPIRED from 9206494.16415464.10543436
< Accept-Ranges: bytes
< FSS-Proxy: Powered by 3308164.4618894.4645016
< Age: 0
< Proxy-Connection: keep-alive
< Via: http/1.1 controller (ApacheTrafficServer/7.0.0 [cSsSfU])
<
{ [data not shown]
100 166k 100 166k 0 0 152k 0 0:00:01 0:00:01 --:--:-- 152k
* Connection #0 to host 127.0.0.1 left intact
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
该文件主要是配置主机及回源地址
第一种:
regex_map http://(.*) http://$1
第二种:
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
日常操作
启动、关闭、重启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
docker部署:
第一种:
docker run -d --name TrafficServer -p 8080:8080 shaker/trafficserver
第二种:
docker-trafficserver:用于运行 Apache Traffic Server (ATS) 的 Docker 配置
5.3.0
docker run -d --name trafficserver -p 8080:80 -p 8443:443 -e TRAFFICSERVER_HOST=47.99.57.254 -e TRAFFICSERVER_DEBUG=true eanushan/trafficserver
标签:http,--,Server,Traffic,proxy,trafficserver,Apache,traffic,config 来源: https://blog.csdn.net/weixin_45623111/article/details/122174588