一 简介

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. drozer工具的安装与使用:之二使用篇

    如果英文好的同学可以直接查看官方文档   官方文档连接:https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide ...

  2. jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性. 在本文中我们将学习这些新特性,并用实际 ...

  3. centos6.5 nfs实时共享

    一.什么时NFS NFS(Network File System)——网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,NF ...

  4. notepad++64位添加plugin manager

    - 64位的notepad++,下载下来似乎没有plugin manager,如果真没有可以下载plugin manager. - plugin manager的下载地址:https://github ...

  5. tomcat jsp页面乱码解决

    浏览器接收服务器响应的中文参数: JSP页面中告诉浏览器使用什么编码: <%@ page language="java" contentType="text/htm ...

  6. sqlserver2008r2实现镜像

    拓扑图 环境 主服务器: 192.168.8.16 winserver2008b 镜像服务器 192.168.11.128 mssql1 见证服务器: 192.168.8.69 server2008c ...

  7. Mysql复习大全(转)

    基础知识: 1.数据库的连接 mysql -u -p -h -u 用户名 -p 密码 -h host主机 2.库级知识 显示数据库: show databases; 选择数据库: use dbname ...

  8. 关于报错stale element reference: element is not attached to the page document处理

    1.现象 在执行脚本时,有时候引用一些元素对象会抛出如下异常 org.openqa.selenium.StaleElementReferenceException: stale element ref ...

  9. WebMvcConfigurerAdapter已过时

    Spring Boot2.0的版本(创建的时候自动选择的这个版本),然后编译器告诉我WebMvcConfigurerAdapter已过时了 @Deprecated public abstract cl ...

  10. 关于Newtonsoft.Json,反序列化jason,内容有key的转换

    Newtonsoft.Json,反序列化,对于result里面的结果,可以使用Dictionary<string, List<类名>>,string是key值,value又是一 ...