由于ATS 5.3是社区刚推出的LTS最新版本,比以前的版本改动幅度相当大,所以我决定抛弃以前的经验,从零开始探索该版本。下面是我的摸索实录。
1.下载源码
cd /usr/local/src
wget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2"
tar jxvf trafficserver-5.3.0.tar.bz2
cd trafficserver-5.3.0
进入源码目录,阅读README文件,获取在CentOS 6.3上面的安装指导,似乎看到的新东西不多,还是从官网安装指导开始
https://cwiki.apache.org/confluence/display/TS/CentOS
2.安装依赖包
yum -y install git gcc gcc-c++ autoconf automake libtool pkgconfig pcre-devel tcl-devel expat-devel openssl-devel
yum -y install perl-ExtUtils-MakeMaker
yum -y install libcap libcap-devel hwloc hwloc-devel
yum -y install libunwind libunwind-devel
3.确保系统日志开启
使用下面的命令
service rsyslog status
查看系统日志有没有打开,没有就开启,以避免下面启动ATS出错时没有任何日志信息。
创建ATS运行的用户名和组名
这一步非常关键,关系到后面make install步骤的顺利性,故拿到前面来做。
新建用户
useradd -s /sbin/nologin tserver
我们打算将tserver作为ATS所在的user和group名称。使用如下命令检测用户组是否创建成功
4.编译安装
首先使用./configure -h来查看支持
./configure --prefix=/opt/ats --with-user=tserver --with-group=tserver --enable-reclaimable-freelist --enable-debug --enable-experimental-plugins 内网测试不加--enable-interim-cache
make -j 4
make install -j 4
5.配置
主要有这几个文件需要配置:
records.config,storage.config,logs_xml.config
CONFIG proxy.config.http.server_ports STRING 8081 #跟线上保持一致
traffic_line -s proxy.config.reverse_proxy.enabled -v 0
traffic_line -s proxy.config.url_remap.remap_required -v 0 #1为只反向代理,0为正向+反向代理
traffic_line -s proxy.config.url_remap.pristine_host_hdr -v 0
traffic_line -s proxy.config.http.insert_request_via_str -v 1
traffic_line -s proxy.config.http.insert_response_via_str -v 2 #会产生类似Via:http/1.1 localhost (ApacheTrafficServer/4.2.3 [cHs f ])的头
traffic_line -s proxy.config.http.cache.required_headers -v 0 #配置在源服务器没有定义缓存的情况缓存文件
traffic_line -s proxy.config.http.cache.enable_default_vary_headers -v 1
traffic_line -s proxy.config.cache.ram_cache_cutoff -v 40960 #非常关键,确定缓存命中是在RAM cache还是SSD中
CONFIG proxy.config.log.custom_logs_enabled INT 1
CONFIG proxy.config.log.squid_log_enabled INT 0
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
#logs_xml.config
<LogFormat>
<Name = "access"/>
<Format = "%<cqtq> %<ttms> %<pssc> %<sssc> [%<cqtt>] %<{X-Forwarded-For}cqh> \"%<cqtx>\" %<psql> \"%<pqsi>\" %<crc>:%<phr> %<{Referer}cqh> \"%<{User-Agent}cqh>\" %<psct>"/>
</LogFormat>
<LogObject>
<Format = "access"/>
<Filename = "access"/>
</LogObject>
6.添加环境变量和设置别名
echo "export PATH=/opt/ats/bin:$PATH" >> /etc/profile
更新配置文件
source /etc/profile
再次确认环境变量是否添加成功
echo $PATH
source ~/.bashrc
7.启动测试
trafficserver start
当启动OK后,使用下面的命令查看进程启动情况,多试几次,观察traffic_server进程pid是否有变动,如果有变动就说明启动过程有问题,需要排查详细问题
curl -o /dev/null -vx 127.0.0.1:8081 -H "Accept-Encoding: gzip,deflate,sdch" "http://news.sohu.com"
观察是否获取成功,如果获取成功,连续执行3次同一个请求,观察缓存状态的变化情况,是否是下面的状态码改变?
diags.config 专门记录系统诊断日志,比如缓存索引文件,hostdb文件,清除磁盘情况,缓存是否可用等
1.下载源码
cd /usr/local/src
wget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2"
tar jxvf trafficserver-5.3.0.tar.bz2
cd trafficserver-5.3.0
进入源码目录,阅读README文件,获取在CentOS 6.3上面的安装指导,似乎看到的新东西不多,还是从官网安装指导开始
https://cwiki.apache.org/confluence/display/TS/CentOS
2.安装依赖包
yum -y install git gcc gcc-c++ autoconf automake libtool pkgconfig pcre-devel tcl-devel expat-devel openssl-devel
yum -y install perl-ExtUtils-MakeMaker
yum -y install libcap libcap-devel hwloc hwloc-devel
yum -y install libunwind libunwind-devel
3.确保系统日志开启
使用下面的命令
service rsyslog status
查看系统日志有没有打开,没有就开启,以避免下面启动ATS出错时没有任何日志信息。
创建ATS运行的用户名和组名
这一步非常关键,关系到后面make install步骤的顺利性,故拿到前面来做。
新建用户
useradd -s /sbin/nologin tserver
我们打算将tserver作为ATS所在的user和group名称。使用如下命令检测用户组是否创建成功
cat /etc/passwd |cut -f 1 -d : | grep tserver
4.编译安装
首先使用./configure -h来查看支持
./configure --prefix=/opt/ats --with-user=tserver --with-group=tserver --enable-reclaimable-freelist --enable-debug --enable-experimental-plugins 内网测试不加--enable-interim-cache
make -j 4
make install -j 4
5.配置
主要有这几个文件需要配置:
records.config,storage.config,logs_xml.config
我要达到的效果是正反向代理,自定义磁盘,自定义日志等功能。注意records.config文件有很大的精简。
因为是公司内网虚拟机,配置较差,这里不对磁盘和缓存相关选项做配置了。
#records.configCONFIG proxy.config.http.server_ports STRING 8081 #跟线上保持一致
traffic_line -s proxy.config.reverse_proxy.enabled -v 0
traffic_line -s proxy.config.url_remap.remap_required -v 0 #1为只反向代理,0为正向+反向代理
traffic_line -s proxy.config.url_remap.pristine_host_hdr -v 0
traffic_line -s proxy.config.http.insert_request_via_str -v 1
traffic_line -s proxy.config.http.insert_response_via_str -v 2 #会产生类似Via:http/1.1 localhost (ApacheTrafficServer/4.2.3 [cHs f ])的头
traffic_line -s proxy.config.http.cache.required_headers -v 0 #配置在源服务器没有定义缓存的情况缓存文件
traffic_line -s proxy.config.http.cache.enable_default_vary_headers -v 1
traffic_line -s proxy.config.cache.ram_cache_cutoff -v 40960 #非常关键,确定缓存命中是在RAM cache还是SSD中
CONFIG proxy.config.log.custom_logs_enabled INT 1
CONFIG proxy.config.log.squid_log_enabled INT 0
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
#logs_xml.config
<LogFormat>
<Name = "access"/>
<Format = "%<cqtq> %<ttms> %<pssc> %<sssc> [%<cqtt>] %<{X-Forwarded-For}cqh> \"%<cqtx>\" %<psql> \"%<pqsi>\" %<crc>:%<phr> %<{Referer}cqh> \"%<{User-Agent}cqh>\" %<psct>"/>
</LogFormat>
<LogObject>
<Format = "access"/>
<Filename = "access"/>
</LogObject>
6.添加环境变量和设置别名
echo "export PATH=/opt/ats/bin:$PATH" >> /etc/profile
更新配置文件
source /etc/profile
再次确认环境变量是否添加成功
echo $PATH
这样的话,在命令行直接运行trafficserver start就可以识别了。
vim ~/.bashrc
在尾部加入
alias ats_db='cd /opt/ats/var/trafficserver;pwd'
alias ats_log='cd /opt/ats/var/log/trafficserver;pwd'
alias ats_conf='cd /opt/ats/etc/trafficserver;pwd'
alias ats_lib='cd /opt/ats/libexec/trafficserver;pwd'
alias ats_bin='cd /opt/ats/bin;pwd'
alias ats_stat='ps auxf | grep traffic | grep -v grep'
alias ats_ports='netstat -nltp | grep traffic | grep -v grep'
使文件生效
source ~/.bashrc
7.启动测试
trafficserver start
当启动OK后,使用下面的命令查看进程启动情况,多试几次,观察traffic_server进程pid是否有变动,如果有变动就说明启动过程有问题,需要排查详细问题
ps auxf | grep traffic | grep -v grep
curl -o /dev/null -vx 127.0.0.1:8081 -H "Accept-Encoding: gzip,deflate,sdch" "http://news.sohu.com"
观察是否获取成功,如果获取成功,连续执行3次同一个请求,观察缓存状态的变化情况,是否是下面的状态码改变?
[cMsSfW] ==> [cHs f ] ==> [cRs f ] ==> ...
然后观察访问日志中是否有3条相应的访问记录
再次观察下面的几个日志文件
diags.config 专门记录系统诊断日志,比如缓存索引文件,hostdb文件,清除磁盘情况,缓存是否可用等
traffic.out 专门记录控制台相关的日志信息,比如使用的root目录,发现比原来版本输入日志信息减少了
现在没有traffic_shell工具,但是增加了traffic_ctl,traffic_crashlog,traffic_via,traffic_layout等工具
这里特别提到另一个极其有用的工具traffic_crashlog,它随同trafficserver中的那三个进程一起启动,
时刻监视是否有traffic_server进程崩溃,如果出现崩溃现象,
就会在自动重启traffic_server进程的同时,打印相关的段错误信息,主要内容包括CPU,信号,各线程调用堆栈,records.config中的配置信息等等。