CentOS 5.9 下trafficserver的简单使用

上次说到nginx做cache时,评价过说nginx不是专业的cache软件。趁着最近不是很忙,就把cache这个主题,自己所了解的给讲完,以后自己就专心搞mysql了。今天就来说说trafficserver,目前看是很热的样子,可玩性很强,不过bug也很多,不喜欢折腾的还是不要碰。

一:安装使用

a 安装

解决相关依赖的包:
yum install gcc-c++ openssl-devel tcl-devel expat-devel pcre-devel make
下载安装:
wget http://apache.dataguru.cn/trafficserver/trafficserver-4.1.2.tar.bz2
tar -jxvf trafficserver-4.1.2.tar.bz2
cd trafficserver-4.1.2
./configure  --prefix=/usr/local/trafficserver --with-user=www --with-group=www
make && make install

b 配置反向代理

背景:
需求是缓存apk软件包:
(1) 回源配置
vim /usr/local/trafficserver/etc/trafficserver/remap.config
map http://apk.mumayi.com http://120.192.81.162/

格式:
map 反向代理的域名 源站
(2) 缓存配置
vim /usr/local/trafficserver/etc/trafficserver/storage.config
/cache1 80G 
/cache2 80G 

(3)主配置文件
vim /usr/local/trafficserver/etc/trafficserver/records.config
#将机器名改成你想要的名字就OK
CONFIG proxy.config.proxy_name STRING budong 
#修改成需要侦听的interface名称
CONFIG proxy.config.cluster.ethernet_interface STRING eth0
#用来运行 traffic server 的用户,默认是nobody
CONFIG proxy.config.admin.user_id STRING www
#默认为8080,,改成80
CONFIG proxy.config.http.server_port INT 80
#配置内存大小
#配置里所有的数值都是以Byte为单位
CONFIG proxy.config.cache.ram_cache.size INT 26843545600
#开启缓存
CONFIG proxy.config.http.cache.http INT 1
#开启请求via
CONFIG proxy.config.http.insert_request_via_str INT 1
#开启响应via 在集群中容易排查
CONFIG proxy.config.http.insert_response_via_str INT 1

(4)启动trafficserver进行测试
/usr/local/trafficserver/bin/trafficserver start
绑定hosts
vim /etc/hosts
192.168.245.129 apk.mumayi.com
测试:
wget http://apk.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk

c 删除缓存

修改ip_allow.config,使你的IP具有删除缓存权限:
vim ip_allow.config
src_ip=Your_ip                    action=ip_allow  method=PUSH|PURGE|DELETE

删除 cache:
[root@lnmp trafficserver]# curl -X PURGE -v  http://apk.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk
* About to connect() to apk.mumayi.com port 80
*   Trying 192.168.245.129... connected
* Connected to apk.mumayi.com (192.168.245.129) port 80
> PURGE /2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: apk.mumayi.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Thu, 26 Dec 2013 07:30:34 GMT
< Connection: keep-alive
< Server: ATS/4.1.2
< Content-Length: 0
* Connection #0 to host apk.mumayi.com left intact
* Closing connection #0

d cacheurl

场景:
观察下面这几个地址,不同的url对应的是同一个文件.
如果直接按一个url一个cache对象来存,是不是很浪费空间?
apk.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk
apka.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk
apkb.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk
apkc.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk
apkd.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk

因此,综合了下:
apk[a-d].mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk可以都存为
apk.mumayi.com/2013/12/25/0/1/mumayidianzishichangMumayiMarket_V2.0gamma_mumayi_6bd8a.apk这个对象


恩,按照上面的思路那就是cacheurl的作用了.

安装cacheurl:
wget https://blog.zymlinux.net/softs/cacheurl.tar.gz
tar zxvf cacheurl.tar.gz
cd cacheurl
/usr/local/trafficserver/bin/tsxs -c cacheurl.c -o cacheurl.so
/usr/local/trafficserver/bin/tsxs -i -o cacheurl.so
echo "cacheurl.so" >> /usr/local/trafficserver/etc/trafficserver/plugin.config
配置cacheurl:
vim /usr/local/trafficserver/libexec/trafficserver/cacheurl.config
http://apk[a-d].mumayi.com/(.*)  http://apk.mumayi.com/$1

恩,完活,这么干,这几个域名实际上就只存了一个域名对应的文件,是不是省了很多磁盘空间?

参考资料:
https://blog.zymlinux.net/index.php/archives/195

二:是时候结束了

自言自语:

trafficserver是好久之前去玩的东西了,时间长了,好多东西真的忘记了。可见,学习还是要及时的去回顾和复习。本篇文章是自己学习trafficserver时的一个回忆总结,估计自己以后也不会去搞cdn。cache相关的东西,更新到此结束了。希望看到的兄弟多多指教。

参考资料:

官网:http://trafficserver.readthedocs.org/

中国官方博客:https://blog.zymlinux.net

很多cdn牛人在这群里:281057393