作为一个架构师,就必须要考虑如何选型,我们从性能、功能、配置上来进行比较筛选。
| 软件名称 | 性能 | 功能 | 过滤规则配置 |
| Squid |
不能多核是硬伤; 磁盘缓存容量有优势; 性能中等 |
多; 支持ACL角色控制; 支持ICP缓存协议 |
支持外部文件读取及热加载; 支持热启动 |
| Varnish |
多核支持; 内存缓存; 性能强 |
够用; 支持集群,但不支持ICP集群; 支持后端存活检查 |
不支持外部文件读取; 需要转义; 支持热启动 |
| Nginx |
多核支持; 支持代理插件; 性能较强 |
多; 支持集群,但不支持ICP集群; 支持后端存活检查; 通过插件可以充当多角色服务器 |
不支持外部文件读取; 需要转义; 支持热启动 |
| Apache TS |
多核支持; 磁盘/内存缓存; 性能强 |
够用; 支持后端存活检查; 支持ICP协议,Cluster不稳定; 支持插件开发; |
支持外部规则文件读取及热加载; 支持热启动 |
| HAProxy |
多核支持; 无缓存; 支持HTTP头部解析; 性能强 |
少,只专注HTTP头部解析和转发功能; 支持ACL角色控制; 支持后端存活检查 |
支持外部规则文件读取及热加载; 支持热启动; 支持会话粘滞和长连接 |
现在,我们对这三层功能结构充分了解,在测试调优及生产线的实践检验中,我们发现:
- HTTP防御性能:HAProxy在应对大流量CC攻击时,做正则匹配及头部过滤时,CPU消耗只占10%~20%。其它软件均狂占CPU资源约90%以上,容易成瓶颈导致整个系统无响应。
- 反向代理性能:单纯转发效率以内存缓存型的Varnish性能最强,ATS和Nginx次之,考虑大容量缓存因素,ATS也是个不错的选择。Nginx是专门针对C10K的产物,性能不错,配合自己编写插件,业务可塑性很强。
- 过滤规则的可配置性:HAProxy,ATS,Squid均支持规则文件读取、ACL定制和热加载、热启动。Nginx则不支持外部文件正则匹配,略差一点,但可塑性强。
负载均衡——高可用性:LVS
LVS是个重量级、高效稳定的四层转发,虽然不能作七层HTTP协议的识别,但完全可以架设在七层之前,与上述的各种软件搭配使用。
所以,LVS的使用并不会影响网络结构,后续仍然可以想上就上,前提是要兼顾到LVS的单点故障,这个我们可以通过Keepalived/Heartbeat来实现可用性和可靠性的保证。
1894

被折叠的 条评论
为什么被折叠?



