Linux ,c/c++, web,前端,php,js
分类:
2011-08-13 10:25:12
原文地址:Traffic server cache模式安装笔记 作者:血无双
(2013.9.9更新部分说明)
转载请注明出处:http://blog.chinaunix.net/uid-26157679-id-2169083.html,谢谢~
一、下载&解包
wget
bzip2 -d trafficserver-3.0.1.tar.bz2
tar xvf trafficserver-3.0.1.tar
二、安装:
./configure --prefix=/usr/local/trafficserver
可能遇到的报错:
checking for Tcl configuration... configure: error: Can't find Tcl configuration, install the TCL dev package
解决办法:
yum -y install tcl tcl-devel
没有配yum源的可以手动安装包:
wget
tar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13/
./configure --prefix=/usr/local
make
make install
cd ..
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
configure: error: check for pcre failed. Have you installed pcre-devel?
解决办法:
yum -y install pcre-devel pcre
configure: error: Need at least one SSL library, --with-openssl is supported
解决办法:
yum -y install openssl-devel openssl
configure: error: Need at least one XML library, --with-expat is supported
解决办法:
yum -y install libxml2-devel
yum -y install expat-devel
以上错误在安装了对应软件包后,再编译就基本不会有其他错误了,然后
make;make install
安装完成;
三、配置:
TServer的配置文件都在 安装目录/etc/trafficserver下,修改如下文件:
主配置文件 records.config
# CONFIG proxy.config.proxy_name STRING cache1
修改成cache的server name即可
# CONFIG proxy.config.cluster.ethernet_interface STRING eth0
修改成需要侦听的interface名称,默认是 null
# CONFIG proxy.config.admin.user_id STRING root
用来运行 traffic server 的用户,默认是nobody
# CONFIG proxy.config.http.server_port INT 80
traffic server 侦听的端口,默认是8080,如果是配置为缓存,则需要改为80
#CONFIG proxy.config.cache.ram_cache.size INT -1
这个参数是配置traffic server可使用的内存大小的,默认值为-1,当工作在默认值下时,如配置指定本地cache大小为1G,则所使用的内存为100M,这肯定是不适用的,因此应该指定对应的内存大小,注意这里的单位是位,如设置为20480000,则是20MB,或者直接写10G也可以;
#CONFIG proxy.config.log.logging_enabled INT 0
这个参数是配置是否启用访问日志功能的,0为不记录日志,1为仅记录错误,2为仅记录访问,3为全纪录;
#CONFIG proxy.config.log.logfile_dir STRING /www/TServer_logs
指定访问日志输出的路径;
#CONFIG proxy.config.log.squid_log_enabled INT 1
指定访问日志输出格式为squid格式;
#CONFIG proxy.config.log.squid_log_is_ascii INT 1
使用字符方式输出访问日志,如为0则访问日志会保存为二进制格式,不利于查看;
#CONFIG proxy.config.log.squid_log_name STRING squid
指定访问日志的文件名,本例中指定输出的日志文件名为squid.log;
#CONFIG proxy.config.http.normalize_ae_gzip INT 1
不同浏览器会发送不同版本的gzip请求头,ae_gzip 可以过滤大量无规律的 Accept-Encoding: 头信息,防止多个gzip 副本的产生,造成cache空间浪费;
#CONFIG proxy.config.http.insert_response_via_str INT (0|1|2)
控制在响应时向客户端浏览器输出的via信息,0为关闭,1、2均为开启,输出信息相对来说2比较多些,会包括hit OR miss信息;
proxy 代理配置remap.config
如果要对 加速或缓存,则写为:
map (或者域名)
前者为用户访问的域名,后者为缓存源(可以使用内部域名,使得读源操作可以在多台源web server上轮询);
如果需要做防盗链,则首先需要修改record.config如下配置为:
#CONFIG proxy.config.http.referer_filter INT 1
然后在remap.config中配置如下:
#map_with_referer .*\.haha\.cn .*\.haha\.net
说明:对请求img.joke.cn的资源,都抛到后端这个源上,其中只允许*.haha.cn、*.haha.net……等所列的域名才能引用该资源(白名单),来自其他域名的refer请求都视为盗链,盗链请求将会被返回这个地址;
(注:以上防盗链配置在新的3.2.4版本上测试生效,但不代表其他版本也可以工作)
Note:
从配置文件例子里看到这样的写法:
map @src_ip=10.72.118.51-10.72.118.62 @method=GET @method=DELETE @src_ip=192.168.0.1-192.168.0.254 @action=allow @method=PUT
单从语法分析,TS支持对后端源手动指定分组,可针对不同的分组实施不同的http指令,很好很强大~
缓存配置storage.config
最简单的写法,指定目录以及缓存文件大小:
/cache1 80G
/cache2 80G
注:如果storage.config配置不对,或者根本未配置,则TS会自动运行在代理模式下。
四、关于TSserver命令行:
TServer提供很丰富的命令行操作,可以通过命令行实现查看服务状态、修改配置、启停服务等操作,看资料,TServer还提供了接口,允许用户编写自己的定制命令;
TSserver命令行一般都以traffic_line开头,默认放在 安装目录/bin下;
TServer缓存模式常用命令行如下:
./traffic_line -r proxy.node.cache_hit_ratio_avg_10s #查询当前缓存服务命中率
./traffic_line -r proxy.node.current_server_connections #到后端源的连接数
./traffic_line -r proxy.node.current_client_connections #前端用户到TServer的连接数
./traffic_line -r proxy.node.user_agent_xacts_per_second #平均每秒处理的并发数
./traffic_line -r proxy.node.client_throughput_out #当前TServer输出到前端的带宽流量(单位Mbps)
附:开源测试小工具http_load:
http://blog.licess.org/http_load-webbench-ab-siege/
至此,TServer缓存模式的配置算是告一段落了,目前经过几天的运行,服务已经进入稳定期,查询命中率在95%~97%之间,这个命中率还是相当理想的。
过几天会根据自己在工作过程中用过的各类流行缓存,包括nginx、squid、Traffic Server、varnish等,做一个比较文档,有兴趣的朋友可以关注。
(留坑待填)