HAproxy实现反向代理和负载均衡(2)

backup:设定为备用服务器,仅在负载均衡场景中的其它server均不可用于启用此server;
check:启动对此server执行健康状态检查,其可以借助于额外的其它参数完成更精细的设定,如:
  inter <delay>:设定健康状态检查的时间间隔,单位为毫秒,默认为2000;也可以使用fastinter和downinter来根据服务器端状态优化此时间延迟;
  rise <count>:设定健康状态检查中,某离线的server从离线状态转换至正常状态需要成功检查的次数;
  fall <count>:确认server从正常状态转换为不可用状态需要检查的次数;
cookie <value>:为指定server设定cookie值,此处指定的值将在请求入站时被检查,第一次为此值挑选的server将在后续的请求中被选中,其目的在于实现持久连接的功能;
maxconn <maxconn>:指定此服务器接受的最大并发连接数;如果发往此服务器的连接数目高于此处指定的值,其将被放置于请求队列,以等待其它连接被释放;
maxqueue <maxqueue>:设定请求队列的最大长度;
observe <mode>:通过观察服务器的通信状况来判定其健康状态,默认为禁用,其支持的类型有“layer4”和“layer7”,“layer7”仅能用于http代理场景;
redir <prefix>:启用重定向功能,将发往此服务器的GET和HEAD请求均以302状态码响应;需要注意的是,在prefix后面不能使用/,且不能使用相对地址,以免造成循环;例如:
  server srv1 172.16.100.6:80 redir check
weight <weight>:权重,默认为1,最大值为256,0表示不参与负载均衡;

定义健康检查方式可以使用option:

option httpchk
option httpchk <uri>
option httpchk <method> <uri> 
例如:
backend https_relay
    mode tcp
    option httpchk OPTIONS * HTTP/1.1\r\nHost:\
    server apache1 192.168.1.1:443 check port 80
使用案例:
server first  172.16.100.7:1080 cookie first  check inter 1000
server second 172.16.100.8:1080 cookie second check inter 1000

基于浏览器cookie实现session sticky:

要点:
(1) 每个server有自己惟一的cookie标识;
(2) 在backend中定义为用户请求调度完成后操纵其cookie
backend websrvs
    balance    roundrobin
    cookie SERVERID insert nocache indirect
    server  web1 192.168.20.7:80 check cookie websrv1
    server  web2 192.168.20.8:80 check cookie websrv2

测试:注意到cookie头部的websrv1关键字了么?

HAproxy实现反向代理和负载均衡

开启统计页面:

listen statistics
        bind *:9090
        stats enable
        stats hide-version
        #stats scope .
        stats uri /haproxyadmin?stats
        stats realm "HAPorxy\ Statistics"
        stats auth admin:mageedu
        stats admin if TRUE

HAproxy实现反向代理和负载均衡

向日志中记录额外信息:
    capture request header
    capture response header

当mode为http时,记录丰富的日志信息:
    option httplog----默认是开启的

错误页面重定向:
    errorfile: 使用haproxy主机本地文件进行响应;
    errorloc, errorloc302: 使用指定的url进行响应,响应状态码为302;不适用于GET以外的其它请求方法;
    errorloc303:返回303状态码;

添加请求或响应报文首部:
    reqadd
    rspadd

frontend  main
        bind *:80
        bind *:8080
    rspadd  Via:\ node1.lee.com
    default_backend            websrvs

出现了Via:

HAproxy实现反向代理和负载均衡

动静分离的示例:
frontend  main
    bind *:80
    bind *:8080
    acl url_static      path_beg      -i /static /images /javascript /stylesheets
    acl url_static      path_end      -i .jpg .gif .png .css .js
 
    use_backend static          if url_static
    default_backend            appsrvs
 
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
    backend static
      balance roundrobin
      server static1 192.168.20.7 check
      server static2 192.168.20.8 check
 
    backend appsrvs
      balance    roundrobin
      option forwardfor except 127.0.0.1 header X-Client
      option httpchk
      cookie SERVERID insert indirect nocache
      server  web1 192.168.20.7:80 check cookie web1
      server  web2 192.168.20.8:80 check cookie web2

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

Keepalived+HAProxy配置高可用负载均衡

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f48c630846993e9fdb02afb51db88e14.html