zoukankan      html  css  js  c++  java
  • 关于haproxy的一些属性和acl 规则

    首先是haproxy.cfg文件的基本标注

    当然实际配件没有下面这个复杂,可以根据需要自行增减。

    global 
        log 127.0.0.1 local1 
        maxconn 65000             #最大连接数 
        chroot /usr/local/haproxy #安装目录 
        uid 99                    #用户haproxy 
        gid 99                    #组haproxy 
        daemon                    #守护进程运行 
        nbproc 1                  #进程数量 
        pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid 
     
    defaults 
       log     global 
       mode    http               #7层 http;4层tcp  
       option  httplog            #http 日志格式 
       option  httpclose          #主动关闭http通道 
       option  redispatch         #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 
       option  forwardfor 
       option  dontlognull 
       maxconn 50000              #最大连接数 
       contimeout      5000       #连接超时(毫秒) 
       clitimeout      50000      #客户端超时(毫秒) 
       srvtimeout      50000      #服务器超时(毫秒) 
     
       #errorfile 502 /usr/local/haproxy/html/maintain.html 
       #errorfile 503 /usr/local/haproxy/html/maintain.html 
       #errorfile 504 /usr/local/haproxy/html/maintain.html 
      
     
    frontend test.com             #定义前端服务器(haproxy) 
            bind *:80             #监听地址 
            acl web-client path_beg -i /vsphere-client 
            acl bbs hdr_reg(host) -i ^(bbs.test.com|shequ.test.com|forum) 
            acl monitor hdr_beg(host) -i monitor.test.com    #定义ACL名称,对应的请求的主机头是monitor.test.com  
            acl www hdr_beg(host) -i www.test.com 
            use_backend  cache.test.com if static    
            use_backend  monitor.test.com if bbs or monitor 
            use_backend  www.test.com if www 
            use_backend  vsphere-client if web-client 
     
            default_backend www.test.com  #指定默认的后端服务器 
     
     
    backend monitor.test.com              #定义后端服务器群(web server/apache/nginx/iis..) 
            mode http 
            option  forwardfor    #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP 
            balance leastconn     #负载均衡的方式,最小连接 
            cookie SERVERID       #插入serverid到cookie中,serverid后面可以定义 
            option  httpchk HEAD /check.html #用来做健康检查html文档 
            #option httpchk HEAD /index.php HTTP/1.1
    Host:monitor.test.com #HTTP && Host 
            server server1 10.0.100.70:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 
            #服务器定义: 
            #cookie server1表示serverid为server1; 
            #check inter 2000 是检测心跳频率(check 默认 ); 
            #rise 3 表示 3次正确认为服务器可用; 
            #fall 3 表示 3次失败认为服务器不可用; 
            #weight 表示权重。 
     
    backend www.test.com 
            mode http 
            option  forwardfor 
            balance roundrobin    #负载均衡的方式,轮询方式 
            cookie SERVERID   
            option  httpchk HEAD /check.html  
            server server1 10.0.100.71:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 
     
    backend vsphere-client 
            mode http 
            option  forwardfor header ORIG_CLIENT_IP 
            balance roundrobin 
            server server1 10.0.100.81:80 redir https://192.168.57.81:443 check inter 2000 rise 3 fall 3 weight 3 
     
    backend cache.test.com 
            option  forwardfor 
            #balance uri len 15 #url hash 
            balance roundrobin 
            server server1 10.0.100.73:80  check inter 2000 rise 3 fall 3 weight 3 
            server server2 10.0.100.75:80  check inter 2000 rise 3 fall 3 weight 3 
     
    listen admin_stat                   #status 
        bind 0.0.0.0:8080               #监听端口 
        mode http                       #http的7层模式 
        stats refresh 30s               #统计页面自动刷新时间 
        stats uri /haproxy_stats_url    #统计页面URL 
        stats realm Haproxy Statistics #统计页面密码框上提示文本 
        stats auth admin:admin          #统计页面用户名和密码设置 
        stats hide-version              #隐藏统计页面上HAProxy的版本信息 
        stats admin if TRUE             #手工启用/禁用,后端服务器 

    下面重点介绍一下ACL策略,这个匹配策略很重要。

    下面是一个根据域名匹配的写法

    acl a-server base_dom -i www.a.com
        use_backend a-server if a-server
        
    acl b-server base_dom -i www.b.com
        use_backend b-server if b-server 
    
        ##以下表示请求在以上路径都不符合时,使用该后台服务器处理
        default_backend root

    acl语法

    #acl 参数
    acl(关键字) 定义acl(名称)  方法(criterion)    -i (flags)  [匹配的路径或文件]
                             hdr_beg(host)
                             hdr_reg(host)
                             path_beg
                             path_end
    criterion
    #base 
    base : exact string match
    base_beg : prefix match
    base_dir : subdir match
    base_dom : domain match
    base_end : suffix match
    base_len : length match
    base_reg : regex match
    base_sub : substring match
    --------------------- 

    #
    path
    path : exact string match
    path_beg : prefix match
    path_dir : subdir match
    path_dom : domain match
    path_end : suffix match
    path_len : length match
    path_reg : regex match
    path_sub : substring match
    --------------------- 

    #
    url
    url : exact string match
    url_beg : prefix match
    url_dir : subdir match
    url_dom : domain match
    url_end : suffix match
    url_len : length match
    url_reg : regex match
    url_sub : substring match
    --------------------- 

    #
    hdr
    hdr([<name>[,<occ>]]) : exact string match
    hdr_beg([<name>[,<occ>]]) : prefix match
    hdr_dir([<name>[,<occ>]]) : subdir match
    hdr_dom([<name>[,<occ>]]) : domain match
    hdr_end([<name>[,<occ>]]) : suffix match
    hdr_len([<name>[,<occ>]]) : length match
    hdr_reg([<name>[,<occ>]]) : regex match
    hdr_sub([<name>[,<occ>]]) : substring match
    --------------------- 

    flags

    -i 不区分大小写 
    -m 使用指定的pattern匹配方法 
    -n 不做DNS解析 
    -u 强制每个ACL必须唯一ID,否则多个同名ACL或关系 
    – 强制flag结束. 当字符串和某个flag相似时使用

    参考:

    https://blog.csdn.net/nange_nice/article/details/78444793

    https://blog.51cto.com/dngood/886547



  • 相关阅读:
    ZOJ 3490 String Successor
    ZOJ 3465 The Hive
    ZOJ 3077 Move to Baggage Office
    ZOJ 2836 Number Puzzle
    POJ 2115 C Looooops
    ZOJ 3605 Find the Marble
    扩展欧几里德
    搭配飞行员(网络流)
    最小费用流
    最大流
  • 原文地址:https://www.cnblogs.com/zeussbook/p/10833779.html
Copyright © 2011-2022 走看看