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 等。
经常使用的方法:
hdr_beg(host) #精确匹配主机, 表示以什么开头的域名
hdr_reg(host) #正则匹配主机,表示以什么开头的域名
path_beg #匹配路径,表示以什么路径开头
path_end #匹配路径结尾,表示以什么路径结尾
url_sub : 表示请求url 中包含什么字符串,例如:acl file_req url_sub -i killall=,表示在请求url 中包含killall=,则此控制策略返回true
url_dir : 表示请求url 中存在哪些字符串作为部分地址路径,例如 acl dir_req url_dir -i allow,表示在请求url 中存在allow作为部分地址路径,则此控制策略返回true,否则返回false
-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_www if www_policy
use_backend server_app if url_policy
use_backend server_bbs if bbs_policy
default_backend server_cache
haproxy 配置文件详解 之 ACL 智能负载均衡的更多相关文章
- haproxy配置文件详解和ACL功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken
nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...
- 千万级高并发负载均衡软件haproxy配置文件详解
balance roundrobin #轮询方式 balance source #将用户IP经过hash计算后,使同一IP地址的所有请求都发送到同一固定的后 ...
- haproxy配置文件详解--转
原始出处:http://itnihao.blog.51cto.com/1741976/915537 #/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.c ...
- Haproxy配置文件详解
#/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid` ################ ...
- haproxy 配置文件详解 之 frontend
配置示例: frontend www bind *: mode http option httplog option forwardfor option httpclose log global #a ...
- haproxy 配置文件详解 之 综述
HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...
- haproxy 配置文件详解 之 backend
配置示例: backend htmpool mode http option redispatch option abortonclose balance static-rr cookie SESSI ...
- nginx详解反向代理、负载均衡、LNMP架构上线动态网站
简介 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.N ...
随机推荐
- ReentrantReadWriteLock 源码分析
ReentrantReadWriteLock 源码分析: 1:数据结构: 成员变量: private final ReentrantReadWriteLock.ReadLock readerLock ...
- 搭建MQTT服务器
MQTT协议简介 MQTT 是一个基于发布/订阅模式的消息传输协议.它具有轻量级.开放.简单,易于实现,通信带宽要求低等特点.这些特点使得它对机器与机器的通信(M2M)以及物联网应用(IoT)来说是很 ...
- 使用 Spring Boot 构建 RESTful API
1. 使用 Idea 创建 Spring Initializer 项目 在创建项目的对话框中添加 Web 和 Lombok,或者建立项目后在 pom.xml 中添加依赖: <dependency ...
- java报错 pom.xml第一行报"org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project...
https://www.cnblogs.com/appium/p/11168441.html 新建Maven项目时,每个pom文件第一行都报错. 一.问题分析 原因就是你的maven的配置文件不是最新 ...
- 关于在linux上部署scrapy的爬虫
1.在服务器中安装chrome sudo apt-get install libxss1 libappindicator1 libindicator7 wget https://dl.google.c ...
- 英语pyrophane火欧珀pyrophane单词
pyrophane火欧泊产量稀少,以至于大多数采到宝石的矿主不愿意将它进行切割,即便随形的切割技巧比刻面需要更多的经验也要将其加工成随形,因为这种琢型最能保重.但是与黑欧泊为了保证火彩只能切割成蛋面和 ...
- 【转载】Gradle学习 第二章:概述
转载地址:http://ask.android-studio.org/?/article/6 Here is a list of some of Gradle's features.<翻译> ...
- MySQL 中操作excel表格总结
最近在负责一个项目的落地工作,需要每天导出客户通讯录进行统计各地区注册用户数.使用用户数.未使用用户数.注册不符合规范的用户等等操作,刚开始用户数量比较少,直接在excel中筛选查询就行,但是随着用户 ...
- Centos系统 tomcat 中的应用与北京时间相差8小时
解决方法: 在 catalina.sh中的 JAVA_OPTS 加上 -Duser.timezone=GMT+08 启动时 startup.sh 会调用 catalina.sh.
- 分布式系统原理之cap理论
1.1 CAP理论的含义 Cap理论表示在分布式系统中一致性(C).可用性(A)和分区容错性(P)最多只能同时满足两个. 一致性:客户端更新数据成功后,在任意时刻,在系统任意对外提供服务的节点,读取 ...