ATS简易教程
lua插件目录:{ats}/etc/trafficserver/lua/
日志目录:{ts}/var/log/trafficserver/
插件目录:{ts}/libexec/trafficserver/
ATS脚本说明
ATS各种启动脚本位于bin/
目录下:
- 主程序名称是
traffic_server
,提供{start|stop|status|restart|condrestart}
这几种启动参数 - traffic_manager:为
traffic_ctl
提供服务 - traffic_cop:独立的监控程序,监控
traffic_server
和traffic_manager
的职责和内存交换空间使用情况,发现异常重启进程。 - traffic_crashlog:由
traffic_server
进程启动,在traffic_server
崩溃的时候打印一个崩溃报告到log目录。 - traffic_ctl:在线配置一些
traffic_server
可以配置的参数 - traffic_logcat:将
trafficserver
的二进制log文件转变成可读的ASCII log - traffic_logstats:
trafficserver
的log分析工具 - traffic_via:可以配置
proxy.config.http.insert_request_via_str
、proxy.config.http.insert_response_via_str
两个参数使得所有的数据的http头部都携带VIA信息(表示cache状态,可以看出是从哪里拿来的),wget这个文件就会在http头部看到这个信息,而这个信息是被traffic server
编码过的,使用traffic_via
命令可以将这个信息解码就可以看到缓存的获取路径。 - traffic_sac:standalonecollator。日志收集器,用在
traffic server
集群中。可以用来收集各个节点的日志集中到本机进行处理。一个节点可以不安装traffic server
,只安装sac可以发挥更大的日志能力。 - tspush:不需要用户请求可以直接使用这个命令将内容投递到traffic server的cache中,使用这个命令需要打开
proxy.config.http.push_method_enabled
选项 - tsxs:插件编译程序。用来编译和安装插件。
- traffic_top:一个方便的查看当前trafficserver内部状态的程序。要编译这个必须要有
libncurses5-dev
库,否则会静悄悄不安装。
ATS安装
从官方网站下载安装包
wget http://mirrors.hust.edu.cn/apache/trafficserver/trafficserver-5.3.2.tar.bz2
tar -xjvf trafficserver-5.3.2.tar.bz2 #解压
cd trafficserver-5.3.2
./configure --prefix=/opt/ts #指定安装
make & make install
cd /opt/ts #进入编译好的ATS目录
sudo bin/traffic_server -R 1 #跑通测试用例
ATS基本配置
ATS的基本配置文件位于etc/trafficserver/
目录下*.config
文件,配置参数基本上都是键值对形式存在
其中最重要的几个配置records.config
, remap.config
, cache.config
, logs_xml.config
- records.config 核心配置文件
- remap.config 反向代理回源映射配置文件
- cache.config 缓存相关配置文件
ATS基本操作
启动ATS服务
bin/trafficserver start
查看ATS服务是否启动
bin/trafficserver status
重启ATS服务
bin/trafficserver restart
关闭ATS服务
bin/trafficserver stop
ATS服务正常启动后,系统会启动3个进程,见下图:
-
traffic_server 实际提供ATS服务进程,该处理引擎主要负责处理接受服务连接、处理请求协议、提供缓存和回源服务
-
traffic_manager ats服务管理和控制进程,主要负责处理服务启动、服务监控、重新生效配置等,同时还负责处理负责代理端口的自动配置、统计服务、集群管理和虚拟IP容错。 如果
traffic_manager
进程检测不到traffic_server
存在,将会立即重启traffic_server
进程,同时维护所有进来的请求到一个连接队列,待服务恢复后按照先进先出的原则进行处理,服务重启过程中所有用户的请求原则上都不会丢失。 -
traffic_cop 该进程主要是用于健康检查,会定期(每分钟若干次)对
traffic_manager
进程和traffic_server
进程发送心跳请求,获取合成网页,当事件失败(超时未响应或错误响应)时,traffic_cop
会去重启traffic_manager
进程和traffic_server
进程。查看
traffic_server
进程是否启动,使用如下命令:pgrep -l traffic_manager
如果traffic_server进程没有启动,使用如下命令启动:
./traffic_manager
基本操作:
1.查询ATS(查)
查询一个不存在的页面:
curl -i 'http://localhost:7005/test/testdushenzhi123321' -H 'Host:example.com'
2.向ATS手动推送一个页面(增)
curl -H 'Content-Type: text/htm' -X PUSH -d '<h1>This is a test page!</h1>' http://localhost:8888/test
如果页面推送失败,进行如下操作
编辑ip_allow.config
配置文件,将ip地址添加PUSH
操作为允许
修改records.config
中的配置,支持push
操作:
CONFIG proxy.config.http.push_method_enabled INT 1
然后执行命令:traffic_ctl config reload
,使配置生效
注意:push操作时必须带上
Content-length
头,长度必须为headers字节长度和body字节长度的总和,不正确(太大或太小)的长度值将会导致错误结果。
可以使用内置的tspush
脚本进行push
页面(不好用,没送成功)
3.删除ATS上一个页面(删)
通过向ATS服务发送http purge
方法请求删除指定的缓存数据。如果缓存数据存在并删除则响应200 OK
的http消息,否则相应404 File Not Found
消息。具体命令如下:
curl -vX PURGE -H 'Host:example.com' http://localhost:7005/test
curl -vX PURGE --resolve example.com:80:127.0.0.1 http://example.com/remove_me.jpg
参考资料
官方网站地址:http://trafficserver.apache.org/
官方文档地址:https://docs.trafficserver.apache.org/en/latest/index.html
github地址:https://github.com/apache/trafficserver
tslua插件地址:https://github.com/portl4t/ts-lua
cache策略参考: http://blog.zymlinux.net/index.php/archives/1090
不错的ATS运维手册: https://letong.gitbooks.io/website/content/cache/ats.html
参考技术博客:
http://cnsbear.iteye.com/blog/2060041
http://blog.csdn.net/ljy1988123/article/details/50386458
http://blog.linuxphp.org/tag/trafficserver/
ATS Lua插件
官方文档地址:https://github.com/portl4t/ts-lua/wiki/Doc#tsshareddictset