Marathon-LB实现服务限流

1.HAProxy配置

参考官网Haproxy的配置手册HAProxy Configuration Manual, 我们可以利用http_req_rate这个配置项实现限流,如下图所示:

Marathon-LB实现服务限流_第1张图片

2.Marathon-LB配置

Marathon-LB(MLB)是一个根据Marathon应用状态自动调整和配置HAProxy的工具。Marathon-LB既可以用作服务代理,也可以用作负载均衡和服务发现工具。
参考github MLB的Templates信息,我们可以利用HAPROXY_0_BACKEND_HTTP_OPTIONS 这个模板修改服务backend部分的信息,如下图所示:


Marathon-LB实现服务限流_第2张图片


3.Marathon-LB实现服务限流

利用marathon发布服务blackname,marathon.json中配置label如下:

"HAPROXY_0_BACKEND_HTTP_OPTIONS": " stick-table type ip  size 200k  expire 60s store conn_rate(30s) , bytes_out_rate(30s) \n tcp-request content  track-sc2 src  \n acl conn_rate_abuse  sc2_conn_rate gt 5  \n acl data_rate_abuse  sc2_bytes_out_rate  gt 20000000 \n http-request deny  if conn_rate_abuse \n http-request deny  if data_rate_abuse \n"

MLB会动态监控marathon的事件流,动态生成Haproxy的配置文件。经过上面的配置,在浏览器30S之内访问次数大于5 次会断开TCP连接。如下图所示:


Marathon-LB实现服务限流_第3张图片

你可能感兴趣的:(Marathon-LB实现服务限流)