zoukankan      html  css  js  c++  java
  • Haproxy 安装与配置

    一 Haproxy简介

    一、HAProxy简介
    
    
    HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
    
    HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
    
    ————百度百科
    
    Big O: 评判数据结构复杂度
        O(1): 
        O(logN): 红黑树
        O(n)
        O(n^2)
        O(2^n)
    
    
    haproxy: 弹性二叉树
        数据结构:
    
    Remote Desktop Protocol
        Windows: 3389
    
    
    HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。
    
    HAProxy目前主要有两个版本:
    
    1.4——提供较好的弹性:衍生于1.2版本,并提供了额外的新特性,其中大多数是期待已久的。
      客户端侧的长连接(client-side keep-alive)
      TCP加速(TCP speedups)
      响应池(response buffering)
      RDP协议
      基于源的粘性(source-based stickiness)
      更好的统计数据接口(a much better stats interfaces)
      更详细的健康状态检测机制(more verbose health checks)
      基于流量的健康评估机制(traffic-based health)
      支持HTTP认证
      服务器管理命令行接口(server management from the CLI)
      基于ACL的持久性(ACL-based persistence)
      日志分析器
    
    1.3——内容交换和超强负载:衍生于1.2版本,并提供了额外的新特性。
      内容交换(content switching):基于任何请求标准挑选服务器池;
      ACL:编写内容交换规则;
      负载均衡算法(load-balancing algorithms):更多的算法支持;
      内容探测(content inspection):阻止非授权协议;
      透明代理(transparent proxy):在Linux系统上允许使用客户端IP直接连入服务器;
      内核TCP拼接(kernel TCP splicing):无copy方式在客户端和服务端之间转发数据以实现数G级别的数据速率;
      分层设计(layered design):分别实现套接字、TCP、HTTP处理以提供更好的健壮性、更快的处理机制及便捷的演进能力;
      快速、公平调度器(fast and fair scheduler):为某些任务指定优先级可实现理好的QoS;
      会话速率限制(session rate limiting):适用于托管环境;
    
    
    支持的平台及OS:
      x86、x86_64、Alpha、SPARC、MIPS及PARISC平台上的Linux 2.4;
      x86、x86_64、ARM (ixp425)及PPC64平台上的Linux2.6;
      UltraSPARC 2和3上的Sloaris 8/9;
      Opteron和UltraSPARC平台上的Solaris 10;
      x86平台上的FreeBSD 4.1-8;
      i386, amd64, macppc, alpha, sparc64和VAX平台上的OpenBSD 3.1-current;
    
    若要获得最高性能,需要在Linux 2.6或打了epoll补丁的Linux 2.4上运行haproxy 1.2.5以上的版本。haproxy 1.1l默认使用的polling系统为select(),其处理的文件数达数千个时性能便会急剧下降。1.2和1.3版本默认的为poll(),在有些操作系统上可会也会有性能方面的问题,但在Solaris上表现相当不错。HAProxy 1.3在Linux 2.6及打了epoll补丁的Linux 2.4上默认使用epoll,在FreeBSD上使用kqueue,这两种机制在任何负载上都能提供恒定的性能表现。
    
    在较新版本的Linux 2.6(>=2.6.27.19)上,HAProxy还能够使用splice()系统调用在接口间无复制地转发任何数据,这甚至可以达到10Gbps的性能。
    
    基于以上事实,在x86或x86_64平台上,要获取最好性能的负载均衡器,建议按顺序考虑以下方案。
      Linux 2.6.32及之后版本上运行HAProxy 1.4;
      打了epoll补丁的Linux 2.4上运行HAProxy 1.4;
      FreeBSD上运行HAProxy 1.4;
      Solaris 10上运行HAProxy 1.4;
    
    
    性能
    
    HAProxy借助于OS上几种常见的技术来实现性能的最大化。
      单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。
      O(1)事件检查器(event checker)允许其在高并发连接中对任何连接的任何事件实现即时探测。
      在任何可用的情况下,单缓冲(single buffering)机制能以不复制任何数据的方式完成读写操作,这会节约大量的CPU时钟周期及内存带宽;
      借助于Linux 2.6 (>= 2.6.27.19)上的splice()系统调用,HAProxy可以实现零复制转发(Zero-copy forwarding),在Linux 3.5及以上的OS中还可以实现零复制启动(zero-starting);
       内存分配器在固定大小的内存池中可实现即时内存分配,这能够显著减少创建一个会话的时长;
      树型存储:侧重于使用作者多年前开发的弹性二叉树,实现了以O(log(N))的低开销来保持计时器命令、保持运行队列命令及管理轮询及最少连接队列;
      优化的HTTP首部分析:优化的首部分析功能避免了在HTTP首部分析过程中重读任何内存区域;
      精心地降低了昂贵的系统调用,大部分工作都在用户空间完成,如时间读取、缓冲聚合及文件描述符的启用和禁用等;
    
    所有的这些细微之处的优化实现了在中等规模负载之上依然有着相当低的CPU负载,甚至于在非常高的负载场景中,5%的用户空间占用率和95%的系统空间占用率也是非常普遍的现象,这意味着HAProxy进程消耗比系统空间消耗低20倍以上。因此,对OS进行性能调优是非常重要的。即使用户空间的占用率提高一倍,其CPU占用率也仅为10%,这也解释了为何7层处理对性能影响有限这一现象。由此,在高端系统上HAProxy的7层性能可轻易超过硬件负载均衡设备。
    
    在生产环境中,在7层处理上使用HAProxy作为昂贵的高端硬件负载均衡设备故障故障时的紧急解决方案也时长可见。硬件负载均衡设备在“报文”级别处理请求,这在支持跨报文请求(request across multiple packets)有着较高的难度,并且它们不缓冲任何数据,因此有着较长的响应时间。对应地,软件负载均衡设备使用TCP缓冲,可建立极长的请求,且有着较大的响应时间。
    
    可以从三个因素来评估负载均衡器的性能:
      会话率
      会话并发能力
      数据率

    二. Haproxy 安装配置

    haproxy 配置主要分为两大部分,4个虚拟节点
    [global]:全局配置段,进程级别与进程管理及安全相关及性能调整相关的参数。
    [proxy]
      - defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen段
      - frontend:接受请求的前端虚拟节点,定义一些和客户端请求相关的参数,可以使用use_backend调用backend节点集群
      - backend:后端服务集群的配置,定义一些和后端真正提供服务的主机相关的一些参数
      - listen:frontend和backend的结合体,不能使用use_backend 调用backend节点集群

    1. 下载并编译安装
      shell>wget -c http://www.haproxy.org/download/1.6/src/haproxy-1.6.9.tar.gz -P /usr/local/src/
      shell>cd /usr/local/src
      shell>tar xfv haproxy-1.6.9.tar.gz
      
      shell>mkdir /usr/local/haproxy
      shell>cd haproxy-1.6.9
      shell>vim README
      #执行make的时候参数介绍:TARGET,ARCH,PREFIX
       TARGET:内核版本控制

        - linux22 for Linux 2.2
        - linux24 for Linux 2.4 and above (default)
        - linux24e for Linux 2.4 with support for a working epoll (> 0.21)
        - linux26 for Linux 2.6 and above
        - linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
        

        ARCH:cpu架构

        i386,i486,i586,i686,x86_64

         shell>yum install gcc openssl-devel pcre-devel zlib-devel -y # 安装依赖包

       shell>make TARGET=linux26 ARCH=x86_x64 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy   # 需要根据自己的操作系统环境自行修改
      shell>make install PREFIX=/usr/local/haproxy

    2. 提供配置文件
      默认源码安装haproxy不提供配置文件,但在其解压目录examples下会提供相关haproxy的实例配置,但有的版本的源码haproxy实例配置不是很全面,最笨的
      办法是使用yum安装rpm包格式的haproxy,然后复制其配置文件件作为参考,然后再将其卸载。此处提供一个简单框架的haproxy配置模板实例,详细的配置请参考官网
      http://cbonte.github.io/haproxy-dconv/1.6/configuration.html

      shell>cp -ra /usr/local/src/haproxy-1.6.9/examples /usr/local/haproxy ## 复制解压目录下的examples目录到安装目录下,以后可能会用到
      shell>mkdir /usr/local/haproxy/conf
      
      haproxy配置文件及简单参数说明:
      
    ########################[全局配置]##########################
    global
        # 日志输出配置,所有日志都记录在本机,通过local3输出
        log 127.0.0.1     local3 
    
        # 设定每个haproxy进程所接受的最大并发连接数,需要参考ulimit -n
        maxconn 4096
        
        # ulimit 文件描述符数量
        #ulimit-n 819200
    
        #chroot /usr/share/haproxy
    
        # 运行haproxy用户
        user haproxy
        
        # 运行haproxy用户组
        group haproxy
    
        # 以后台形式运行haproxy
        daemon
    
        # 设置进程数量
        nbproc 1
    
        # 设置haproxy进程的pid文件路径
        pidfile /usr/local/haproxy/var/haproxy.pid
        
        # haproxy 调试级别,建议只在开启单进程的时候调试
        #debug
        #quiet
    
    ####################[默认配置]################################
    defaults
        # 日志使用全局配置
        log    global
    
        # haproxy工作模式{tcp|http|health},tcp4层,http7层,health只返回OK
        mode    http
    
        # 日志类别,采用httplog
        option    httplog
        
        # 不记录请求报文包体数据为空的请求到日志,比如健康检查,减少写磁盘IO
        option    dontlognull
        
        # 三次连接失败就认为服务器不可达,也可以通过后面设置
        retries    3
        
        # 允许在发往服务器的请求首部中插入“X-Forwarded-For”首部,用于后端主机记录真实请求的客户端ip
        option    forwardfor  except 127.0.0.0/8
    
        # 每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能通过模拟实现
        option    httpclose
        
        # 当server id对应的服务器挂掉后,强制定向到其他健康的后端服务器,以后将不支持
        option    redispatch
    
        # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
        option    abortonclose
    
        # 默认的最大连接数
        maxconn    4096
    
        # 连接超时
        timeout connect    5000ms
        
        # 客户端请求超时
        timeout    client  30000ms
        
        # 服务端响应超时
        timeout server  30000ms
    
        # 心跳检测超时
        timeout check 2000
        
        # 持久连接超时时间
        timeout http-keep-alive  10s
        
        # http请求超时时间
        timeout http-request 10s
    
        # 默认队列超时时间
        timeout queue    1m
    
        # 设置默认负载均衡算法{roundrobin|source|leastconn...}
        balance    roundrobin
    
    ###########################[统计页面]############################
    listen admin_stats
        # 设置统计页面监听的套接字,listen虚拟节点为frontend和backend的专有通道
        bind 0.0.0.0:10800
        
        # 设置统计页面工作模式
        mode http
    
        # 启用状态页面功能
        stats enable
    
        # 采用http日志格式
        option    httplog
        
        # 是否开启错误日志并记录
        #log 127.0.0.1 local err
    
        # 设置访问统计页面的最大连接数
        maxconn    10
        
        # 设置统计页面的自动刷新时间
        stats refresh    30s
        
        # 访问统计页面的url
        stats    uri   /stats
    
        # 登录统计页面时的提示信息
        stats    realm  DongPing Haproxy
        
        # 设置统计页面的用户认证,可以设置多个用户名
        stats auth admin:admin
    
        # 隐藏统计页面上Haproxy的版本信息
        stats    hide-version
        
        # 设置haproxy管理页面可以执行一些特权动作,比如下线后端主机
        stats    admin   if  TRUE
    
    ##########################[设置haproxy 错误页面]##########################
    
    errorfile 403   /usr/local/haproxy/errorfiles/403.http
    errorfile 500   /usr/local/haproxy/errorfiles/500.http
    errorfile 502   /usr/local/haproxy/errorfiles/502.http
    errorfile 503   /usr/local/haproxy/errorfiles/503.http
    errorfile 504   /usr/local/haproxy/errorfiles/504.http
     
    #########################[Frontend 前端配置]##############################
    frontend http-proxy
        # 定义使用的套接字
        bind    *:80
    
        # 抓取请求报文首部字段为Host,Referer的值到haproxy日志中
        capture request header Host len 20
        capture request header Referer len 60
        capture request header User-agent len 60
        capture request header X-Forward-For len 60
        
        # 定义一个acl规则,匹配以/{static|images|javascript|stylesheets}开头的静态资源
        acl url_static    path_beg -i /static /images /javascript    /stylesheets
    
        # 定义一个acl规则,匹配以.{jpg|jpeg|gif|png|css|js}结尾的静态资源
        acl url_static    path_end -i .jpg .jpeg .gif .png .css .js
    
        # 如果被url_static这条acl规则匹配由后端集群static_servers进行分发 
        use_backend static_servers if url_static
    
        # 定义请求不匹配所有规则时默认转发到的后端主机
        default_backend    dynamic_servers
    
    ##########################[backend 后端配置]###########################################
    # 定义一组动态资源主机
    backend dynamic_servers
        # 定义haproxy工作模式
        mode    http
        
        # 定义负载均衡算法
        balance roundrobin
    
        # 健康检查
        option    httpchk    /check.jsp HTTP/1.0
    
        # 使用基于cookie粘性的负载均衡算法
        cookie    SERVERID insert indirect nocache
    
        # 定义连接后端主机的一些策略
        # server name ip:port  /表示后端一台主机,name必须给出
        # cookie name     /设置插入的cookie信息
        # check inter 2000   /使用check关键字表示对后端主机检测,inter 2000表示检测时间间隔为2s
        # weight /表示权重
        # rise  /表示检测两次正确,则认为服务器可用(服务从故障到正常)
        # fall /表示检测三次失败,则认为服务器不可用(服务器从正常到故障)
        # backup /表示备用主机
    
        server webapp_01 192.168.3.84:8080 cookie srv1 weight 2 check inter 2000 rise 2 fall 3
        server webapp_02 192.168.3.84:8081 cookie srv2 weight 2 check inter 2000 rise 2 fall 3
    
        # 定义一个sorryserver,当所有后端主机不可访问时,请求调度到此主机上
        server webapp_3 192.168.3.83:8080  backup check inter 2000 rise 2 fall 3 
    
    # 定义一组静态资源主机
    backend static_servers
        mode http
        option httpchk /check.html
        balance roundrobin
        server static_01 192.168.3.84:80 check inter 2000 fall 3
        server static_02 192.168.3.84:81 check inter 2000 fall 3
    
    #######################[tcp配置]#########################################
    listen  mysql
        bind 0.0.0.0:3306
        balance leastconn
        mode tcp
        log global
        option tcplog
        maxconn 4096
        #log 127.0.0.1 local0 debug
        server dbsrv_01 192.168.3.84:3306 weight 1 check port 3306 inter 2000 rise 1 fall 2 maxconn 300
        server dbsrv_02 192.168.3.84:3307 weight 1 check port 3307 inter 2000 rise 1 fall 2 maxconn 300
        

      说明:复制上面内容,并根据具体环境修改后保存到conf下,并命名为haproxy.cfg

      3.提供错误页面,如果不把错误页面放到配置文件定义的目录里,启动haproxy将报错

       shell>cd /usr/local/haproxy

       shell>cp -ra examples/errorfiles .

      4.提供运行haproxy进程的用户和组

       shell>userdd -r -s /sbin/nologin haproxy

      

    三.提供haproxy日志,默认haproxy没有提供自己的日志文件,通过配置可以把haproxy日志通过rsyslog输出到指定文件

      1.需要在haproxy配置文件添加日志输出,只需添加以下命令即可 vim conf/haproxy.cfg

      

      2.修改rsyslog相关配置,使其能接受haproxy产生的日志

      # 查看下rsyslog主配置

      图一

      

      图二

      

      图三

      

      从图一可以看到通过两个变量就可以开启udp日志接受

      从图二可以看到name.none的意思为不记录来自name的日志到指定文件

      从图三可以看到主配置文件允许在rsyslog.d 创建配置文件

      所以可以在/etc/rsyslog.d/ 创建haproxy自己的配置,方便以后的修改和管理

      shell>vim /etc/rsyslog.d/haproxy.conf

      1).复制图一中(/etc/rsyslog.conf)的三行到 /etc/rsyslog.d/haproxy.conf,修改如下

      

      注意:日志输出的文件路径很重要,一定要让运行haproxy进程的用户对此文件有写权限,否则日志不会生效

      2).修改 SYSLOGD_OPTIONS 参数的值

      shell>vim /etc/sysconfig/rsyslog

      #SYSLOGD_OPTIONS="-c 5"  # 原来的配置注销

      # -c 2 使用兼容模式,默认是-c 5

      # -r 开启远程日志
      # -m 0 标记时间戳。单位是分钟,为0时,表示禁用该功能
      SYSLOGD_OPTIONS="-c 2 -r -m 0"  # 修改后的配置

      3).修改rsyslog的主配置文件使其不记录haproxy的日志到/var/log/messages,如果不修改会记录两份一样的haproxy日志

      shell>vim /etc/rsyslog.conf

      

      只需在箭头处追加haproxy配置文件中定义的日志来源为local3.none(具体为local几需要根据haproxy配置的相对应)

      4).重启日志服务,使其重读配置文件

      shell>/etc/init.d/rsyslog restart

    四.启动haproxy

       

      1 #!/bin/bash
      2 #
      3 # haproxy
      4 #
      5 # chkconfig: 35 85 15
      6 # description: HAProxy is a free, very fast and reliable solution 
      7 # offering high availability, load balancing, and 
      8 # proxying for TCP and HTTP-based applications
      9 # processname: haproxy
     10 # config: /etc/haproxy.cfg
     11 # pidfile: /var/run/haproxy.pid
     12 
     13 # Source function library.
     14 . /etc/rc.d/init.d/functions
     15 
     16 # Source networking configuration.
     17 . /etc/sysconfig/network
     18 
     19 # Check that networking is up.
     20 [ "$NETWORKING" = "no" ] && exit 0
     21 
     22 config="/usr/local/haproxy/conf/haproxy.cfg"
     23 exec="/usr/local/haproxy/sbin/haproxy"
     24 prog=$(basename $exec)
     25 
     26 [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
     27 
     28 lockfile=/var/lock/subsys/haproxy
     29 
     30 check() {
     31     $exec -c -V -f $config
     32 }
     33 
     34 start() {
     35     $exec -c -q -f $config
     36     if [ $? -ne 0 ]; then
     37         echo "Errors in configuration file, check with $prog check."
     38         return 1
     39     fi
     40  
     41     echo -n $"Starting $prog: "
     42     # start it up here, usually something like "daemon $exec"
     43     daemon $exec -D -f $config -p /var/run/$prog.pid
     44     retval=$?
     45     echo
     46     [ $retval -eq 0 ] && touch $lockfile
     47     return $retval
     48 }
     49 
     50 stop() {
     51     echo -n $"Stopping $prog: "
     52     # stop it here, often "killproc $prog"
     53     killproc $prog 
     54     retval=$?
     55     echo
     56     [ $retval -eq 0 ] && rm -f $lockfile
     57     return $retval
     58 }
     59 
     60 restart() {
     61     $exec -c -q -f $config
     62     if [ $? -ne 0 ]; then
     63         echo "Errors in configuration file, check with $prog check."
     64         return 1
     65     fi
     66     stop
     67     start
     68 }
     69 
     70 reload() {
     71     $exec -c -q -f $config
     72     if [ $? -ne 0 ]; then
     73         echo "Errors in configuration file, check with $prog check."
     74         return 1
     75     fi
     76     echo -n $"Reloading $prog: "
     77     $exec -D -f $config -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)
     78     retval=$?
     79     echo
     80     return $retval
     81 }
     82 
     83 force_reload() {
     84     restart
     85 }
     86 
     87 fdr_status() {
     88     status $prog
     89 }
     90 
     91 case "$1" in
     92     start|stop|restart|reload)
     93         $1
     94         ;;
     95     force-reload)
     96         force_reload
     97         ;;
     98     checkconfig)
     99         check
    100         ;;
    101     status)
    102         fdr_status
    103         ;;
    104     condrestart|try-restart)
    105       [ ! -f $lockfile ] || restart
    106     ;;
    107     *)
    108         echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}"
    109         exit 2
    110 esac
    sysv haproxy启动脚本

       shell>chkconfig --level 35 haproxy on   ## 加入开机自启动

      shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy

      注意:假如没有配置后端主机,haproxy启动的时候会警告,但不影响haproxy使用

      说明 重启haproxy命令

      shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy -st `pidof haproxy`

    五.测试

      shell>curl -I localhost:10800

      shell>netstat -lntup | grep -i "haproxy"

      

    六.日志

      shell>tailf /var/log/haproxy.log

      1.使用capture request header 命令抓取后的haproxy输出日志

       

       说明:{}中的字符串即为capture后的结果,使用|分开,请求报文首部没有此抓取的首部则留空

      2.没有使用capture request head 命令的haproxy输出日志

       注释掉capture

        

        shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -c  #语法检测

       shell>/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `pidof haproxy`

        shell>curl -I localhost:80

       

    七.监控统计管理页面,haproxy的统计页可以实现强大的管理功能,最常用的就是软下线后端主机

      访问 http://192.168.3.83:10080/stats

    
    

     至此,haproxy简单的安装部署就先介绍到这里。后续具体使用请参考接下来的博客,小饿小困喝点香飘飘奶茶~~

      1 global 
      2         maxconn  10000  
      3         chroot   /usr/local/haproxy  
      4         uid      500
      5         gid      500  
      6         daemon  
      7         quiet  
      8         nbproc   1 
      9         pidfile  /usr/local/haproxy/haproxy.pid  
     10         stats socket /usr/local/haproxy/haproxy.sock mode 666 level admin
     11         stats timeout 2m
     12  ################################默认设置#####################################  
     13    
     14 defaults  
     15         log     global 
     16         log     127.0.0.1 local3 info  
     17         mode    http 
     18         option  httplog  
     19 #       option  dontlognull
     20         option  redispatch
     21         option  abortonclose
     22         stats   refresh 30 
     23         retries 3 
     24    
     25         balance roundrobin 
     26 #       balance source   
     27 #       balance leastconn
     28 
     29         maxconn 5000  
     30         contimeout 5000
     31         clitimeout 50000
     32         srvtimeout 50000 
     33         timeout check 2000 
     34         errorfile 403 /usr/local/haproxy/html/errorpage/403.html
     35         errorfile 401 /usr/local/haproxy/html/errorpage/403.html
     36 
     37         option httpclose
     38         option forceclose
     39         option http-server-close
     40         option forwardfor except 127.0.0.1 header Client-RealIP
     41 
     42  ###################################ACL及backend设置###################################  
     43    
     44 frontend http-in
     45 
     46         bind *:80
     47         ## 页面引用设定,同源网站可引用
     48         rspadd X-Frame-Options: SAMEORIGIN
     49         
     50         # 定义acl 访问控制
     51         acl manage_gydf hdr_beg(host) -i manage.gydf.com.cn
     52         acl api_gydf hdr_beg(host) -i api.gydf.com.cn
     53         acl image_gydf hdr_beg(host) -i image.gydf.com.cn
     54         acl zgc_gydf hdr_beg(host) -i zgc.gydf.com.cn
     55         acl msg_sbj hdr_beg(host) -i msg.shibaoj.com
     56         acl sso hdr_beg(host) -i sso.huaxinhengchang.com   
     57 #       acl hdapi hdr_beg(host) -i hdapi.huaxinhengchang.com   
     58         acl dpms hdr_beg(host) -i dpms.huaxinhengchang.com
     59         acl area hdr_beg(host) -i area.huaxinhengchang.com
     60         acl vp hdr_beg(host) -i vp.huaxinhengchang.com
     61         acl pifa hdr_beg(host) -i pifa.dongpi.com
     62         acl app hdr_beg(host) -i app.dongpi.com
     63         acl xpifa hdr_beg(host) -i xpifa.dongpi.com
     64         acl druid_Directory path_beg -i /druid/
     65         acl goodsSearch path_beg -i /search/demo/
     66         acl goodsSearch_html path_end -i goodsSearch.htm
     67         #acl dpms_ip src 121.69.31.48/30 121.69.26.88/30 211.103.246.200/29 211.103.246.202/32 192.168.95.0/24 118.26.132.192/27 111.203.253.224/28
     68         acl dpms_ip src 192.168.95.0/24 182.50.125.96/27 124.205.174.18/30 118.187.32.248/32
     69 #        acl hdapi_ip src 192.168.95.0/24 121.69.31.50/32
     70         #acl goodsSearch_ip src 121.69.31.48/30 192.168.95.0/24
     71         acl goodsSearch_ip src 182.50.125.96/27 192.168.95.0/24 124.205.174.18/30 118.187.32.248/32
     72         block if druid_Directory
     73         block if dpms !dpms_ip
     74 #        block if hdapi !hdapi_ip
     75         block if goodsSearch goodsSearch_html !goodsSearch_ip
     76 
     77         use_backend manage.gydf.com.cn if manage_gydf || image_gydf
     78         use_backend api.gydf.com.cn if api_gydf
     79         use_backend zgc.gydf.com.cn:80 if zgc_gydf
     80         use_backend msg.shibaoj.com:80 if msg_sbj
     81         use_backend sso.huaxinhengchang.com if sso        
     82         use_backend dpms.huaxinhengchang.com if dpms
     83         use_backend area.huaxinhengchang.com if area
     84         use_backend vp.huaxinhengchang.com if vp
     85 #        use_backend pifa.dongpi.com if pifa
     86 #        use_backend app.dongpi.com if app
     87 #        use_backend xpifa80.dongpi.com if xpifa
     88         default_backend sso.huaxinhengchang.com
     89 
     90 frontend https-in
     91     bind *:443 
     92     mode tcp 
     93     acl https_gydf dst 192.168.95.180/32
     94     acl https_sbj dst 192.168.95.184/32
     95 
     96     use_backend zgc.gydf.com.cn:443 if https_gydf
     97     use_backend msg.shibaoj.com:443 if https_sbj
     98     default_backend zgc.gydf.com.cn:443
     99 
    100  ##############################sso.dongpi.com域名负载###################################
    101 backend sso.huaxinhengchang.com
    102         mode    http
    103         balance leastconn                       
    104         cookie  SERVERID                       
    105         option  httpchk GET /test/cdo.jsp     
    106         option  httpclose 
    107         option  forwardfor
    108         server BUS-15 192.168.95.15:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1 
    109         server BUS-16 192.168.95.16:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1
    110 
    111  #########################dpms.dongpi.com域名负载###################################
    112 backend dpms.huaxinhengchang.com
    113         mode    http
    114         balance leastconn
    115         option  httpchk GET /test/cdo.jsp
    116         option  httpclose
    117         option  forwardfor
    118         server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1
    119         server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1
    120  
    121  #########################area.dongpi.com域名负载###################################
    122 backend area.huaxinhengchang.com
    123         mode    http
    124         balance leastconn
    125         option  httpchk GET /test/cdo.jsp
    126         option  httpclose
    127         option  forwardfor
    128         server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1
    129         server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1
    130 
    131  #########################vp.dongpi.com域名负载###################################
    132 backend vp.huaxinhengchang.com
    133         mode    http
    134         balance leastconn
    135         option  httpchk GET /test/cdo.jsp
    136         option  httpclose
    137         option  forwardfor
    138         server BUS-15 192.168.95.15:80 cookie 1 check inter 5000 fall 3 rise 2 weight 1
    139         server BUS-16 192.168.95.16:80 cookie 2 check inter 5000 fall 3 rise 2 weight 1
    140 
    141  #########################pifa.dongpi.com域名负载###################################
    142 #backend pifa.dongpi.com
    143 #        mode    http
    144 #        balance leastconn
    145 #        option  httpchk GET /errorpage/404.html
    146 #        option  httpclose
    147 #        option  forwardfor
    148 #        server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1
    149 #        server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1
    150 #
    151  #########################xpifa.dongpi.com 80域名负载###################################
    152 #backend xpifa80.dongpi.com
    153 #        mode    http
    154 #        balance leastconn
    155 #        option  httpchk GET /errorpage/404.html
    156 #        option  httpclose
    157 #        option  forwardfor
    158 #        server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1
    159 #        server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1
    160 
    161  #########################xpifa.dongpi.com 443域名负载###################################
    162 #backend xpifa.dongpi.com
    163 #       mode    tcp
    164 #        balance roundrobin  
    165 #       option ssl-hello-chk 
    166 #        server BUS-164 192.168.95.164:443
    167 #        server BUS-165 192.168.95.165:443
    168 
    169  #########################manage.gydf.com.cn 80域名负载###################################
    170 backend manage.gydf.com.cn
    171         mode    http
    172         balance leastconn
    173         option  httpchk GET /chkrs_alive.jsp
    174         option  httpclose
    175         option  forwardfor
    176         server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1
    177         server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1
    178 
    179  #########################api.gydf.com.cn 80域名负载###################################
    180 backend api.gydf.com.cn
    181         mode    http
    182         balance leastconn
    183         option  httpchk GET /chkrs_alive.jsp
    184         option  httpclose
    185         option  forwardfor
    186         server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1
    187         server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1
    188 
    189  #########################zgc.gydf.com.cn 80域名负载###################################
    190 backend zgc.gydf.com.cn:80
    191         mode    http
    192         balance leastconn
    193         option  httpchk GET /chkrs_alive.jsp
    194         option  httpclose
    195         option  forwardfor
    196         server SBJ-164 192.168.95.164:80 cookie SBJ-164 check inter 5000 fall 3 rise 2 weight 1
    197         server SBJ-165 192.168.95.165:80 cookie SBJ-165 check inter 5000 fall 3 rise 2 weight 1
    198 
    199  #########################zgc.gydf.com.cn 443域名负载###################################
    200 backend zgc.gydf.com.cn:443
    201         mode    tcp
    202         balance roundrobin  
    203         option ssl-hello-chk 
    204         stick-table type ip size 200k expire 30m
    205         stick on src
    206         server SBJ-164 192.168.95.164:443
    207         server SBJ-165 192.168.95.165:443
    208 
    209  #########################msg.shibaoj.com 80域名负载###################################
    210 backend msg.shibaoj.com:80
    211         mode    http
    212         balance source
    213         option  httpchk GET /chkrs_alive.jsp
    214         option  httpclose
    215         option  forwardfor
    216         server WS-80 192.168.95.80:80 cookie WS-80 check inter 5000 fall 3 rise 2 weight 1
    217         server WS-84 192.168.95.84:80 cookie WS-84 check inter 5000 fall 3 rise 2 weight 1
    218 
    219  #########################msg.shibaoj.com 443域名负载###################################
    220 backend msg.shibaoj.com:443
    221         mode    tcp
    222         balance leastconn  
    223         option ssl-hello-chk 
    224         stick-table type ip size 200k expire 30m
    225         stick on src
    226         server WS-80 192.168.95.80:443
    227         server WS-84 192.168.95.84:443
    228 
    229 
    230  #########################app.dongpi.com域名负载###################################
    231 #backend app.dongpi.com
    232 #        mode    http
    233 #        balance leastconn
    234 #        option  httpchk GET /errorpage/404.html
    235 #        option  httpclose
    236 #        option  forwardfor
    237 #        server BUS-164 192.168.95.164:80 cookie BUS-15 check inter 5000 fall 3 rise 2 weight 1
    238 #        server BUS-165 192.168.95.165:80 cookie BUS-16 check inter 5000 fall 3 rise 2 weight 1
    239 
    240  ################################监控页面的设置##########################################
    241 listen status 
    242         bind  *:8888                    #监听端口
    243         stats enable  
    244         stats uri /status               #监控页面的url
    245         stats auth admin:admin123       #监控页面的用户和密码admin,可以设置多个用户名
    246         stats realm Haproxy statistic  #监控页面的提示信息  
    247         stats admin if TRUE             #手工启用/禁用,后端服务器(haproxy-1.4.9以后版本)
    248         stats hide-version             #隐藏统计页面上的haproxy版本信息
    生产环境haproxy配置
  • 相关阅读:
    后台管理系统-使用AdminLTE搭建前端
    后台管理系统-创建项目
    C# 抽象类、抽象属性、抽象方法
    LOJ6519. 魔力环(莫比乌斯反演+生成函数)
    LOJ6502. 「雅礼集训 2018 Day4」Divide(构造+dp)
    LOJ6503. 「雅礼集训 2018 Day4」Magic(容斥原理+NTT)
    一些说明
    从DEM数据提取点数据对应的高程
    arcmap如何打开或关闭启动时的“getting started”界面
    python如何从路径中获取文件名
  • 原文地址:https://www.cnblogs.com/M18-BlankBox/p/6023617.html
Copyright © 2011-2022 走看看