高可用

haproxy详解(下)

2016-06-14  本文已影响1221人  richard520

通过HAProxy的ACL规则实现智能负载均衡

由于HAProxy可以工作在七层模型下, 因此,要实现HAProxy的强大功能,一定要使用强大灵活的ACL规则,通过ACL规则可以实现基于HAProxy的智能负载均衡系统。HAProxy通过ACL规则完成两种主要的功能,分别是:

1)通过设置的ACL规则检查客户端请求是否合法。如果符合ACL规则要求,那么就将放行,反正,如果不符合规则,则直接中断请求。

2)符合ACL规则要求的请求将被提交到后端的backend服务器集群,进而实现基于ACL规则的负载均衡。

HAProxy中的ACL规则经常使用在frontend段中,使用方法如下:

acl  自定义的acl名称  acl方法  -i  [匹配的路径或文件]

其中:

acl:是一个关键字,表示定义ACL规则的开始。后面需要跟上自定义的ACL名称 。

acl方法:这个字段用来定义实现ACL的方法,HAProxy定义了很多ACL方法,经常使用的方法有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end等。

-i:表示忽略大小写,后面需要跟上匹配的路径或文件或正则表达式。

与ACL规则一起使用的HAProxy参数还有use_backend,use_backend后面需要跟上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例,与use_backend对应的还有default_backend参数,它表示在没有满足ACL条件的时候默认使用哪个后端backend。

下面列举几个常见的ACL规则例子:

acl www_policy hdr_reg(host) -i ^(www.z.cn|z.cn)

acl bbs_policy hdr_dom(host) -i  bbs.z.cn

acl url_policy url_sub -i  buy_sid=

use_backend server_wwwifwww_policy

use_backend server_appifurl_policy

use_backend server_bbsifbbs_policy

default_backend server_cache

一个动静分离的例子

acl url_static path_beg -i/data/static/images/javascript/stylesheets#url开头为这些的静态内容

acl url_static path_end -i .jpg .gif .png .css .js .html .ico#url结尾带为这些的静态内容

use_backend staserifurl_static#如果静态内容符合url_static的条件,就调度到staser中的服务器

default_backend             dyser#其他默认调度到dyser中的服务器

上一篇下一篇

猜你喜欢

热点阅读