Chinaunix

标题: Apache Traffic Server 3.2.0 正式版,附srpm包 [打印本页]

作者: aaaaaa    时间: 2010-09-02 16:18
标题: Apache Traffic Server 3.2.0 正式版,附srpm包
本帖最后由 aaaaaa 于 2013-02-03 18:10 编辑

ATS,是我最熟悉/最喜欢的cache系统,本人使用几年了,目前开源版本已经发到稳定的3.2版本,有需要高性能的cache/proxy系统,可以选择这个。

简单对比squid/ngnix的不同点:
ATS是一个专业的ISP级别的cache/proxy系统,在正向代理和反向加速方面都又独特的实现。官方支持 Linux BSD OpenSolaris OSX,X86和ARM平台。

使用TS有很多技巧,我会在后面的时间里跟大家详细的介绍,包括设计、安装、配置、管理、排错等等,ATS是一个非常非常复杂的系统,希望您在使用的过程中能够克服困难,不要气馁,您的付出是值得的。

http://trafficserver.apache.org/

这是我的ts相关的文件夹,有些文档对了解TS很有帮助:
http://people.apache.org/~zym/trafficserver/

新的fedora版本里都有了ts的包,可以直接yum。EPEL6的库里也有了ts的包啦。大家可以方便的 yum

都有谁在用这个系统呢?大家可以看看是不是都是“大”公司啊:
http://trafficserver.org/users.html


PS:
3.2.x中有个三个坑,大家要控制好:
1,内存cache算法最好用标准LRU。
CONFIG proxy.config.cache.ram_cache.algorithm INT 1
2,回源链接复用最好用Global不用thread级。
CONFIG proxy.config.http.share_server_sessions INT 1
3,内存cache最好设置小一些,如我们16G系统里,设置为5-8G。
CONFIG proxy.config.cache.ram_cache.size
作者: zgbchi    时间: 2010-09-03 12:09
看到你的文章很不错,先前我也在研究TS。遇到的问题互相讨论。
我的MAIL: guobinchn@gmail.com
作者: aaaaaa    时间: 2010-09-03 12:32
高兴看到一个潜在的用户

关于TS有任何问题,可以随时联系,甚至功能需求、想法等可以找我,我会尽量影响TS的开发团队帮助大家。


作者: xooass    时间: 2010-09-06 10:35
非常感谢   我也成了你和ATS的FANS了
作者: xooass    时间: 2010-09-06 11:02
看了下资料  目前比较期待一个写好的配置文件参考例子
作者: aaaaaa    时间: 2010-09-06 13:18
我们会逐步发些简单安装配置文档等。我的兄弟们正在作些基础工作,包括rpm打包等,后面会慢慢加上来

敬请期待
作者: suran007    时间: 2010-09-08 15:13
我最近也在关注这个,正在看文档,希望和大家交流
作者: xiaxueyi    时间: 2010-09-13 12:48
感觉不好使
改了
CONFIG proxy.config.dns.nameservers STRING
结果取源时dns还是/etc/resolv.conf里服务器解析的

使用默认缓存策略,结果缓存目录还是空的
作者: aaaaaa    时间: 2010-09-13 15:40
这个dns我还没测试,有空我会测试一下啊,不过已经有人就split dns提交了bug了,这块应该还有些bug。最近改动比较大。

ts不是用每个object一个文件方式来缓存的,默认的目录下(我们打的rpm包里是/var/trafficserver)应该有个cache.db的文件,这个文件是cache的文件系统。文件里包含了你的内容,用strings可以看到些东西。
如没有,则可能是配置或目录权限问题。
作者: aaaaaa    时间: 2010-09-13 23:43
本帖最后由 aaaaaa 于 2010-09-14 00:34 编辑

回复 8# xiaxueyi


貌似真是这样的,我去提了bug。 先讨论讨论如何处理这个参数 https://issues.apache.org/jira/browse/TS-437 被鄙视了,原来已经有一个Bug了:https://issues.apache.org/jira/browse/TS-313 不过修的的确不够,还得搞搞。

貌似你是搞c/c++的?有空可以看看代码能帮忙fix不
作者: aaaaaa    时间: 2010-09-17 22:42
回复 10# aaaaaa


https://issues.apache.org/jira/browse/TS-313
我提了一个patch进去,基本上能够满足你的需要,有空的话测试一下啊。
作者: aaaaaa    时间: 2010-10-01 15:56
回复 8# xiaxueyi


    代码已经提交到svn里了,将会在2.1.4的发行版里体现。
作者: xiaxueyi    时间: 2011-01-24 15:05
回复  xiaxueyi


    代码已经提交到svn里了,将会在2.1.4的发行版里体现。
aaaaaa 发表于 2010-10-01 15:56



好久没再用了,最近测试了一下新版本,这个bug已经修复了,谢谢!
作者: maochanglu    时间: 2011-01-25 15:19
把rpm提交到epel 仓库吧 。这样别人安装也方便。
作者: aaaaaa    时间: 2011-01-25 23:20
最近的几个unstable版本间文件变化太大,我计划在v3.0的时候,把rpm相关的spec文件等整理到源码中,到时候再提吧。

预计3月份左右发布v3.0
作者: xiaxueyi    时间: 2011-03-04 16:01
最近的几个unstable版本间文件变化太大,我计划在v3.0的时候,把rpm相关的spec文件等整理到源码中,到时候再 ...
aaaaaa 发表于 2011-01-25 23:20



   hello,老大,大概什么时候发布新的稳定版? 用 2.1.5跑了一段时间,效率还不错,但是比较容易挂掉...
作者: aaaaaa    时间: 2011-03-04 16:17
但是比较容易挂掉...?不会吧?什么情况会挂掉?如果有trace信息,一定要告诉我。

3.0版本估计要延迟到4月左右,最早3月底。

v2.1.6已经发布,不过v2.1.5 和 v2.1.6的更新很多跟api有关系,如要升级请谨慎。目前来看我认为你很难在v2.1.6里碰到crash的情况了。
作者: xiaxueyi    时间: 2011-03-04 18:02
回复 17# aaaaaa

手上没有错误信息,之前traffic_manager 和traffic_server 都重启过,traffic_server 出现的频率还比较频繁,但是没看到core文件,日志里也没看到明显的异常提示。我测试2.1.6再看观察吧。
作者: aaaaaa    时间: 2011-03-04 23:41
http://yum.zymlinux.net/trafficserver/rpm/ 已经放上了v2.1.6的rpm包,有需要的可以测试一下,这个版本与v3.0不会有太大的区别了。
作者: aaaaaa    时间: 2011-03-20 10:32
这个stack trace貌似其他人没碰到过,如果还有Seg Fault, 还请协助尽量帮忙定位一下。

v2.1.7明后天发布,对性能有些提升。

你的情况下,1.5G内存是否少了?根据计算默认配置TS需要大约300-500M内存,其他内存基本都可以分配给RAM Cache。你可以根据系统的内存使用情况来找到一个安全值
作者: xiaxueyi    时间: 2011-03-28 10:31
回复 21# aaaaaa

   
CU改版,版面都找不到了...

从我测试的情况下,ts除ram缓存外用的内存不止500M。刚编译了2.1.7,设1.8G的ram缓存,半小时ts总内存就达到2701m了,还在不断增长。ram缓存再设大的话,很容易总内存到3G然后挂了。32位系统,没办法。

另外发现新版貌似有两块磁盘io分配不均的现象,缓存大小设的是一样的,但是io利用率差别比较大,之前没有这种情况。

之前的Segmentation 是在url_host_set 函数里,不知道和remap.config设置有没关系:
regex_map http://(.+[0-9]$) http://$1 @action=deny
regex_map http://([0-9a-zA-Z\.\-]+) http://$1
作者: rhinux    时间: 2011-03-28 18:25
回复 1# aaaaaa


    hi,现在在配置parent的时候出现问题了
records.config开启了parent_proxy
repmap.config
  1. #
  2. regex_map http://[a-z0-9].+.rhinux.cn:8080/  http://172.16.27.55
  3. regex_reverse_map http://172.16.27.55  http://[a-z0-9].+.rhinux.cn:8080/
复制代码
parent.config
  1. dest_domain=.  parent="172.16.27.87:80"
复制代码
87是一台开启80端口的trafficserver,配置除了端口,已经是否开启parent_proxy之外和子节点相同。

目前的情况访问请求http://abc.rhinux.cn:8080/a.html 也就是子节点的时候,没有任何反应,日志里记录是
  1. 1301304861.909 30086 172.16.27.89 ERR_CLIENT_ABORT/000 0 GET http://172.16.27.55/a.htm - EMPTY/- - -
复制代码
上面有设置问题吗?
开启debug后看到的错误
  1. [Mar 28 17:01:17.022] Server {34393309632} DEBUG: (dns) DNS error 2 for [55.27.16.172.in-addr.arpa]
  2. [Mar 28 17:01:35.021] Server {34393309632} DEBUG: (dns) DNS error 2 for [55.27.16.172.in-addr.arpa]
  3. [Mar 28 17:01:53.021] Server {34393309632} DEBUG: (dns) DNS error 2 for [55.27.16.172.in-addr.arpa]
  4. 以下是将172.16.27.55 换成域名
  5. [Mar 28 17:13:49.837] Server {34393309632} DEBUG: (dns) DNS error 3 for [jailv55.rhinux-inc.com]
  6. [Mar 28 17:26:57.523] Server {34393309632} DEBUG: (dns) DNS error 3 for [jailv55.rhinux-inc.com]
复制代码
所有涉及域名的设置都设置在hosts中,源服务器,子节点,父节点的hosts都相同
作者: rhinux    时间: 2011-03-28 18:26
补充一点我用的是freebsd8.2+ts2.1.6
作者: aaaaaa    时间: 2011-03-28 21:11
回复 22# xiaxueyi


    好像的确是读写分配有问题唉。2.1.7有些改动涉及到底层的分配等,我会尽快跟大家一起debug这个问题。
作者: aaaaaa    时间: 2011-03-28 21:27
本帖最后由 aaaaaa 于 2011-03-28 22:37 编辑

回复 23# rhinux


    关于parent的用法,主要是用作map规则完成后取内容的服务器映射。我觉得你的问题还在于如何使用remap和parent的关系。
  通常的用法是:
子TS服务器:
remap.config:
map regex_map http://[a-z0-9].+.rhinux.cn:8080/  http://myownhost.myonwdomain

parent.config:
dest_domain=myownhost.myonwdomain  parent="172.16.27.87:80"

父TS服务器:
remap.config:
http://myownhost.myonwdomain/ http://172.16.27.55

这样的话,子TS将所有的url都映射到http://myownhost.myonwdomain/XXXX,然后从父TS里取这个内容。父TS根据remap直接从172.16.27.55取。其关系是,子TS在取父TS的内容前已经做完了该做的remap转换。你需要考虑到这点。
看看是不是你需要的?

另外:
proxy.config.url_remap.pristine_host_hdr 这个参数默认是1,即remap规则只是起到制定ip地址的转换作用。如果设置为0,则可以进行url的转换。灵活运用这个参数和remap的配合,将可以很好的解决所有的需求。

TS目前不采用标准的/etc/hosts文件,除非你使用了特别的dns解析库。
作者: rhinux    时间: 2011-03-28 22:50
本帖最后由 rhinux 于 2011-03-28 23:09 编辑

回复 26# aaaaaa


    感谢回复,
以下日志是上周测试的时候的

子TS日志
  1. 1300951004.057 11 172.16.27.89 TCP_MISS/404 421 GET http://172.16.27.55/get/pathjpg/Autumn.jpg - PARENT_HIT/172.16.27.87 text/html -
复制代码
父TS日志
  1. 1300948204.924 0 172.16.27.88 ERR_CONNECT_FAIL/404 413 GET http://172.16.27.55/get/myjpg/Azul.jpg - NONE/- text/html -
复制代码
但今天在测试的时候发现我子TS上的包根本就没发往父TS
只有子TS的日志
  1. 1301315542.327 28693 172.16.27.89 ERR_CLIENT_ABORT/000 0 GET http://172.16.27.55/a.htm - EMPTY/- - -
复制代码
(另外按你的配置,理论上好像如果父TS down了  子TS无法直接将请求发往源服务器(27.55))


在手册里也没看到作为子TS的remap.config应该如何配置,目前我的认识停留在 子TS相比父TS只是开启parent_proxy和增加parent.config的区别。理论上应该够了,子TS先匹配自己的remap,因为开启了parent_proxy所以再看parent.config,匹配到一条规则,将请求转给parent.config指定的父TS(这个过程应该有程序完成host转换啥的吧)
作者: rhinux    时间: 2011-03-29 10:58
已经搞定了,子TS不发包是端口hang住了,做了一件丢人的事情,重启了机器,
至于我的质疑说父TS挂了切换到original服务器,我在parent.config配置中吧original服务器也加在parent list中了,呵呵。谢谢楼主的回答
作者: xiaxueyi    时间: 2011-03-29 11:59
回复 26# aaaaaa


    说到TS的map和不支持hosts文件,我不太能理解。貌似外国人做CDN都喜欢取源使用的host和公开的host不一样,那设想一下大一点的cache系统,第一层memcache,第二层同机房硬盘cache,第三层多线机房,然后才到真实源,那光做map就得累死。  

昨天测试2.1.7,跑了一晚上,TS挂了n多次,大部分都是内存跑到3G挂了,还出现了上次 url_host_set memcpy错误,还出现了一次


  1. NOTE: Traffic Server received Sig 11: Segmentation fault
  2. /usr/local/ts/bin/traffic_server - STACK TRACE:
  3. [0x4001c420]
  4. /usr/local/ts/bin/traffic_server(_ZN8DNSEntry4postEP10DNSHandlerP7HostEntb+0x5d5)[0x82503e5]
  5. [0x0]
  6. /usr/local/ts/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x1ff)[0x8320e9f]
  7. /usr/local/ts/bin/traffic_server(_ZN7EThread7executeEv+0x4be)[0x83216be]
  8. /usr/local/ts/bin/traffic_server(main+0x1245)[0x8104505]
  9. /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0x40444450]
  10. /usr/local/ts/bin/traffic_server[0x80bdec1]
  11. /usr/local/ts/bin/traffic_server[0x80bdec1]
复制代码




这时内存总体使用还是安全的,不是内存耗尽的原因。还好Ts重启比较快,不需要像squid那样重建缓存索引,不然不敢在生产中用了。

总结一下我测试下来的问题:
1.    容易core掉
2.    感觉内存有泄漏,设了1.5G的ram cache,总内存使用很容易达到3G
3.    2.1.7 磁盘IO分配不均

希望能早日测试新版,谢谢!
作者: aaaaaa    时间: 2011-03-29 22:51
你这个core的问题和IO不均衡的问题已经开了bug。
内存的问题需要长期的项目去解决,我希望是一个自动优化机制,来替代目前的固定大小,因为TS和操作系统都会由于系统负载的不同而使用不同的内存,并且可能活动幅度比较大,从道理上讲,制定一个安全的保留空间给TS,其他都用上应该是一个很好的方式。我希望这个问题照这个方向解决。

如有其他crash的问题,还希望你能够即时贴上来。
作者: aaaaaa    时间: 2011-04-24 23:09
回复 29# xiaxueyi


    最近今天John修复了我代你提交的crash的bug,以及其他几个类似bug,我这里没有法子复现你的问题,是否有机会请再测试一下看看这些问题是否已经修复?


thanks.
作者: aaaaaa    时间: 2011-05-13 14:11
回复 25# aaaaaa


    我最近在测试的过程中发现我系统测试中有2个特别大的文件,是造成我的磁盘io分配不均衡的主因,这2个文件是其他小图片的1000倍。你分析一下你的系统中是否有类似的情况?
作者: aaaaaa    时间: 2011-05-13 14:19
回复 32# xiaxueyi


    问题一,这个ACL规则是后来增加的,以至于官方文档中都没有很详细的记录,并且目前开发人员也没有仔细看过其中的奥妙:
下面是我的一份文档,可以用作参考,不一定特准确:
TrafficServer中的ACL控制之remap篇
TrafficServer中原设计中有复杂的ACL体系,其中最常用的,最简单的控制方式是根据UA的来源IP地址进行控制,我们将会以实际的示例来讲解如何使用这个系统来构造复杂的安全控制系统。
首先我们看看ACL的规则说明,remap.config中支持的ACL安全控制(filtering)格式可以分解为3个元素:
  #  @action=allow|deny
  #  @src_ip=IP-address
  #  @method=HTTP method string (CONNECT|DELETE|GET|HEAD|ICP_QUERY|OPTIONS|POST|PURGE|PUT|TRACE|PUSH)
格式中的3个元素详解如下:
  @action中可以使用允许allow或拒绝deny,默认系统为 allow。
  @src_ip是ip段,使用1.2.3.4-5.6.7.8的IP段标示模式或独立ip地址。
  @method是标示HTTP的method,包括所有支持的方法,常用的如GET HRAD POST等。
  map规则行末就可以直接添加ACL规则。
使用说明:
每条ACL规则可以包含多个控制元素,多个相同控制元素间是或的关系。
每条map规则上可以使用的过滤规则的条目是没有限制的。
所有的ACL规则都是对用于map条目的,因此这些规则是不能作通配符的,也不能孤立定义。

指令集:
为了设置全局或影响多个map条目的过滤规则,我们可以使用类似下述例子的ACL规则指令:
  # .defflt  disable_all @action=deny @src_ip=0.0.0.1-254.254.254.254
  # .defflt  disable_delete_purge @action=deny @method=delete @method=purge
  # .useflt  disable_all
  # .useflt  disable_delete_purge
其中具体指令说明如下:
  .definefilter (亦可以简化为deffilter或defflt):定义一条过滤规则,规则格式同上。
  .deletefilter (亦可以简化为delfilter或delflt):删除一条过滤规则。
  .usefilter (亦可以简化为activefilter、activatefilter或useflt):启用一条已经使用definefilter定义的规则。此指令后的所有map条目,将会集成此过滤规则。
  .unusefilter (亦可以简化为deactivatefilter、unactivefilter、deuseflt或unuseflt):停止使用过滤规则。
例如,需要允许我们的工具服务器10.62.163.181使用HTTP协议的PURGE方法,而禁止其他IP使用PURGE方法:
  .defflt  tools @action=deny @src_ip=0.0.0.1-10.62.163.180 @src_ip=10.62.163.182-254.254.254.254 @method=PURGE
  .useflt  tools
  map http://cdn.zymlinux.net/ http://source.zymlinux.net
  map http://cdn.zymlinux.info/ http://zymlinux.info/source
此例的需求是针对所有的map条目的,因此我们在所有的map条目前,定义了名字叫tools的过滤规则,以禁止除10.62.163.181外的所有IP地址使用PURGE方法。

再例,我们又添加了http_ui的map条目,以对cache系统进行debug。但是对于http_ui,我们不希望192.168.0.0/24以外的所有IP访问,那么我们可以使用如下的配置来完成这个需求:
  .defflt  tools @action=deny @src_ip=0.0.0.1-10.62.163.180 @src_ip=10.62.163.182-254.254.254.254 @method=PURGE
  .useflt  tools
  map http://cdn.zymlinux.net/ http://source.zymlinux.net
  map http://cdn.zymlinux.info/ http://zymlinux.info/source
  .unuseflt  tools
  .delflt  tools
  .defflt  debug @action=deny @src_ip=0.0.0.1-192.167.255.255 @src_ip=192.168.1.1-254.254.254.254 @method=GET @method=POST
  .useflt  debug
  map http://localhost/cache-internal/ http://{cache-internal}
  map http://localhost/cache/ http://{cache}
  map http://localhost/stat/ http://{stat}
  map http://localhost/test/ http://{test}
  map http://localhost/hostdb/ http://{hostdb}
  map http://localhost/net/ http://{net}
  map http://localhost/http/ http://{http}
  .unuseflt  debug
  .delflt  debug
此例中,由于http_info的map条目已经不适用tools过滤规则,因此我们去掉了tools规则,新定义了debug过滤规则,禁止除192.168.0.0/24范围外的IP地址对http_ui接口进行POST GET操作。同时在http_ui的map条目后,我们停用并删除了debug过滤规则。
以上的例子可以发现,TS有一个比较易于维护的ACL规则表述方法,并切与map条目可以进行非常自由的组合匹配。因此具体的业务生产中,应该仔细规划并周密部署,充分利用这个系统实现业务需求同时防止由于其自由度大带来的潜在风险。

注意:
1、TS中,对map规则的变更,在执行traffic_line -x后,会立即在10秒钟内在集群内全部生效。
2、records.config中的proxy.config.http.quick_filter.mask,是一个过滤规则的总控。如在此已经mask掉了PURGE方法,则不需要再在remap.config中进行过滤了。同样,如remap中的某些条目需要用到PURGE方法,则必须首先在proxy.config.http.quick_filter.mask中将PURGE方法去掉。如将默认的0x482改为0x402。
3、所有过滤规则的debug信息以url_rewrite为关键词,必要的话可以启用debug来观察TS的配置问题。



问题二:
cache.config的配置会覆盖records.config,这是在预料之中的,因为我们是用cache.config来做更细致的控制的。pin-in-cache会造成磁盘的RRD模式复写很复杂,仔细注意IO情况。
作者: aaaaaa    时间: 2011-06-17 16:35
顺便说一句,很荣幸已经获邀成为trafficserver的committer,大家有任何问题和patch我都可以代理提交。

thanks
作者: tao_627    时间: 2011-06-19 19:18
请问下,ATS还有更详细点的说明吗?比如Cache中的结构设计,本人正在研究ATS的源码!
作者: xrjk    时间: 2011-06-28 17:24
本帖最后由 xrjk 于 2011-06-28 21:41 编辑

新手有1个问题要请教:
软件环境 freebsd 7.3 32   traffic sever 3.0

1、用traffic server 3.0 端口绑定不能低于 1024,做反向代理时无法用80端口



以上是问题不知道是不是bug?
作者: aaaaaa    时间: 2011-06-29 10:42
用traffic server 3.0 端口绑定不能低于 1024,做反向代理时无法用80端口。如果所述属实,当然是bug。

你是用的bsd的port吗?http://www.freshports.org/www/trafficserver,标准init启动的吗?

能否多测试一下并把相关的测试log发上来?
作者: xrjk    时间: 2011-06-29 14:17
freebsd 最新ports安装

启动服务错误
[Jun 29 14:07:16.254] Server {682627136} NOTE: logging initialized[7], logging_mode = 3
[Jun 29 14:07:16.260] Server {682627136} ERROR: Could not bind or listen to port 80 (error: -1)
[Jun 29 14:07:16.260] Server {682627136} WARNING: unable to listen on port 80: -1 13, Permission denied
[Jun 29 14:07:16.274] Server {682627136} NOTE: traffic server running
[Jun 29 14:07:16.314] Server {682627952} NOTE: cache enabled


系统日志

Jun 29 14:07:16 mymdb traffic_server[1694]: NOTE: Server Version: Apache Traffic Server - traffic_server - 3.0.0 - (build # 52812 on Jun 28 2011 at 12:54:25)
Jun 29 14:07:16 mymdb traffic_server[1694]: {682627136} ERROR: Could not bind or listen to port 80 (error: -1)
作者: aaaaaa    时间: 2011-06-29 17:47
这个port的init脚本有问题,不应该直接用traffic_server。你看看直接用/usr/bin/trafficserver来启动吧。

ports中的问题,我们会跟owner联系解决掉。thanks
作者: xrjk    时间: 2011-06-30 09:39
谢谢回复,接用/usr/bin/trafficserver来启动是可以的
作者: tao_627    时间: 2011-07-05 19:26
楼主,你好! 我想请教下,为何ATS 3.0版本搭建正向代理时,显示502错误:

[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http) [4] DNS lookup failed for 'safebrowsing.clients.google.com'
[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http_trans) [HttpTransact::OSDNSLookup] This was attempt 1
[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http_seq) [HttpTransact::OSDNSLookup] DNS Lookup unsuccessful
[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http_trans) [WUTS code generation] Hit/Miss: 49, Log: 117, Hier: 49, Status: 805
[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http_trans) Adding Server: ATS/3.0.0
+++++++++ Proxy's Response 2 +++++++++
-- State Machine Id: 4
HTTP/1.1 502 Cannot find server.
Date: Tue, 05 Jul 2011 11:16:00 GMT
Proxy-Connection: close
Server: ATS/3.0.0

[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http_trans) Next action PROXY_SEND_ERROR_CACHE_NOOP; NULL
[Jul  5 19:16:00.444] Server {3068738416} DEBUG: (http) [4] State Transition: DNS_LOOKUP -> PROXY_SEND_ERROR_CACHE_NOOP
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http_tunnel) [4] adding producer 'internal msg'
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http_tunnel) [4] adding consumer 'user agent'
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http_tunnel) tunnel_run started, p_arg is NULL
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http_tunnel) [4] consumer_handler [user agent VC_EVENT_WRITE_COMPLETE]
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http) [4] [&HttpSM::tunnel_handler_ua, VC_EVENT_WRITE_COMPLETE]
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http_cs) [1] session half close
[Jul  5 19:16:00.445] Server {3068738416} DEBUG: (http) [4] [HttpSM::main_handler, HTTP_TUNNEL_EVENT_DONE]
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http) [4] [&HttpSM::tunnel_handler, HTTP_TUNNEL_EVENT_DONE]
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http_redirect) [HttpTunnel::deallocate_postdata_copy_buffers]
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http_seq) [HttpStateMachineGet::update_stats] Logging transaction
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http) [4] dellocating sm
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http_cs) [1] [&HttpClientSession::state_wait_for_close, VC_EVENT_EOS]
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http_cs) [1] session closed
[Jul  5 19:16:00.448] Server {3068738416} DEBUG: (http_cs) [1] session destroy

相比之下,一样到配置,使用ATS 2.1.4就没有任何问题,
恳请指教!
作者: aaaaaa    时间: 2011-07-15 15:14
楼上的问题已解决。是由于v2.x升级到v3.x造成的,推荐在v3.0原有配置文件上修改,不要直接使用v2.x的配置文件。
作者: xiaxueyi    时间: 2011-07-27 10:33
一直关注ts,3.0.1出来后后又测试了下,在 Ubuntu 8.04  32位系统下,仍然频繁退出,64位系统还好。
另外,看见api新增了设置源IP的函数 TSHttpTxnOutgoingAddrSet,但是参数只能设在一个IP地址,还是不能满足需求,能否改成可以设置多个源IP?如果推广使用的话,我需要这个功能,谢谢!


FATAL: MIME.cc:576: failed assert `strncasecmp(field->m_ptr_name, wks, field->m_len_name) == 0`
/usr/local/ts/bin/traffic_server - STACK TRACE:
/usr/local/ts/lib/libtsutil.so.3(ink_fatal_va+0xc7)[0x4003109b]
/usr/local/ts/lib/libtsutil.so.3(ink_fatal+0x2b)[0x400310ed]
/usr/local/ts/lib/libtsutil.so.3(_ink_assert+0xc4)[0x4002fd54]
/usr/local/ts/bin/traffic_server(_Z21mime_hdr_sanity_checkP11MIMEHdrImpl+0x323)[0x823f5c8]
/usr/local/ts/bin/traffic_server(_Z21mime_hdr_field_attachP11MIMEHdrImplP9MIMEFieldiS2_+0x36[0x8241e17]
/usr/local/ts/bin/traffic_server(_Z17mime_parser_parseP10MIMEParserP7HdrHeapP11MIMEHdrImplPPKcS6_bb+0x2b5)[0x82442b6]
/usr/local/ts/bin/traffic_server(_Z21http_parser_parse_reqP10HTTPParserP7HdrHeapP11HTTPHdrImplPPKcS6_bb+0x801)[0x823ae17]
/usr/local/ts/bin/traffic_server(_ZN7HTTPHdr9parse_reqEP10HTTPParserP14IOBufferReaderPib+0x126)[0x82380f4]
/usr/local/ts/bin/traffic_server(_ZN6HttpSM32state_read_client_request_headerEiPv+0x2f0)[0x819b87c]
/usr/local/ts/bin/traffic_server(_ZN6HttpSM12main_handlerEiPv+0x1f[0x81a0cc0]
/usr/local/ts/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x47)[0x81154f9]
/usr/local/ts/bin/traffic_server[0x82f644c]
/usr/local/ts/bin/traffic_server[0x82f6e43]
/usr/local/ts/bin/traffic_server(_ZN18UnixNetVConnection11net_read_ioEP10NetHandlerP7EThread+0x17)[0x82f8c6d]
/usr/local/ts/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x62a)[0x82f2ea4]
/usr/local/ts/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x47)[0x81154f9]
/usr/local/ts/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x114)[0x831af5a]
/usr/local/ts/bin/traffic_server(_ZN7EThread7executeEv+0x425)[0x831b529]
/usr/local/ts/bin/traffic_server(main+0x1245)[0x813f233]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0x40476450]
/usr/local/ts/bin/traffic_server[0x80f60e1]
作者: aaaaaa    时间: 2011-07-27 18:23
目前回源的ip是唯一的,除非你改dns可以改,但是在连接的时候仍然只会取其中一个。https://issues.apache.org/jira/browse/TS-404 是让插件控制DNS解析的一个需求,不过还没有完成。不知道是否是你要的方向。
作者: aaaaaa    时间: 2011-07-28 11:53
你的这个问题已经提交,如果你能够抓到造成这个请求处理出问题的请求头就更好了,这样我们可以尝试复现问题。
作者: xiaxueyi    时间: 2011-07-28 16:23
目前回源的ip是唯一的,除非你改dns可以改,但是在连接的时候仍然只会取其中一个。 是让插件控制DNS解析的一 ...
aaaaaa 发表于 2011-07-27 18:23



    我理解错了,TSHttpTxnOutgoingAddrSet 应该是设置取源时绑定的本地IP,取源IP是你说的TSOSIpSet这个API,不过也是只能输入一个IP地址,void TSOSIpSet(TSHttpTxn txnp, unsigned int ip);    你说TS连接取源时只取其中一个,难道dns解析有多个IP,连接时刚好碰到挂掉的那个,ts不会尝试连接其他IP? 这个功能在squid都有的啊
作者: xiaxueyi    时间: 2011-07-28 16:26
你的这个问题已经提交,如果你能够抓到造成这个请求处理出问题的请求头就更好了,这样我们可以尝试复现问题 ...
aaaaaa 发表于 2011-07-28 11:53



    不太好抓,量太大了。比较奇怪的是64位系统不会出现这个问题,但是32位的系统出现的概率还不小,跑的内容是一样的。
作者: aaaaaa    时间: 2011-07-30 00:22
我理解错了,TSHttpTxnOutgoingAddrSet 应该是设置取源时绑定的本地IP,取源IP是你说的TSOSIpSet ...
xiaxueyi 发表于 2011-07-28 16:23



   当然会重试啊,默认的TS会对4层情况进行跟踪,剔除无法连接的IP。但是由于其恢复这些ip的探测也不怎么高效,我们同时要求有后台机器的可维护性,因此起了一个L7健康检测的项目,patch放在https://issues.apache.org/jira/browse/TS-654上。有兴趣可以看看。

   总起来说,我对动态改ip的需求一直没啥理解。我希望后面测试一下TS对SRV记录的支持情况,如果可以我们会考虑引入SRV记录来管理多个源服务器的情况。同时配合7层和4层检测情况,相信会比较好用。
作者: aaaaaa    时间: 2011-07-30 00:23
回复 48# xiaxueyi


    32位系统大家的支持力度越来越小了,尽量切到64位上来吧,现在找个32的开发环境都不容易啊。
作者: xrjk    时间: 2011-08-05 18:09
37楼 发表于 2011-06-28 17:24 | 只看该作者
--------------------------------------------------------------------------------


本帖最后由 xrjk 于 2011-06-28 21:41 编辑

新手有1个问题要请教:
软件环境 freebsd 7.3 32   traffic sever 3.0

1、用traffic server 3.0 端口绑定不能低于 1024,做反向代理时无法用80端口



38楼 发表于 2011-06-29 10:42 | 只看该作者
--------------------------------------------------------------------------------


用traffic server 3.0 端口绑定不能低于 1024,做反向代理时无法用80端口。如果所述属实,当然是bug。

你是用的bsd的port吗?http://www.freshports.org/www/trafficserver,标准init启动的吗?

能否多测试一下并把相关的测试log发上来?



39楼 发表于 2011-06-29 14:17 | 只看该作者
--------------------------------------------------------------------------------


freebsd 最新ports安装

启动服务错误
[Jun 29 14:07:16.254] Server {682627136} NOTE: logging initialized[7], logging_mode = 3
[Jun 29 14:07:16.260] Server {682627136} ERROR: Could not bind or listen to port 80 (error: -1)
[Jun 29 14:07:16.260] Server {682627136} WARNING: unable to listen on port 80: -1 13, Permission denied
[Jun 29 14:07:16.274] Server {682627136} NOTE: traffic server running
[Jun 29 14:07:16.314] Server {682627952} NOTE: cache enabled


系统日志

Jun 29 14:07:16 mymdb traffic_server[1694]: NOTE: Server Version: Apache Traffic Server - traffic_server - 3.0.0 - (build # 52812 on Jun 28 2011 at 12:54:25)
Jun 29 14:07:16 mymdb traffic_server[1694]: {682627136} ERROR: Could not bind or listen to port 80 (error: -1)


40楼 发表于 2011-06-29 17:47 | 只看该作者
--------------------------------------------------------------------------------


这个port的init脚本有问题,不应该直接用traffic_server。你看看直接用/usr/bin/trafficserver来启动吧。

ports中的问题,我们会跟owner联系解决掉。thanks



今天有空源码编译了一下trafficserver3.0.1,发现问题traffic_server还是存在端口绑定不能低于 1024,做反向代理时无法用80端口,由此可以推断不是ports的问题应该是源码有问题希望修正
作者: aaaaaa    时间: 2011-08-06 21:14
ports还没更新: http://www.freebsd.org/cgi/cvsweb.cgi/ports/www/trafficserver/files/trafficserver.in?rev=1.2

如果你使用ts源码里带的trafficserver的脚本启动有问题,请再多提供一些信息。
作者: macheal007    时间: 2011-08-09 17:00
TS很强大,准备继续研究TS了
作者: aaaaaa    时间: 2011-08-10 13:43
回复 53# macheal007


    顶!
作者: xrjk    时间: 2011-08-11 17:18
ports还没更新: http://www.freebsd.org/cgi/cvswe ... icserver.in?rev=1.2

如果你使用ts源码里带的trafficserver的脚本启动有问题,请再多提供一些信息。

ports是没更新,还是3.0,我源码编译安装了3.0.1,用/usr/local/bin/traffic_server start 启动服务,错误信息和之前提供的一样,用/usr/local/bin/trafficserver start 启动是正常的。也就说ports安装3.0和源码编译安装3.0.1用/usr/local/bin/traffic_server start 启动服务会存在配置低于1024的端口数会提示错误,无法开启端口;用/usr/local/bin/trafficserver start 启动是正常的。
作者: LnBSD    时间: 2011-08-12 16:00
问个问题 如何让ats 显示这样的头信息
X-Cache: HIT from CT-JSNT-37-234.fastcdn.com
X-Cache: HIT from CT-SHJH-116-136.fastcdn.com

这样能清楚的显示在某个服务器是否命中
方便我们在实际应用中查找和解决问题
作者: LnBSD    时间: 2011-08-12 16:07
貌似有个 age=xx 可以看出是否命中,只是不够直观
作者: zootop    时间: 2011-08-13 05:04
可爱的楼主帮我看看remap.conf
map http://www.我的域名.com https://www.带ssl证书的站点.com

出现问题1:www.我的域名.com 解析不到TS所在服务器。

map http://123.123.123.123(我的TS服务的IP地址) https://www.带ssl证书的站点.com

出现问题2:可以通过http://123.123.123.123访问到https://www.带ssl证书的站点.com,但是用户登无法正常登陆,提示这是一个不安全的连接。
作者: zootop    时间: 2011-08-15 13:26
怎样配置trafficserver反向代理HTTPS站点
作者: aaaaaa    时间: 2011-08-15 13:39
你的问题我在你的话题里回复了
作者: zootop    时间: 2011-08-15 23:11
你的问题我在你的话题里回复了
aaaaaa 发表于 2011-08-15 13:39


感谢楼主的回复。

源网站是:https://www.abc.com
我的域名:http://www.123.com

这种情况怎样配置啊?

map http://www.123.com https://www.abc.com  是这样吗?
作者: LnBSD    时间: 2011-08-16 18:02
ATS,是我最熟悉/最喜欢的cache系统,本人使用几年了,目前开源版本已经发稳定的3.0版本,有需要高性能的cac ...
aaaaaa 发表于 2010-09-02 16:18

运行一会报错, 系统os  centos5.6 x64

Aug 16 17:14:36 localhost traffic_manager[10172]: NOTE: --- Manager Starting ---
Aug 16 17:14:36 localhost traffic_manager[10172]: NOTE: Manager Version: Apache Traffic Server - traffic_manager - 3.0.1 - (build # 7915 on Aug  9 2011 at 15:47:16)
Aug 16 17:14:36 localhost traffic_manager[10172]: NOTE: RLIMIT_NOFILE(7):cur(30000),max(30000)
Aug 16 17:14:36 localhost traffic_manager[10172]: {47853183510192} STATUS: opened /usr/local/trafficserver/var/log/trafficserver/manager.log
Aug 16 17:14:39 localhost traffic_server[10181]: NOTE: --- Server Starting ---
Aug 16 17:14:39 localhost traffic_server[10181]: NOTE: Server Version: Apache Traffic Server - traffic_server - 3.0.1 - (build # 7915 on Aug  9 2011 at 15:48:0
Aug 16 17:14:39 localhost traffic_server[10181]: {47505719166752} STATUS: opened /usr/local/trafficserver/var/log/trafficserver/diags.log
Aug 16 17:17:42 localhost traffic_logcat[10279]: NOTE: --- SAC Starting ---
Aug 16 17:17:42 localhost traffic_logcat[10279]: NOTE: SAC Version: Apache Traffic Server - traffic_logcat - 3.0.1 - (build # 7915 on Aug  9 2011 at 15:48:22)
Aug 16 17:18:01 localhost traffic_logstats[10282]: NOTE: --- SAC Starting ---
Aug 16 17:18:01 localhost traffic_logstats[10282]: NOTE: SAC Version: Apache Traffic Server - traffic_logstats - 3.0.1 - (build # 7915 on Aug  9 2011 at 15:48:24)
Aug 16 17:30:33 localhost traffic_server[10181]: FATAL: MIME.cc:576: failed assert `strncasecmp(field->m_ptr_name, wks, field->m_len_name) == 0`
Aug 16 17:30:33 localhost traffic_manager[10172]: {47853183510192} FATAL: [LocalManager::pollMgmtProcessServer] Error in read (errno: 104)
Aug 16 17:30:33 localhost traffic_manager[10172]: {47853183510192} FATAL:  (last system error 104: Connection reset by peer)
Aug 16 17:30:33 localhost traffic_manager[10172]: {47853183510192} ERROR: [LocalManager::sendMgmtMsgToProcesses] Error writing message
Aug 16 17:30:33 localhost traffic_manager[10172]: {47853183510192} ERROR:  (last system error 32: Broken pipe)
Aug 16 17:30:33 localhost traffic_cop[10170]: cop received child status signal [10172 1536]
Aug 16 17:30:33 localhost traffic_cop[10170]: traffic_manager not running, making sure traffic_server is dead
Aug 16 17:30:33 localhost traffic_cop[10170]: spawning traffic_manager
Aug 16 17:30:33 localhost traffic_manager[10434]: NOTE: --- Manager Starting ---
Aug 16 17:30:33 localhost traffic_manager[10434]: NOTE: Manager Version: Apache Traffic Server - traffic_manager - 3.0.1 - (build # 7915 on Aug  9 2011 at 15:47:16)
Aug 16 17:30:33 localhost traffic_manager[10434]: NOTE: RLIMIT_NOFILE(7):cur(30000),max(30000)
Aug 16 17:30:33 localhost traffic_manager[10434]: {47108609263280} STATUS: opened /usr/local/trafficserver/var/log/trafficserver/manager.log
作者: aaaaaa    时间: 2011-08-16 18:23
奇怪极了,为什么我都没有碰到 FATAL: MIME.cc:576这个问题内?
作者: LnBSD    时间: 2011-08-17 10:20
本帖最后由 LnBSD 于 2011-08-17 10:33 编辑

我贴一下主配置文件

服务器是 hp 380g6  12G内存  146Gx4 硬盘  俩cpu
  1. #diff records.config /root/trafficserver-3.0.1/proxy/config/records.config.default
  2. 22c22
  3. < CONFIG proxy.config.proxy_name STRING zats
  4. ---
  5. > CONFIG proxy.config.proxy_name STRING localhost.localdomain
  6. 39c39
  7. < CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.500000
  8. ---
  9. > CONFIG proxy.config.exec_thread.autoconfig.scale FLOAT 1.5
  10. 84c84
  11. < CONFIG proxy.config.http.server_port INT 80
  12. ---
  13. > CONFIG proxy.config.http.server_port INT 8080
  14. 91c91
  15. < CONFIG proxy.config.http.insert_response_via_str INT 1
  16. ---
  17. > CONFIG proxy.config.http.insert_response_via_str INT 0
  18. 142c142
  19. < CONFIG proxy.config.http.background_fill_completed_threshold FLOAT 0.500000
  20. ---
  21. > CONFIG proxy.config.http.background_fill_completed_threshold FLOAT 0.5
  22. 172c172
  23. < CONFIG proxy.config.http.append_xforwards_header INT 1
  24. ---
  25. > CONFIG proxy.config.http.append_xforwards_header INT 0
  26. 177a178
  27. >
  28. 203,204c204,205
  29. < #CONFIG proxy.config.http.quick_filter.mask INT 1154
  30. < CONFIG proxy.config.http.quick_filter.mask INT 0x0402
  31. ---
  32. > CONFIG proxy.config.http.quick_filter.mask INT 0x482
  33. >
  34. 213c214
  35. < CONFIG proxy.config.http.normalize_ae_gzip INT 0
  36. ---
  37. > CONFIG proxy.config.http.normalize_ae_gzip INT 0      
  38. 224c225
  39. < CONFIG proxy.config.http.cache.enable_default_vary_headers INT 1
  40. ---
  41. > CONFIG proxy.config.http.cache.enable_default_vary_headers INT 0
  42. 252c253
  43. < CONFIG proxy.config.http.cache.heuristic_lm_factor FLOAT 0.100000
  44. ---
  45. > CONFIG proxy.config.http.cache.heuristic_lm_factor FLOAT 0.10
  46. 254c255
  47. < CONFIG proxy.config.http.cache.fuzz.probability FLOAT 0.005000
  48. ---
  49. > CONFIG proxy.config.http.cache.fuzz.probability FLOAT 0.005
  50. 264a266
  51. >
  52. 311c313
  53. < CONFIG proxy.config.cache.ram_cache.size INT  63554432000
  54. ---
  55. > CONFIG proxy.config.cache.ram_cache.size INT -1
  56. 376c378
  57. < CONFIG proxy.config.hostdb.storage_size INT 33554432
  58. ---
  59. > CONFIG proxy.config.hostdb.storage_size INT 32M
  60. 570a573
  61. >
  62. 585d587
  63. < CONFIG proxy.config.cluster.cluster_configuration STRING cluster.config
复制代码

作者: LnBSD    时间: 2011-08-17 10:32
本帖最后由 LnBSD 于 2011-08-17 10:39 编辑

回复 64# LnBSD

[root@localhost trafficserver]# grep -v "^#" storage.config   
/www/cache1/ 8192M
/www/cache2/ 8192M
/www/cache3/ 8192M


另外说明一下,当时并发有1400的样子,都是普通的html文件
ats进程cpu占用大概300%左右
相当于占用总cpu的 300%/16 = 18%
作者: LnBSD    时间: 2011-08-21 11:21
重新编译ats 去掉--enable-debug 选项,一切恢复了正常,这个。。。。影响未免大了点吧
作者: aaaaaa    时间: 2011-08-21 11:24
你能跑到1400已经不错了。--enable-debug纯是为开发测试用的,绝对的。


作者: LnBSD    时间: 2011-08-22 10:33
回复 67# aaaaaa


    嗯

顺便问一下 ats怎么查看当前机器缓存的对象数,类似squid 通过mgr:info看到的
  1. Internal Data Structures:
  2.         29458920 StoreEntries
  3.         400964 StoreEntries with MemObjects
  4.         400874 Hot Object Cache Items
  5.         29336639 on-disk objects
复制代码
我看了一下ats traffic_line -r proxy.node.user_agents_total_documents_served 取到的值,不太对
作者: aaaaaa    时间: 2011-08-22 14:10
echo show:cache-stats | traffic_shell

traffic_shell是个入门级的工具,先用着看看吧
作者: rhinux    时间: 2011-08-22 20:03
本帖最后由 rhinux 于 2011-08-22 20:07 编辑

关于自定义日志的问题,我使用tradition的日志定义格式

  1. records.config开启

  2. CONFIG proxy.config.log.custom_logs_enabled INT 1
  3. CONFIG proxy.config.log.xml_logs_config INT 0
复制代码
logs_config内容如下
  1. format:enabled:1:rhcore:%<chi> / %<cqu> / %<pssc>:rhlist:ASCII:none
复制代码
重启时的日志
  1. [Aug 22 19:58:55.719] Manager {34392253792} ERROR: [TrafficManager] ==> Cleaning up and reissuing signal #15
  2. [Aug 22 19:58:55.719] Manager {34392253792} ERROR:  (last system error 0: Unknown error: 0)
  3. NOTE: Traffic Server received Sig 15: Terminated: 15
  4. [TrafficManager] ==> signal #15
  5. [Aug 22 19:58:55.727] Manager {34392253792} ERROR: [TrafficManager] ==> signal #15
  6. [Aug 22 19:58:55.727] Manager {34392253792} ERROR:  (last system error 22: Invalid argument)
  7. [E. Mgmt] log ==> [TrafficManager] using root directory '/services/ts_server'
  8. [Aug 22 19:58:55.790] {34392252592} STATUS: opened /services/ts_server/var/log/trafficserver/manager.log
  9. [Aug 22 19:58:55.790] {34392252592} NOTE: updated diags config
  10. [Aug 22 19:58:55.941] Manager {34392252592} NOTE: [ClusterCom::ClusterCom] Node running on OS: 'FreeBSD' Release: '7.2-RELEASE'
  11. [Aug 22 19:58:55.941] Manager {34392252592} NOTE: [LocalManager::listenForProxy] Listening on port: 8080
  12. [Aug 22 19:58:55.941] Manager {34392252592} NOTE: [TrafficManager] Setup complete
  13. [Aug 22 19:58:57.025] Manager {34392252592} NOTE: [LocalManager::startProxy] Launching ts process
  14. [TrafficServer] using root directory '/services/ts_server'
  15. [Aug 22 19:58:57.043] Manager {34392252592} NOTE: [LocalManager::pollMgmtProcessServer] New process connecting fd '8'
  16. [Aug 22 19:58:57.044] Manager {34392252592} NOTE: [Alarms::signalAlarm] Server Process born
  17. [Aug 22 19:58:58.072] {34394349744} STATUS: opened /services/ts_server/var/log/trafficserver/diags.log
  18. [Aug 22 19:58:58.072] {34394349744} NOTE: updated diags config
  19. [Aug 22 19:58:58.082] Server {34394349744} NOTE: cache clustering disabled
  20. [Aug 22 19:58:58.111] Server {34394349744} WARNING: unable to DNS beiai01.madserving.cn: 1
  21. [Aug 22 19:58:58.117] Server {34394349744} NOTE: cache clustering disabled
  22. [Aug 22 19:58:58.385] Server {34394349744} NOTE: logging initialized[7], logging_mode = 3
  23. [Aug 22 19:58:58.404] Server {34394349744} NOTE: traffic server running
  24. [Aug 22 19:58:58.497] Server {34394351344} NOTE: cache enabled
复制代码
这样就可以了吗,难道不需要在records.config中指定一下“rhcore”这样的日志格式名吗。
反正我重启后,找不到日志在哪里。
哪怕是我把 logs.config 删除,重启的时候trafficserver也没报错说找不到logs.config啥的,
TS 3.0是不是改过什么了?

补充
  1. Custom Logs ------------------------------ off
  2. Custom Log Definition Format ------------- Traditional
复制代码
所以那个CONFIG proxy.config.log.custom_logs_enabled INT 1 是没效果的
作者: rhinux    时间: 2011-08-22 20:12
另外貌似有个bug

  1. % show:network

  2. Hostname ----------------rhinux.big.com
  3. usage: route [-dnqtv] command [[modifiers] args]
  4. Default Gateway ---------
  5. Search Domain ----------- none
  6. DNS IP Addresses---------      202.96.209.5       202.96.209.133       211.136.17.107      202.96.209.5
  7. Segmentation fault (core dumped)
复制代码

作者: rhinux    时间: 2011-08-22 20:47
  1. 554   *) The old logs.config custom log format is no longer supported. Only the

  2. 555    XML custom logs are now supported. This eliminates the config

  3. 556  
  4. 557        proxy.config.log.xml_logs_config

  5. 558  
  6. 559    as well, since it's the only option for custom logs [TS-556].

  7. 560
复制代码
找到了,原来这样
作者: aaaaaa    时间: 2011-08-22 21:46
回复 71# rhinux


    按说trunk中已经修复了这个问题,你测试的什么版本?如果不是trunk,测试一下trunk版本?
作者: rhinux    时间: 2011-08-22 22:50
回复 73# aaaaaa


    FreeBSD

我的是TS 3.01
作者: macheal007    时间: 2011-08-23 09:11
不错,一直在研究ATS,支持一下
作者: LnBSD    时间: 2011-08-23 10:34
回复 74# rhinux
应该是在FreeBSD OS下面的问题 我的centos就没有问题
  1. % show:network

  2. Hostname ---------------- localhost.localdomain
  3. Default Gateway --------- 10.15.184.1
  4. Search Domain ----------- none
  5. DNS IP Addresses--------- 127.0.0.1  

  6. NIC eth0
  7.   Status ---------------- up
  8.   Start on Boot --------- onboot
  9.   Start Protocol -------- static
  10.   IP Address ------------ 10.15.186.121
  11.   Netmask --------------- 255.255.248.0
  12.   Gateway ---------------

  13. NIC eth1
  14.   Status ---------------- down
  15.   Start on Boot --------- not-onboot
  16.   Start Protocol -------- dhcp
  17.   IP Address ------------
  18.   Netmask ---------------
  19.   Gateway ---------------

  20. NIC eth2
  21.   Status ---------------- down
  22.   Start on Boot --------- not-onboot
  23.   Start Protocol -------- dhcp
  24.   IP Address ------------
  25.   Netmask ---------------
  26.   Gateway ---------------

  27. NIC eth3
  28.   Status ---------------- down
  29.   Start on Boot --------- not-onboot
  30.   Start Protocol -------- dhcp
  31.   IP Address ------------
  32.   Netmask ---------------
  33.   Gateway ---------------

  34. %
复制代码

作者: LnBSD    时间: 2011-08-23 10:43
echo show:cache-stats | traffic_shell

traffic_shell是个入门级的工具,先用着看看吧
aaaaaa 发表于 2011-08-22 14:10



    这个工具能取到的信息也不够多,没有我想要的存储对象总数的统计信息,不知道 是我没找到还是其他原因

另外请教两个问题
1.ATS如何对图片做防盗链  
2.ATS如何在做所有域做反向代理的时候,对获取数据源的ip段进行限制,比如我的ATS 只允许 数据来源是 192.168.0.0-192.168.0.255才允许反代,这个应该是用dest_ip来实现,具体语法希望能指教一下
作者: aaaaaa    时间: 2011-08-23 15:42
问题1,请参考:
http://people.apache.org/~zym/trafficserver/FAQ.html

http://zymlinux.net/trafficserver/FAQ.html
问题2,请参考 34楼 的答复。如果你是只为某个网络服务,应该使用ip_allow.config。

FYI
作者: LnBSD    时间: 2011-08-23 16:04
回复 78# aaaaaa


       非常滴感谢
作者: LnBSD    时间: 2011-08-25 15:32
回复 78# aaaaaa
防盗链已经解决了 第二个问题还没搞好,我再说一下我的需求

如上图,我的ats服务器需要对两个机房的全部内容做教育网加速
因为域名非常多,多到不可统计,所以不可能通过域名或者dns来限制ats服务器代理的站点,只能通过ats源服务器的ip段来做控制
我以前的squid配置代码如下
  1. acl xxxip dst xx.xx.112.0/255.255.240.0  yyy.yyy.92.96/255.255.255.224


  2. ......略过无关

  3. http_access allow all  xxxip
  4. http_access deny all
复制代码

作者: aaaaaa    时间: 2011-08-25 23:55
看你的配置,是希望只为xx.xx yyy.yyy开头的2个段作加速服务,从squid的配置中说,acl xxxip dst是一个slow的filter,要慎用。

TS目前我们不作后台服务器的ACL过滤,因为反向代理的map规则已经定义好控制了。

从你的现实情况看,我觉得加2个独立的路由策略可能更好些,形成代理加速服务器的路由只包括必需的一些固定路由,如dns ntp等机器和管理机器,加上这2段的地址,形成一个孤岛。路由的处理,在linux和bsd上的效率肯定比squid的acl处理效率高多了。

FYI
作者: suran007    时间: 2011-09-07 15:26
回复  xiaxueyi


    问题一,这个ACL规则是后来增加的,以至于官方文档中都没有很详细的记录,并且目 ...
aaaaaa 发表于 2011-05-13 14:19



    你好,我在测试中,遇到了一些问题:
1、我把records.config CONFIG proxy.config.http.quick_filter.mask INT 0
2、设置remap.config
.defflt  purge_method @action=allow @src_ip=10.0.0.0/16 @method=PURGE
.useflt  purge_method
map http://stock.123.com/ http://stock.123.com/
map http://bbs.123.com/ http://bbs.123.com/
重启trafficserver后,为啥从10.0.段purge没有问题,但是正常get请求都被deny了呢,报403
作者: aaaaaa    时间: 2011-09-07 23:57
回复 82# suran007


    你用的规则是allow,那就是只允许这个网段的地址使用PURGE的方法,访问下面的map规则。这个allow规则是需要慎用的。如要改,可以在后面加上@method=GET @method=POST...
如改为:
.defflt  purge_method @action=allow @src_ip=10.0.0.0/16 @method=PURGE @method=GET @method=POST
即为你想达到的效果。

或者如我的例子里,用deny的方式去屏蔽。

FYI
作者: aaaaaa    时间: 2011-09-08 00:01
回复 83# LnBSD


    没太看明白。
有个规则叫:
regex_map_with_referer ,这个是带referer检查的带域名正则表达式匹配的映射规则。可以写的很复杂。

如果你能理解这个该怎么写,你就是真正理解了TS的map规则。
作者: suran007    时间: 2011-09-09 11:27
回复  suran007


    你用的规则是allow,那就是只允许这个网段的地址使用PURGE的方法,访问下面的map ...
aaaaaa 发表于 2011-09-07 23:57



    是这样,我做的反向代理,我的意思是只允许10.0.0.0/16这个段进行purge,其他所有公网用户都可以直接get请求。另外我看map执行同一个域名怎么指向两个realserver呢,例如,我有两个realserver服务stock.123.com,外面来访问stock.123.com的时候,ats转发请求道两个realserver,我按照如下配置就会报错了

map http://stock.123.com/ http://192.168.0.1/

map http://stock.123.com/ http://192.168.0.2/
作者: aaaaaa    时间: 2011-09-09 13:54
hmm,用allow解决不了你的问题,你还是老老实实按照我贴的方法作吧,全局打开PURGE,然后作个filter屏蔽除了你这个段之外的所有PURGE。这是王道


TS对remap的用法,希望大家都按照dns->dns的方式。即你的需求需要建立一个源服务器,如realstock.123.com,把这2个ip加进去,然后作个map:
map http;//stock.123.com/ http://realstock.123.com/
这是remap的王道


FYI
作者: suran007    时间: 2011-09-09 15:43
hmm,用allow解决不了你的问题,你还是老老实实按照我贴的方法作吧,全局打开PURGE,然后作个filter屏蔽除了 ...
aaaaaa 发表于 2011-09-09 13:54



    我开启内网dns参数CONFIG proxy.config.dns.nameservers ,ats如果发现后端其中一台realserver的80端口不通,ats是可以容错的,请求会转发给另外的realserver,但是realserver返回的7层的错误,例如503,504,500这些错误,ats是无法容错的。
作者: aaaaaa    时间: 2011-09-09 15:51
是的,7层我们作了个健康检测的patch。在https://issues.apache.org/jira/browse/TS-654里可以下载。配置文件也是很容易看懂的。如需要可以测试一下。
作者: rhinux    时间: 2011-09-13 19:41
hello 6a 关于自动update的问题
update.config内容如下
http://www.company.com\User-Agent: noname user agent\13\3600\5\

手册里也没有具体描述
Format
Each line in the update.config file uses the following format:
URL\request_headers\offset_hour\interval\recursion_depth\

这里的URL 是不是所有的都要制定的,所谓的正则是直接写在同一行里面的吗?
类似于:
http://www.company.com/[a-z]{5}\User-Agent: noname user agent\13\3600\5\
但实际上请求的是一个地址,也不是正则的意思比如
http://www.company.com/assdf
作者: aaaaaa    时间: 2011-09-13 23:41
严格按照例子里的格式写,这是必须的,比如request_headers是你控制返回内容为纯html的一个关键,印象中这个插件跟prefetch一样,不能能处理压缩数据。其他参数都不可以免的。

如果你看:http://trafficserver.apache.org/ ... s.htm#update.config
后面的Specifying URL Regular Expressions (url_regex)下的内容与你的update无关。
作者: rhinux    时间: 2011-09-14 00:02
回复 91# aaaaaa

我使用完整的URL是没有问题的,包括自动更新mp4文件,这么看来要用PUSH模式更新了,感谢aaaaaa
作者: aaaaaa    时间: 2011-09-14 10:53
如果我用prefetch或update功能的话,我会建立一个专用的TOP LEVEL的页面,这个页面是一个超大的入口,如:
prefetch的话,加入N多的新页面/图片资源等。如update的话,加入关键的一些需要更新的URL地址。这样控制起来比较容易作。

update后面的recursion_depth参数的使用会给你很多方便的,你希望抓多少层的内容,这里需要控制好。

个人感觉还是更倾向不用push。prefetch和update功能用好了比push要省心的啦
作者: rhinux    时间: 2011-09-14 13:25
回复 93# aaaaaa


    其实我还不理解 update,如果不指定绝对的url是抓不到内容的,那后面的递归层次好像也没有意义啊
作者: aaaaaa    时间: 2011-09-14 14:42
update和prefetch都是解析HTML文件,提取出其中的页面元素,然后对这些元素进行fresh的操作。碰到目录或连接进来的html文件,update会递归的继续处理。这就是通常类似于网页爬虫的操作。因此通常对多数人来说,选首页等最热门的页面来,爬个5级左右深度,基本就齐活了。
作者: LnBSD    时间: 2011-09-22 14:57
proxy.local.incoming_ip_to_bind
能不能指定ats监听两个ip的某个端口
作者: aaaaaa    时间: 2011-09-22 22:23
##########
   # basics #
   ##########
   # The main server_port is listed here, other server ports is a
   # string of ports, separated by whitespace.  The port attributes
   # should be set to X(default behavior). For example...
   # server_other_ports STRING 1234:X 12345:X
CONFIG proxy.config.http.server_port INT 8080
CONFIG proxy.config.http.server_port_attr STRING X
# to enable IPv6 listening on port 8080:
# CONFIG proxy.config.http.server_other_ports STRING 8080:X6
CONFIG proxy.config.http.server_other_ports STRING NULL
CONFIG proxy.config.http.connect_ports STRING 443 563


我觉得多数人都够用了吧?server_other_ports可以定义很多端口。
作者: LnBSD    时间: 2011-09-23 15:34
本帖最后由 LnBSD 于 2011-09-23 16:42 编辑

回复 97# aaaaaa

感谢你的回答,可能是我说的不够明白;
比如我的服务器有三个ip 192.168.100.1  100.2 100.3 ,我只想让ats监听 100.1 和100.2 的80端口  不想监听所有的80端口

另外在centos4 x86的机器上 执行启动脚本失败
  1. [root@ bin]# ./trafficserver start
  2. Starting Apache Traffic Server: execvp: No such file or directory
  3.                                                            [FAILED]
  4. [root@ bin]# sh -x trafficserver start
  5. + TS_PACKAGE_NAME='Apache Traffic Server'
  6. + TS_PACKAGE_VERSION=3.0.1
  7. + TS_PACKAGE_BUGREPORT=dev@trafficserver.apache.org
  8. ++ uname -s
  9. + UNAME_S=Linux
  10. + '[' -e /etc/SuSE-release ']'
  11. + '[' -e /etc/fedora-release ']'
  12. + '[' -e /etc/redhat-release ']'
  13. + DISTRIB_ID=redhat
  14. + HEAD=/usr/bin/head
  15. + test -x /usr/bin/head
  16. + ESED=/usr/bin/sed
  17. + test -x /usr/bin/sed
  18. + ESED=sed
  19. + PATH=/usr/sbin:/usr/bin:/sbin:/bin
  20. + DESC='start/stop Traffic Server'
  21. + NAME=trafficserver
  22. + TS_PREFIX=/usr/local/trafficserver-3.0.1
  23. + TS_ROOT=/usr/local/trafficserver-3.0.1
  24. ++ echo /usr/local/trafficserver-3.0.1
  25. ++ sed -e 's;/usr/local/trafficserver-3.0.1$;;'
  26. + eval TS_BASE=
  27. ++ TS_BASE=
  28. + TC_NAME=traffic_cop
  29. + TM_NAME=traffic_manager
  30. + TS_NAME=traffic_server
  31. + TC_DAEMON=/usr/local/trafficserver-3.0.1/bin/traffic_cop
  32. + TC_DAEMON_ARGS=
  33. + TM_DAEMON=/usr/local/trafficserver-3.0.1/bin/traffic_manager
  34. + TM_DAEMON_ARGS=
  35. + TS_DAEMON=/usr/local/trafficserver-3.0.1/bin/traffic_server
  36. + TS_DAEMON_ARGS=
  37. + TC_PIDFILE=/usr/local/trafficserver-3.0.1/var/trafficserver/cop.lock
  38. + TM_PIDFILE=/usr/local/trafficserver-3.0.1/var/trafficserver/manager.lock
  39. + TS_PIDFILE=/usr/local/trafficserver-3.0.1/var/trafficserver/server.lock
  40. + PIDFILE_CHECK_RETRIES=30
  41. + STDOUTLOG=/usr/local/trafficserver-3.0.1/var/log/trafficserver/traffic_server.stdout
  42. + STDERRLOG=/usr/local/trafficserver-3.0.1/var/log/trafficserver/traffic_server.stderr
  43. + '[' -d /etc/rc.d/init.d ']'
  44. + SCRIPTNAME=/etc/rc.d/init.d/trafficserver
  45. + '[' '!' -x /usr/local/trafficserver-3.0.1/bin/traffic_server ']'
  46. + test -r /etc/default/trafficserver
  47. + test -f /etc/default/rcS
  48. + test -f /etc/rc.status
  49. + test -f /etc/rc.d/init.d/functions
  50. + . /etc/rc.d/init.d/functions
  51. ++ TEXTDOMAIN=initscripts
  52. ++ umask 022
  53. ++ PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
  54. ++ export PATH
  55. ++ '[' -z '' ']'
  56. ++ COLUMNS=80
  57. ++ '[' -z '' ']'
  58. +++ /sbin/consoletype
  59. ++ CONSOLETYPE=pty
  60. ++ '[' -f /etc/sysconfig/i18n -a -z '' ']'
  61. ++ . /etc/sysconfig/i18n
  62. +++ LANG=en_US.iso885915
  63. +++ SUPPORTED=en_US.iso885915:en_US:en
  64. +++ SYSFONT=latarcyrheb-sun16
  65. ++ '[' pty '!=' pty ']'
  66. ++ '[' -n '' ']'
  67. ++ export LANG
  68. ++ '[' -z '' ']'
  69. ++ '[' -f /etc/sysconfig/init ']'
  70. ++ . /etc/sysconfig/init
  71. +++ BOOTUP=color
  72. +++ GRAPHICAL=yes
  73. +++ RES_COL=60
  74. +++ MOVE_TO_COL='echo -en \033[60G'
  75. +++ SETCOLOR_SUCCESS='echo -en \033[0;32m'
  76. +++ SETCOLOR_FAILURE='echo -en \033[0;31m'
  77. +++ SETCOLOR_WARNING='echo -en \033[0;33m'
  78. +++ SETCOLOR_NORMAL='echo -en \033[0;39m'
  79. +++ LOGLEVEL=3
  80. +++ PROMPT=yes
  81. ++ '[' pty = serial ']'
  82. ++ '[' color '!=' verbose ']'
  83. ++ INITLOG_ARGS=-q
  84. + test -f /lib/lsb/init-functions
  85. + . /lib/lsb/init-functions
  86. ++ alias start_daemon=/etc/redhat-lsb/lsb_start_daemon
  87. ++ alias killproc=/etc/redhat-lsb/lsb_killproc
  88. ++ alias pidofproc=/etc/redhat-lsb/lsb_pidofproc
  89. ++ alias 'log_success_msg=/etc/redhat-lsb/lsb_log_message success'
  90. ++ alias 'log_failure_msg=/etc/redhat-lsb/lsb_log_message failure'
  91. ++ alias 'log_warning_msg=/etc/redhat-lsb/lsb_log_message warning'
  92. + test -f /etc/rc.subr
  93. + case "$1" in
  94. + '[' redhat = ubuntu -o redhat = debian ']'
  95. + '[' redhat = fedora -o redhat = redhat ']'
  96. + action 'Starting Apache Traffic Server:' forkdaemon /usr/local/trafficserver-3.0.1/bin/traffic_cop
  97. + STRING='Starting Apache Traffic Server:'
  98. + echo -n 'Starting Apache Traffic Server: '
  99. Starting Apache Traffic Server: + '[' '' '!=' '' -a -w /etc/rhgb/temp/rhgb-console ']'
  100. + shift
  101. + initlog -q -c 'forkdaemon /usr/local/trafficserver-3.0.1/bin/traffic_cop'
  102. execvp: No such file or directory
  103. + failure 'Starting Apache Traffic Server:'
  104. + rc=255
  105. + '[' -z '' ']'
  106. + initlog -q -n trafficserver -s 'Starting Apache Traffic Server:' -e 2
  107. + '[' color '!=' verbose -a -z '' ']'
  108. + echo_failure
  109. + '[' color = color ']'
  110. + echo -en '\033[60G'
  111.                                                            + echo -n '['
  112. [+ '[' color = color ']'
  113. + echo -en '\033[0;31m'
  114. + echo -n FAILED
  115. FAILED+ '[' color = color ']'
  116. + echo -en '\033[0;39m'
  117. + echo -n ']'
  118. ]+ echo -ne '\r'
  119. + return 1
  120. + '[' -x /usr/bin/rhgb-client ']'
  121. + return 255
  122. + rc=255
  123. + echo

  124. + '[' '' '!=' '' -a -w /etc/rhgb/temp/rhgb-console ']'
  125. + return 255
复制代码
我分析了一下脚本,直接执行 /usr/local/trafficserver-3.0.1/bin/traffic_cop & 是没有问题的,服务访问也正常
作者: aaaaaa    时间: 2011-09-26 02:14
本帖最后由 aaaaaa 于 2011-09-26 02:18 编辑

回复 97# LnBSD

如果是端口要这样改,系统设计里没有考虑到这种情况,TS可以强制制定bind的特殊ip,但是只能控制一个出+一个入的IP(查records.config中的"bind"),从这个情况来看,用Iptables 防火墙会是一个很好的选择。

说实话,我真不推荐用v4.x的系统,请尽力转到6.x吧。

   
+ . /lib/lsb/init-functions
++ alias start_daemon=/etc/redhat-lsb/lsb_start_daemon
++ alias killproc=/etc/redhat-lsb/lsb_killproc
++ alias pidofproc=/etc/redhat-lsb/lsb_pidofproc
++ alias 'log_success_msg=/etc/redhat-lsb/lsb_log_message success'
++ alias 'log_failure_msg=/etc/redhat-lsb/lsb_log_message failure'
++ alias 'log_warning_msg=/etc/redhat-lsb/lsb_log_message warning'
+ test -f /etc/rc.subr
+ case "$1" in
+ '[' redhat = ubuntu -o redhat = debian ']'
+ '[' redhat = fedora -o redhat = redhat ']'
+ action 'Starting Apache Traffic Server:' forkdaemon /usr/local/trafficserver-3.0.1/bin/traffic_cop
+ STRING='Starting Apache Traffic Server:'
+ echo -n 'Starting Apache Traffic Server: '
这段代码说明你用的是一个类似redhat的系统,但是貌似启用了lsb的东西,但是不一定能用,建议检查一下/etc/redhat-lsb/lsb_start_daemon 能否运行。
作者: LnBSD    时间: 2011-10-28 10:22
麻烦楼主给解释一下 ats的head信息里面的  [cMsSfW]    [cMsSf ]   [cHs f ]   诸如此类代表的意思吧,3q

Ms应该是miss  Hs是hits  其他就看不明白了
作者: aaaaaa    时间: 2011-10-29 14:47
回复 99# LnBSD


    参考官方文档:http://trafficserver.apache.org/ ... nterpret_via_header
作者: aaaaaa    时间: 2011-11-02 21:33
你这个错误估计是因为.defflt和wang之间的空格不是ascii码的空格。而用了中文的空格。
看页面源码得到:
FATAL: [ReverseProxy] Unknown directive &quot;.defflt wang&quot; at line 125<br />
/usr/local/trafficserver/bin/traffic_server - STACK TRACE: <br />

这个tsar的工具还有点纠结,因为我们比较大的改动不少地方,跟ts-3.0.1标准版的配合应该是有问题的。等我们搞定了再给你们吧。
作者: wangduo112    时间: 2011-11-03 11:08
回复 102# aaaaaa

非常感谢。:emn1:




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2