HAProxy开源软件

2021-10-28  本文已影响0人  暖小忧

概述

HAProxy是由 WillyTarreau开发的一款具备高可用性、负载均及基于 TCP和 HTTP的应用代理开源软件,基于HAProxy的负载均衡架构是最为常见的免费、快速且具备可靠性的集群负载均衡架构解决方案。

主要功能

基本配置

#全局配置
global
daemon
maxconn   4000
Pidfile  /var/run/HAproxy.pid
user     HAproxy
group    HAproxy
stats    socket /var/lib/HAproxy/stats
log      127.0.0.1  ocal0

#默认配置
defaults
mode    httplog     globaloption  httplogoption  dontlognullretries 3timeout  http-request 10stimeout  queue 1mtimeout  connect 10stimeout  client 1mmaxconn  10000
timeout  client 1m
timeout  server 1m
timeout  check 10s

#前端配置
数据库服务前端:frontend vip-db
bind 192.168.142.201:3306
timeout client 90m
default—backend db-vms-Galera
qpid消息服务前端:
froatend Vip-qpid
bind192·168、142·215:5672
timeout client120s
default—backend qpid-vms
dashboard服务前端:
frontendvip—horizon
bind192.168、142·211:80
timeout client180s
cookie SERVERID insert indirect nocache
default backend horizon-vms

#后端配置
backend app
balance roundrobin
server appl 192.168.1.1:80 check
server app2 192.168.1.2:80 check
server app3 192.168.1.3:80 check inter 2s rise 4 fall 3
server app4 192.168.1.4:80 backup

acl访问控制

访问控制列表(ACL,Access Control Lists)是应用在路由器(或三层交换机)接口上的指令列表,用来告诉路由器哪些数据可以接收,哪些数据是需要被拒绝并丢弃。
ACL的定义是基于协议的,它适用于所有的路由协议,如IP、IPX等。它在路由器上读取数据包头中的信息,如源地址、目的地址、使用的协议、源端口、目的端口等,并根据预先定义好的规则对包进行过滤,从而达到对网络访问的精确、灵活控制。
########ACL策略定义#########################
1、#如果请求的域名满足正则表达式返回true -i是忽略大小写
acl denali_policy hdr_reg(host) -i ^(www.inbank.com|image.inbank.com)$

2、#如果请求域名满足www.inbank.com 返回 true -i是忽略大小写
acl tm_policy hdr_dom(host) -i www.inbank.com

3、#在请求url中包含sip_apiname=,则此控制策略返回true,否则为false
acl invalid_req url_sub -i sip_apiname=#定义一个名为invalid_req的策略

4、#在请求url中存在timetask作为部分地址路径,则此控制策略返回true,否则返回false
acl timetask_req url_dir -i timetask

5、#当请求的header中Content-length等于0时返回 true
acl missing_cl hdr_cnt(Content-length) eq 0

#########acl策略匹配相应###################
1、#当请求中header中Content-length等于0 阻止请求返回403
block if missing_cl

2、#block表示阻止请求,返回403错误,当前表示如果不满足策略invalid_req,或者满足策略timetask_req,则阻止请求。
block if !invalid_req || timetask_req

3、#当满足denali_policy的策略时使用denali_server的backend
use_backend denali_server if denali_policy

4、#当满足tm_policy的策略时使用tm_server的backend
use_backend tm_server if tm_policy

5、#reqisetbe关键字定义,根据定义的关键字选择backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats

6、#以上都不满足的时候使用默认mms_server的backend
default_backend mms

个性化控制

#acl 格式
#acl  <aclname>   <criterion>  [flags] [operator] [<value>] ...
#criterion 包含:dst,dst_port,src,src_port, base : string, path : string, url: string,req.hdr([<name>[,<occ>]]) : string,status: integer 
acl acl_name src ip地址

[参考文章](https://www.cnblogs.com/chimeiwangliang/p/8042190.html
[acl参考](https://www.cnblogs.com/renyz/p/11420435.html

上一篇下一篇

猜你喜欢

热点阅读