一 简介

HAProxy可以工作在第七层模型,可通过ACL规则实现基于HAProxy的智能负载均衡系统,HAProxy通过ACL规则完成以下两种主要功能:
  • 通过ACL规则检查客户端请求是否合法,如果符合ACL规则,则放行;不符合ACL规则,则中断请求;
  • 符合ACL规则的请求被提交到后端服务器集群,进而实现基于ACL规则的负载均衡。

二 使用方法

2.1 语法

通常ACL规则在frontend部分使用,语法如下:
acl 自定义acl名称 acl方法 -i [匹配的路径或文件]
选项含义:
acl:一个关键字,表示定义acl规则的开始,后面需要带上自定义的acl名称;
acl方法:定义实现acl的方法,常见的有:hdr_reg、hdr_dom、hdr_beg、url_sub、url_dir、path_beg、path_end等;
-i:表示忽略大小写,之后带上匹配的路径或正则表达式。
与ACL规则一起使用的HAProxy参数还有use_backend,use_backend带上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例。

2.2 举例

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_www if www_policy
use_backend server_app if url_policy
use_backend server_bbs if bbs_policy
default_backend server_cache
解释:定义了www_policy、bbs_policy、url_policy三个ACL规则。
  • 第一条:表示如果客户端以www.z.cn或z.cn开头的域名发送请求,则此规则返回true;
  • 第二条:表示如果客户端以bbs.z.cn开头的域名发送请求,则此规则返回true;
  • 第三条:表示如果客户端在请求的RUL中包含“buy_sid=”字符串,则此规则返回true。
  • 第4-6条规则定义了当www_policy、bbs_policy、url_policy三个ACL规则返回true时需要调度到哪个后端。
  • 第四条:当用户的请求满足www_policy时,HAProxy会将用户请求直接发往名为server_www的后端;
  • 以此类推,当用户的请求不满足任何一条ACL规则时,HAProxy会把请求发往由default_backend选项指定的server_cache后端。

2.3 举例2

acl url_static path_end .gif .png .jpg .css .js
acl host_www hdr_deg(host) -i www
acl host_static hdr_deg(host) -i img. video. download. ftp.
 
use_backend static if host_static || host_www url_static
use_backend www if host_www
default_backend server_cache
解释:定义了url_static、host_www、host_static三个ACL规则。
  • 第一条:表示如果客户端在请求的URL中以.gif或.png或.jpg或.css或.js结尾,则此规则返回true;
  • 第二条:表示如果客户端以www开头的域名发送请求,则此规则返回true;
  • 第三条:表示如果客户端在请求的URL中以img.或video.或download.或ftp.结尾,则此规则返回true;
  • 第4-6条规则定义了当www_policy、bbs_policy、url_policy三个ACL规则返回true时需要调度到哪个后端。
  • 第四条:如用户的请求同时满足host_static+url_static规则或满足host_www+url_static规则,HAProxy会把请求直接发往名为static的后端。
  • 以此类推,当用户的请求不满足任何一条ACL规则时,HAProxy会把请求发往由default_backend选项指定的server_cache后端。

003.HAProxy ACL规则的智能负载均衡的更多相关文章

  1. HAProxy(二):HAProxy的ACL规则实现智能负载均衡详解与示例

    一.HAProxy的ACL的功能 ACL(Access Control List)访问控制列表,HAProxy中的ACL的匹配条件和控制条件有许多种,功能很强大,可以通过源地址.源端口.目标地址.目标 ...

  2. haproxy 配置文件详解 之 ACL 智能负载均衡

    由于HAProxy 可以工作在七层模型下, 因此,要实现 HAProxy 的强大功能,一定要使用强大灵活的ACL 规则,通过ACL 规则可以实现基于HAProxy 的智能负载均衡系统. HAProxy ...

  3. HAProxy & Keepalived L4-L7 高可用负载均衡解决方案

    目录 文章目录 目录 HAProxy 负载均衡器 应用特性 性能优势 会话保持 健康检查 配置文件 负载均衡策略 ACL 规则 Web 监控平台 Keepalived 虚拟路由器 核心组件 VRRP ...

  4. haproxy+keepalived实现高可用负载均衡

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...

  5. haproxy+keepalived实现高可用负载均衡(转)

      软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. ...

  6. HAProxy实现动静分离和负载均衡

    由于电脑配置渣,带不动多台虚拟机,所以采用httpd虚拟主机的方式来实现 1 2 3 CentOS 6.7 httpd: 2.2.15 HAProxy: 1.5.4 主机规划 1 2 3 4 5 - ...

  7. haproxy做TCP层的负载均衡

    最新项目中发现,大量游戏玩家访问登录服务器时出现延迟,导致玩家无法登录,愿意可能是登录服务器性能达到极限. 所以目前想通过proxy的方式访问登录服务器集群,避免登录延迟. 1.下载haproxy最新 ...

  8. 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制

    前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...

  9. haproxy实现mysql从库负载均衡

    本文主要讲述通过haproxy实现mysql从库间的负载均衡,至于mysql主从的搭建,本文不再重述,可以参考我之前写的博客. 1.首先下载haproxy包 wget http://haproxy.1 ...

随机推荐

  1. C#实现office文档转换为PDF格式

    1.安装组件OfficeSaveAsPDFandXPS 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址   OfficeSave ...

  2. Managers经理/代理形式的数据共享

    代理方式实现进程间共享字典和列表形式的数据, 代码块: import os from multiprocessing import Process,Manager def f(d,l,normalLi ...

  3. History API:ScrollRestoration

    By Paul Lewis(设计和性能倡导者)   翻译:江天 使用history api管理url是非常棒的一件事,可以说这是一个好web app的极为重要的特点.但它有一个缺点,滚动位置虽然被存储 ...

  4. Linux查找文件、文件夹

    https://www.jianshu.com/p/f3a46e5c96ba 查找目录:find /(查找范围) -name '查找关键字' -type d 查找文件:find /(查找范围) -na ...

  5. Linux文件目录类指令

    ⒈pwd 显示当前工作目录的绝对路径 ⒉ls [Options] [目录或文件] 常用选项: -a:显示当前目录下所有的文件和目录,包括隐藏的. -l:以列表的方式显示信息. ⒊cd [目录的绝对路径 ...

  6. python 退出程序的方式

    python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)] 知乎说明 http://www.zhihu.com/question/21187 ...

  7. Python中【__all__】的用法

    Python中[__all__]的用法 转:http://python-china.org/t/725 用 __all__ 暴露接口 Python 可以在模块级别暴露接口: __all__ = [&q ...

  8. python根据服务名获取服务启动路径

    #coding=utf8 import _winreg as winreg class Win32Environment: """Utility class to get ...

  9. 解决重新安装sqlserver2008报错Reporting Services目录数据库文件存在的问题

    删除安装目录如: D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA 目录下的reporting.mdf和日 ...

  10. SIP 认证

    理解SIP的认证 1. 认证和加密    认证(Authorization)的作用在于表明自己是谁,即向别人证明自己是谁.而相关的概念是MD5,用于认证安全.注意MD5仅仅是个hash函数而已,并不是 ...