在网上找一些关于Haproxy对于过速防御的解决办法,大致上就找到两种:
-
对于整体请求速度的控制
-
对于某个IP的请求速度的控制
这两种方式都不太好,第一种太过粗粒度,第二种容易误伤(如果多个客户端从同一台路由设备过来)。
设想一种基于Cookie的防御方法,因为Cookie里有记录SESSIONID这样的数据,如果针对SESSIONID进行过速请求防御,那么粒度就足够精细了。
下面是配置文件样例:
frontend http-in
# 创建stick-table,记录 cookie value -> 最近30秒内http请求次数
stick-table type string len 50 size 1m expire 10m store http_req_rate(30s)
# 将cookie(SESSION)作为key,存到stick-table中,并且计数
http-request track-sc0 req.cook(SESSION)
# 定义ACL,请求次数是否超过100
acl abuse sc0_http_req_rate gt 100
# 如果ACL为true,则拒绝http请求,响应429
http-request deny deny_status 429 if abuse
如果你在haproxy里启用了如下配置:
stats socket /var/run/haproxy/haproxy.sock mode 0600 level admin
那么可以通过Socket Command在Haproxy运行时查看stick-table中的数据:
echo 'show table http-in' | sudo socat /var/run/haproxy/haproxy.sock -
在网上找一些关于Haproxy对于过速防御的解决办法,大致上就找到两种:对于整体请求速度的控制对于某个IP的请求速度的控制这两种方式都不太好,第一种太过粗粒度,第二种容易误伤(如果多个客户端从同一台路由设备过来)。设想一种基于Cookie的防御方法,因为Cookie里有记录SESSIONID这样的数据,如果针对SESSIONI...
haproxy
能够从
请求
报文,响应报文,从客户端或者服务器端,从表,环境信息等中提取数据,提取这样的数据的动作我们称之为获取样本,进行检索时,这些样本可以用来实现各种目的,比如作为粘滞表的键,最常用的用途是,根据预定义的模式来进行匹配。访问控制列表(ACL)提供一个灵活方案进行内容切换,或者从
请求
,响应,任何环境状态中提取的数据基础之上做出决策,控制列表的原则很简单:
从数据流,表,环境中提取数据样本
对提取的样本可选的应用格式转换
对一个样本应用一个或多个模式匹配
当模式匹配样本时才执行动作
《nginx限制
请求
之一:(ngx_http_limit_conn_module)模块》
《nginx限制
请求
之二:(ngx_http_limit_req_module)模块》
《nginx限制
请求
之三:Nginx+Lua+Redis 对
请求
进行限制》
《nginx限制
请求
之四:目录进行IP限制》
《Redis实现访问控制频率》
为了避免出现服务的雪崩,我们需要对服务做容灾处理。
常规的服务容灾处理思路有:
syn flood攻击是通过发送大量SYN包到一台服务器,使其饱和或者至少造成其上行带宽饱和。
如果攻击规模很大,已经撑满了你的所有Internet带宽,那么唯一的
方法
就是
请求
你的ISP给与协助。
我们本地的
HAProxy
上可以做一点简单防护,聊胜于无。
修改/etc/sysctl.conf,加入如下内容:
haproxy
的stick-table,很有用,但很抽象,不好理解。之前生吞活剥翻译了一份
haproxy
官方blog的文档,自己都觉得非常不满意,因此删除了那篇blog文章,我又参考了几份老外的文档,仔细琢磨了一下stick-table,在此把我的理解写一下,希望能帮到有需要的人,转载请注明来自 http://blog.sina.com.cn/polygun2000 的博客.
第一部分: 理解ha...
转载自:http://www.360doc.com/content/17/0328/19/41512315_640903721.shtml
本文是我给公司内部写的一个简单的配置文档,文中只有配置步骤,省掉了原理说明部分。
polygun2000原创,转载请注明: 来源于polygun2000博客 http://blog.sina.com.cn/polygun2000
一、功能需求
1.四层...
HAProxy
源代码阅读指引
HAProxy
是一款性能优异的高可用proxy 软件,在抽空整理其源代码与文档之后,感叹作者编码水平之高,项目注释之清晰、文档之齐全,阅读代码过程中让人欲罢不能,往往回首已经2、3个小时过去了。特此记录学习路线在此,供其他朋友借鉴。
你值得在
HAProxy
的源码中徜徉200个小时!
你可以在
HAProxy
的源代码中学习到如何写一个优秀的高性能软件!
你可以...
现象2:查看
haproxy
日志会有部分显示端口耗尽
Jan 9 14:59:04 127.0.0.1
haproxy
[37]: Connect() failed for backend ha-proxy: no free ports.
Jan 9 14:59:04 127.0
在早期的计算机领域,限流技术(time limiting)被用作控制网络接口收发通信数据的速率。 可以用来优化性能,减少延迟和提高带宽等。 现在在互联网领域,也借鉴了这个概念, 用来为服务控制
请求
的速率, 如果双十一的限流, 12306的抢票等。 即使在细粒度的软件架构中,也有类似的概念。
两种常用算法
令牌桶(Token Bucket)和漏桶(leaky bucket)是 最常用的两种限流...
定义被限制的IP:aclwebhdr_beg(host)-iwww.51yunv.com
acldeny_ipsrc221.234.129.154匹配acl进行限制:
方法
一:http-requestdenyifwebdeny_ip
方法
二:blockifwebdeny_ip
解释:访问www.51yunv.com,并且源IP为221.234.129...
大部分程序员可能都有过“
爬虫
”的经历,使用python+scrapy可以很快的实现一个
爬虫
程序,爬取各种心仪的数据。但做为网站或数据提供方,则是极度讨厌这种“不劳而获”的行为的,公司辛辛苦苦积累的数据,几行代码就拿走了,因此会配置各种各样的防
爬虫
策略。因此现实中,上演着一场又一场的攻防大战。
防
爬虫
功能的本质就是区分是否为正常
请求
,常见的几种防
爬虫
手段有:
IP访问频率限制;
User-...
测试场景1:已经进入应用的
请求
,
请求
尚未响应完毕。将
haproxy
此应用的状态改成下线。
请求
是否能够正常响应到客户端。
测试场景2:已经进入应用的
请求
,将应用Kill -9 关闭掉,
haproxy
是否能够自动重试,将
请求
分发到其他应用。
1.在controller加入代码:
@RequestMapping("/testSlowResponse.do")
@ResponseBod...
keepalived和
haproxy
都是用于实现高可用性的工具,但是它们的功能和应用场景有所不同。
keepalived是一个基于VRRP协议的软件,主要用于实现服务器的故障转移和负载均衡。它可以监控服务器的状态,当主服务器出现故障时,自动将流量转移到备份服务器上,从而保证服务的可用性。同时,keepalived还支持负载均衡功能,可以将流量分发到多个服务器上,提高系统的性能和可扩展性。
haproxy
是一个高性能的负载均衡器,可以将流量分发到多个服务器上,从而提高系统的性能和可扩展性。它支持多种负载均衡算法,可以根据不同的应用场景进行配置。同时,
haproxy
还支持会话保持和健康检查等功能,可以保证服务的可用性和稳定性。
总的来说,keepalived主要用于实现服务器的故障转移和负载均衡,而
haproxy
则是一个专业的负载均衡器,可以提供更加丰富的负载均衡功能和性能优化。在实际应用中,可以根据具体的需求选择合适的工具来实现高可用性。