一 简介

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. 7、完整版的strcpy函数

    char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != ...

  2. 记录一个PHP安装redis扩展时的问题

    安装过程:https://www.cnblogs.com/pengyunjing/p/8688320.html 由于我之前安装过该扩展,重新安装时没有执行make clean命令,所以安装好出现了下面 ...

  3. 你真的懂 ajax 吗?

    前言 总括: 本文讲解了ajax的历史,工作原理以及优缺点,对XMLHttpRequest对象进行了详细的讲解,并使用原生js实现了一个ajax对象以方便日常开始使用. damonare的ajax库: ...

  4. A - 低阶入门膜法 - K-th Number (主席树查询区间第k小)

    题目链接:https://cn.vjudge.net/contest/284294#problem/A 题目大意:主席树查询区间第k小. 具体思路:主席树入门. AC代码: #include<i ...

  5. ubuntu14.04 提示 卷 文件系统根目录 仅剩余xxx的硬盘空间

  6. 【逆向知识】GitHub:Awesome-Hacking(黑客技能列表-逆向)

    0 初衷 GitHub这一份黑客技能列表很不错,包含了多个方向的安全.但目前我关注只有逆向工程与恶意代码,所以其他的被暂时略过. 虽然很感谢作者的辛勤付出,但并不打算复制粘贴全套转载.逐条整理是为了从 ...

  7. 【Python学习笔记】调整matplotlib的图例legend的位置

    有时默认的图例位置不符合我们的需要,那么我们可以使用下面的代码对legend位置进行调整. plt.legend(loc='String or Number', bbox_to_anchor=(num ...

  8. vsftpd控制用户禁止访问上级目录 只能访问自己目录

    涉及文件: vsftpd.conf chroot_list_file=/etc/vsftpd.chroot_list 如果设置为 chroot_local_user=YES chroot_list_e ...

  9. High level GPU programming in C++

    https://github.com/prem30488/C2CUDATranslator http://www.training.prace-ri.eu/uploads/tx_pracetmo/GP ...

  10. C# 发送email邮件!

    利用C#邮件发送邮箱使用到两个类SmtpClient和MailMessage.可以把SmtpClient看做发送邮件信息的客户端,而把MailMessage看做需要发送的消息. 下面是我写的发送邮件的 ...