ATS(Apache Traffic Server)学习笔记

ATS日常随笔

Posted by dushenzhi on April 3, 2018

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_servertraffic_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_strproxy.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.configremap.configcache.configlogs_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个进程,见下图: /img/ats-notes/ProcessList.jpg

  • 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'

/img/ats-notes/NotFound.jpg

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