一 简介

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. D - 文理分科 (网络流->最小割)

    题目链接:https://cn.vjudge.net/contest/281959#problem/D 题目大意:中文题目 具体思路:我们需要求出最大的满意值,从另一方面想,我们可以求出总的满意值,然 ...

  2. C语言中malloc函数返回值是否需要类型强制转换问题

    1. 在C语言中, 如果调用的函数没有函数原型, 则其返回值将默认为 int 型. 考虑调用malloc函数时忘记了 #include <stdlib.h>的情况 此时malloc函数返回 ...

  3. Theano教程:Python的内存管理

    在写大型程序时候的一大挑战是如何保证最少的内存使用率.但是在Python中的内存管理是比较简单的.Python显示分配内存,使用引用计数系统管理对象,当指向某一个对象的引用数变为 0 的时候,该对象所 ...

  4. cmake介绍

    1. cmake介绍 1.1 cmake用途 CMake的用途是能通过一系列的源码和相关的配置来生成需要的编译器平台上的项目文件.譬如,如果一个项目需要在Windows上用VS编译,在Linux上用m ...

  5. Innodb ,MyISAM

    1. InnoDB不支持FULLTEXT类型的索引. 2. InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算 ...

  6. 解决maven编译Java中的使用了未经检查或不安全的操作

    eclipse编译器找到右侧黄色点击可以定位到对应代码块位置 解决方法:鼠标悬浮在上方点击add即可 @SuppressWarnings("unchecked");给出的解决方案 ...

  7. charles mock方法及问题

    一. 抓包后修改返回数据1.生成一个完成的请求返回信息1.charles抓取一个完整的请求,返回数据2.然后找到该请求,右键“save response”,将该完整请求返回文件保存至本地3.修改本地需 ...

  8. 5个php实例,细致说明传值与传引用的区别

    传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值 传引用 :真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值 说明: 传值 ...

  9. tomcat 输入学习

    Tomcat学习—Tomcat7 修改/webapps/ROOT发布路径(Linux和windows环境) https://blog.csdn.net/u010648555/article/detai ...

  10. cf1108e 线段树区间更新+扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...