免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: aaaaaa
打印 上一主题 下一主题

[proxy] Apache Traffic Server 3.2.0 正式版,附srpm包 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-05-13 14:11 |只看该作者
回复 25# aaaaaa


    我最近在测试的过程中发现我系统测试中有2个特别大的文件,是造成我的磁盘io分配不均衡的主因,这2个文件是其他小图片的1000倍。你分析一下你的系统中是否有类似的情况?

论坛徽章:
0
32 [报告]
发表于 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情况。

论坛徽章:
0
33 [报告]
发表于 2011-06-17 16:35 |只看该作者
顺便说一句,很荣幸已经获邀成为trafficserver的committer,大家有任何问题和patch我都可以代理提交。

thanks

论坛徽章:
0
34 [报告]
发表于 2011-06-19 19:18 |只看该作者
请问下,ATS还有更详细点的说明吗?比如Cache中的结构设计,本人正在研究ATS的源码!

论坛徽章:
0
35 [报告]
发表于 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?

论坛徽章:
0
36 [报告]
发表于 2011-06-29 10:42 |只看该作者
用traffic server 3.0 端口绑定不能低于 1024,做反向代理时无法用80端口。如果所述属实,当然是bug。

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

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

论坛徽章:
0
37 [报告]
发表于 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)

论坛徽章:
0
38 [报告]
发表于 2011-06-29 17:47 |只看该作者
这个port的init脚本有问题,不应该直接用traffic_server。你看看直接用/usr/bin/trafficserver来启动吧。

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

论坛徽章:
0
39 [报告]
发表于 2011-06-30 09:39 |只看该作者
谢谢回复,接用/usr/bin/trafficserver来启动是可以的

论坛徽章:
0
40 [报告]
发表于 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就没有任何问题,
恳请指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP