trafficserver安装配置

摘自https://blog.csdn.net/wjg_ww/article/details/52268324

trafficserver安装配置

Apache Trafficserver

    介绍:ISP级别的高性能反向和缓存服务器,支持集群,缓存效率高,响应快,代理支持长连接,连接复用,过滤规则,映射,甚至7层hash,负载均衡,丰富的api,类似nginx,更多特性看百度介绍。

               Apache Traffic Server v.3.0.0基准测试的结果是每秒钟可以处理200,000多个请求,相对于v2.0来说提升了277%。它可以用在各种大规模的产品部署环境中,Yahoo!使用Apache Traffic Server处理400TB的数据量,同时每天还使用它处理多达300亿的数据对象,包括Yahoo!主页、体育、邮件及财经站点。截取百度

一、ATS 安装

需要准备的安装包如下:

1.trafficserver-5.3.0.tar.bz2

   http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2

2.tcl tcl-devel 库,也可以使用 yum install tcl tcl-devel 直接安装

3.openssl openssl-devel 库,也可以使用 yum install openssl openssl-devel 直接安装

4.pcre-8.36.tar.gz

安装步骤如下:

1、首先需要安装 tcl tcl-devel库,以及 openssl openssl-devel库,可以使用 yum install直接安装

2、解压:tar -xvf pcre-8.36.tar.gz

   安装:cd pcre-8.36  

         ./configure --prefix=/usr/local/trafficserver/pcre

         make && make install

   注:pcre 最好安装到一个指定的文件夹下,下边安装traffic server时会需要指定pcre函数库所在的文件夹

3、解压:tar -xvf trafficserver-5.3.0.tar.bz2

   安装:cd trafficserver-5.3.0

         ./configure --prefix=/usr/local/trafficserver --with-pcre=/usr/local/trafficserver/pcre --enable-example-plugins --enable-experimental-plugins

         make && make install

   注:--enable-example-plugins --enable-experimental-plugins 这两条指令是为了安装ATS官方集成的插件



4.1、另外一种安装加载所需要的库文件:

    1.  yum install make gcc gcc-c++ glibc-devel db4-devel openssl-devel tcl-devel expat-devel pcre-devel -y

      

    2.  下载地址:http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2


    3.解压:tar -xvf trafficserver-5.3.0.tar.bz2   

     

    4.安装:  /configure --prefix=/usr/local/ats --enable-example-plugins --enable-experimental-plugins


5、安装完成

二、ATS 反向代理配置

ATS 反向代理有两种配置方式:一、一个域名对应一个后端ip;二、一个域名对应多个后端ip

反向代理配置步骤如下:

1、进入ATS配置文件目录:cd /usr/local/trafficserver/etc/trafficserver

2、打开ATS主配置文件 records.config 修改或者添加下面的指令


   CONFIG proxy.config.http.server_ports STRING 80

   CONFIG proxy.config.reverse_proxy.enabled INT 1

   CONFIG proxy.config.url_remap.remap_required INT 1


3、打开ATS映射配置文件 remap.config 配置映射规则

   (1) 对于一个域名对应一个后端ip的情况,可以直接配置如下:


       map http://www.ats100.com/ http://192.168.215.3/


       其中,第一个url为请求的域名,第二个url为后端服务器的ip,两个url的格式为:scheme://host/

       对于第一种,一个域名对应一个后端ip的方式配置完成,保存退出,重新启动ATS,或者使用 traffic_line -x

   (2) 对于一个域名对应多个后端ip的情况,需要进行如下配置


       map http://www.ats100.com/ http://www.ats100.com/


       保存退出,打开 parent.config ,添加如下内容:


       dest_domain=www.ats100.com parent="192.168.215.3:80; 192.168.215.6:80; 192.168.215.9:80" round_robin=strict


       保存退出,打开主配置文件 record.config 增加如下配置:


       CONFIG proxy.config.http.parent_proxy_routing_enable INT 1

       CONFIG proxy.config.http.no_dns_just_forward_to_parent INT 1


       保存退出,重启ATS,或者使用 traffic_line -x

 4、反向代理配置完成

三、缓存配置

1、简单缓存配置

   a、打开主配置文件 record.config ,修改或者增加如下内容:


      CONFIG proxy.config.http.cache.http INT 1

      CONFIG proxy.config.http.cache.required_headers INT 0


   b、打开 storage.config ,修改cache存储路径


       var/trafficserver 256M


   c、缓存配置完成,保存退出,重启ATS,或者使用 traffic_line -x 重新加载配置

2、缓存有效期,缓存文件类型配置

   a、保持反向代理和简单缓存配置不变,打开 cache.config 文件,这个文件就是用来配置缓存的一些详细信息

   b、如果 remap.config 中的内容是 map http://www.ats100.com/ http://www.abc.com/

      cache.config 中配置如下:


      dest_domain=www.abc.com suffix=html ttl-in-cache=20s

      

      意思是:请求域名是 www.ats100.com,请求文件是.html类型,缓存有效期是 20s

   c、也可以配置不缓存,需要将 ttl-in-cache 替换成 action=never-cache,还可以配置忽略头部的no-cache字段等

   d、可以使用正则表达式进行匹配,如需要实现,对于同一个域名,有参数的url全部不缓存,没有参数的url缓存20s

      配置如下:


      url_regex=^http://www.ats100.com/.*\?.*$ suffix=html action=never-cache

      url_regex=^http://www.ats100.com/[^\?]*$ suffix=html ttl-in-cache=20s


3、多磁盘配置

  a、多磁盘配置之前需要关闭 ATS ,并且删除 ATS 中的所有 cache.db 文件,否则会导致后边的配置出错

  b、删除 cache.db 之后,保持 ATS 关闭,需要修改 hosting.config 、volume.config 、storage.config 这三个文件如下:


  hosting.config

  hostname=www.ats100.com volume=1

  hostname=www.ats200.com volume=2

  hostname=* volume=3


  volume.config

  volume=1 scheme=http size=10240

  volume=2 scheme=http size=10240

  volume=3 scheme=http size=10240


  storage.config

  var/trafficserver/sde 256M volume=1

  var/trafficserver/sdb 256M volume=2

  var/trafficserver/sdf 256M volume=3


  c、需要新建 sde/ seb/ sdf/ 三个文件夹,并且修改权限为 nobody


  mkdir -pv var/trafficserver/sde

  mkdir -pv var/trafficserver/sdb

  mkdir -pv var/trafficserver/sdf


  chown -R nobody:nobody var/trafficserver/sde

  chown -R nobody:nobody var/trafficserver/sdb

  chown -R nobody:nobody var/trafficserver/sdf


  d、启动 ATS ,会看到在 sde/ 、sdb/ 、sdf/ 三个文件夹下都生成了一个 cache.db 文件,多磁盘配置成功

     上边配置的作用就是使请求的host是 www.ats100.com 的请求cache到 sde/ 目录下 ,www.ats200.com cache到 sdb/ 目录

     其它请求cache到 sdf/ 目录下


4、定时更新缓存配置

  a、打开主配置文件 record.config 修改或者增加如下内容:


  CONFIG proxy.config.update.enabled INT 1


  b、打开 update.config 文件,修改或者增加如下内容:


  http://www.ats100.com/bzq.html\User-Agent: noname user agent\10\30\5\


  c、重启 ATS 或者使用 traffic_line -x 

四、ATS 日志配置

1、使用系统定义的日志格式

  a、打开 record.config 修改或者添加如下内容:


  CONFIG proxy.config.log.squid_log_enabled INT 1

  CONFIG proxy.config.log.squid_log_is_ascii INT 1


  b、重新启动 ATS 或者使用 traffic_line -x

2、使用自定义日志格式配置

  a、打开 record.config 修改或者添加如下内容:


  CONFIG proxy.config.log.custom_logs_enabled INT 1

  CONFIG proxy.config.log.squid_log_enabled INT 0

  CONFIG proxy.config.log.squid_log_is_ascii INT 0


 b、打开 logs_xml.config 添加如下内容:


 <LogFormat>

   <Name = "rev_pro_and_cache_log"/>

   <Format = "%<chi> - [%<cqtn>] \"%<cqhm> %<cquuc> %<crc>/%<cqhv>\" %<pssc> %<psql> %<phr>/%<pqsn> \"%<cquc>\" \"%<{User-Agent}cqh>\" %<psct>"/>

 </LogFormat>


 <LogObject>

   <Format = "rev_pro_and_cache_log"/>

   <Filename = "access"/>

 </LogObject>

保存退出。

traffic_line -x


日志过滤配置:

<LogFormat>

     <Name = "access"/>

     <Format = "%<chi> - [%<cqtn>] %<cqhm> %<cquc>/%<cqhv> %<pssc> %<psql> %<crc> %<phr>/%<pqsn> \"%<{User-Agent}cqh>\" %<psct>"/>

</LogFormat>



<LogFilter>

    <Name = "test_access"/>

    <Condition = "psct CASE_INSENSITIVE_CONTAIN text/html"/>

   <Action = "REJECT"/>

</LogFilter>



<LogObject>

     <Format = "access"/>

     <Filename = "access"/>

     <Filters = "test_access"/>

</LogObject>


1.这里自定义了日志格式access.log,

2.定义了一个日志收集方式,一个过滤条件,把产生text/html文件的日志过滤掉,非text/html文件日志将写到本地日志 access.log中。

保存退出

traffic_line -x

或重新启动 ATS

五、集群配置

a、打开 record.config 文件,修改或者添加如下内容:


LOCAL proxy.local.cluster.type INT 1

CONFIG proxy.config.proxy_name STRING MyCluster

CONFIG proxy.config.cluster.ethernet_interface STRING eth0


b、集群需要满足下面的条件:

   1、集群中的机子配置要相同

   2、集群中的机子要使用相同版本的ATS

   3、集群中的机子需要在同一个ip段

   4、集群中名称必须相同proxy.config.proxy_name 

c、重新启动 ATS , 或者使用下面的两条命令:


   traffic_line -x

   traffic_line -L


d、使用 traffic_line -r proxy.process.cluster.nodes 查看集群中的机子数量

六、防盗链配置

a、打开 record.config 文件,修改或者添加如下内容:


CONFIG proxy.config.http.referer_filter INT 1


b、打开 remap.config 添加如下内容:


map_with_referer http://www.ats200.com/ http://www.test200.com/ http://127.0.0.1/error.html ~* .*\.bzq\.com


格式为:


map_with_referer client-URL origin-server-URL redirect-URL regex1 [regex2 ...]


其中, ~* 表示Referer头是可选的(没有Referer头正常访问)


上边配置的意思是:

1、请求头中没有Referer头的可以正常访问

2、请求头中有Referer头,并且Referer头字段的内容是 .*\.bzq\.com的才可以正常访问

3、不符合上边两条规则的,会自动跳转到 http://127.0.0.1/error.html 页面

七、DNS 解析服务器指定

a、打开 record.config 文件,修改或者添加如下内容:


CINFIG proxy.config.dns.splitDNS.enabled 1


b、打开 splitdns.config 文件,加入如下内容:


dest_domain=www.ats100.com named="192.168.210.2"


c、上边配置的意思就是域名 www.ats100.com 在 192.168.210.2 域名解析服务器上解析

八、ui界面检查缓存状态:

 1.  主配置文件records.config

加入:CONFIG proxy.config.http_ui_enabled INT 3

   CONFIG proxy.config.http.enable_http_info INT 1      (可选项)

remap.config:

   map http://www.test100.com/ http://www.test100.com/

   map http://www.ui.com/  http://{cache} @action=allow  @src_ip=192.168.153.1

parent.config:

    dest_domain=www.test100.com parent="192.168.215.3:80"  round_robin=strict


注意:这里如果在remap里map的映射设置的是ip,在使用ui工具时查询时必须输入ip+path来查询,因为缓存时以ip加文件名为key缓存的,


 2.打开浏览器,配置好host  (www.ui.com)

  访问www.ui.com,会出现

    Lookup url

    Delete url

    Regex lookup

    Regex delete

    Regex invalidate

3.先访问test100让其缓存,然后点击各个可查看缓存信息,Lookup url 输入url:http://www.test100.com/test2.html,即可查看信息

点击delete url 可以删除该缓存中的 url

九、加入lua,配置响应头信息:

1.修改配置文件plugin.config

 加入:background_fetch.so

2.修改配置文件remap.config

 map http://www.test100.com/ http://www.test100.com/ @plugin=/usr/local/ats/libexec/trafficserver/tslua.so @pparam=/usr/local/ats/lua_ats/test_hdr.lua

注意:@plugin 这里需要加载tslua.so库, @pparam 这里是编写的lua脚本。

3.脚本如下(下面是测试的脚本):

function send_response()

  

  ts.client_response.header['Host'] = ts.ctx['hdr']

  ts.client_response.header['request-get-method'] = ts.ctx['re']

  ts.client_response.header['Uri'] = ts.ctx['uri']

  ts.client_response.header['server'] = ts.ctx['ser']

  local cache_status = ts.http.get_cache_lookup_status()

  if cache_status == TS_LUA_CACHE_LOOKUP_MISS then

     ts.client_response.header['cache-lookup'] = 'MISS'

  elseif cache_status == TS_LUA_CACHE_LOOKUP_HIT_STALE then

     ts.client_response.header['cache-lookup'] = 'HIT_STALE'

  elseif cache_status == TS_LUA_CACHE_LOOKUP_HIT_FRESH then

     ts.client_response.header['cache-lookup'] = 'HIT_FRESH'

  elseif cache_status == TS_LUA_CACHE_LOOKUP_SKIPPED then

     ts.client_response.header['cache-lookup'] = 'HIT_SKIPPED'

  end

  return 0

end

function do_remap()

ts.ctx['hdr'] = 'www.test100.com'

ts.ctx['ser'] = 'wang'

ts.ctx['re'] = ts.client_request.get_method()

ts.ctx['uri'] = ts.client_request.get_uri()

ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response)

return 0

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值