global
daemon
maxconn 60000 #ulimit -n至少为60018最大连接并发数
#user /var/sbin/haproxy
#user haproxy #运行haproxy的用户
#chroot /usr/local/haproxy #安裝根目錄
pidfile /var/run/haproxy.pid
log 127.0.0.1 local2
defaults
mode http
log global
#option http-keep-alive #使用keepAlive连接
option forwardfor #如果后端服务器需要获得客户端的真实ip,需要配置的参数,记录客户端IP在X-Forwarded-For头域中
option http-server-close # 后端为动态应用程序建议使用http-server-close,后端为静态建议使用http-keep-alive
option httplog #开启httplog,HAProxy会记录更丰富的请求信息
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
#option httpchk GET /healthCheck.html #定义默认的健康检查策略
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康的服务器
balance roundrobin #设置默认负载均衡方式,轮询方式
#balance source 设置默认负载均衡方式,类似于nginx的ip_hash
#balance leastconn 设置默认负载均衡方式,请求转发到具有最少连接数目的后端服务器,在会话时间较长的场景中推荐使用此算法。例如数据库负载均衡等
timeout connect 2000ms #haproxy和服务端建立连接的最大时长,设置为1秒就足够了。局域网内建立连接一般都是瞬间的
timeout client 10000ms #和客户端保持空闲连接的超时时长,在高并发下可稍微短一点,可设置为10秒以尽快释放连接
timeout server 8000ms #和服务端保持空闲连接的超时时长,局域网内建立连接很快,所以尽量设置短一些,特别是并发时,如设置为1-3秒
timeout http-request 12000ms #从连接创建开始到从客户端读取完整HTTP请求的超时时间,用于避免类DoS攻击
timeout queue 5000ms #请求在队列中排隊的最大时长
########frontend前端配置##############
frontend http-in
bind *:80 #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了
#maxconn 30000 #定义此端口上的maxconn最大连接并发数
#url地址重寫,條件
#acl login_AuthCallBack path_beg -i /Account/AuthCallBack?
#acl login_AuthCallBack url_beg (/Account/AuthCallBack\?)
#acl login_AuthCallBack path_reg (/Account/AuthCallBack\?)
#acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
#acl url_ms1 path_beg -i /ms1/ #定义ACL,当uri以/ms1/开头时,ACL[url_ms1]为true
#acl url_ms2 path_beg -i /ms2/ #同上,url_ms2
#acl web hdr(host) -i www.abc.com #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则
#acl img hdr(host) -i img.abc.com #如果访问img.abc.com这个域名,就触发img规则。
#redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1 重定向
#redirect prefix http://192.168.21.126:8089 if login_AuthCallBack #測試可用1 重定向
#redirect location http://192.168.21.126:8089 if login_AuthCallBack
#redirect prefix http://192.168.21.201:8000 if login_AuthCallBack
#redirect location http://0.0.0.0:8000/ if login_AuthCallBack
#use_backend youxi_pool if youxi
#use_backend ms1 if url_ms1 #当[url_ms1]为true时,定向到后端服务群ms1中
#use_backend ms2 if url_ms2 #当[url_ms2]为true时,定向到后端服务群ms2中
#use_backend webserver if web #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域。
#use_backend imgserver if img #如果上面定义的img规则被触发,即访问img.abc.com,就将请求分发到imgserver这个作用域。
default_backend dynamic_servers #其他情况时,定向到后端服务群default_servers中
backend dynamic_servers #定义后端服务群default_servers
#balance roundrobin
#棄用這行設置,會導致後端服務器誰優先寫入了cookie的值,則以後每次請求都會定向到此後端服務器(不會輪詢了)
#cookie app_cook insert indirect nocache
#server webser1 192.168.21.126:8076 cookie webser1 maxconn 300 check
server webser1 192.168.21.126:8070 cookie webser1 maxconn 300 check
server webser2 192.168.21.126:8071 cookie webser2 maxconn 300 check
server webser3 192.168.21.126:8072 cookie webser3 maxconn 300 check
server webser4 192.168.21.126:8073 cookie webser4 maxconn 300 check
#backend ms1 #定义后端服务群ms1
# balance roundrobin #使用RR负载均衡算法
# cookie HA_STICKY_ms1 insert indirect nocache #会话保持策略,insert名为"HA_STICKY_ms1"的cookie
#
# #定义后端server[ms1.srv1],请求定向到该server时会在响应中写入cookie值[ms1.srv1]
# #针对此server的maxconn设置为300
# #应用默认健康检查策略,健康检查间隔和超时时间为2000ms,两次成功视为节点UP,三次失败视为节点DOWN
# server ms1.srv1 192.168.8.111:8080 cookie ms1.srv1 maxconn 300 check inter 2000ms rise 2 fall 3
#
# #同上,inter 2000ms rise 2 fall 3是默认值,可以省略
# server ms1.srv2 192.168.8.112:8080 cookie ms1.srv2 maxconn 300 check
#
#backend ms2 #定义后端服务群ms2
# balance roundrobin
# cookie HA_STICKY_ms2 insert indirect nocache
# server ms2.srv1 192.168.8.111:8081 cookie ms2.srv1 maxconn 300 check
# server ms2.srv2 192.168.8.112:8081 cookie ms2.srv2 maxconn 300 check
#backend imgserver
# mode http
# option httpchk /index.php
# balance roundrobin
# server img01 192.168.137.101:80 check inter 2000 fall 3
# server img02 192.168.137.102:80 check inter 2000 fall 3
########统计页面配置########
listen stats #定义监控页面
bind *:2000 #绑定端口1080
maxconn 10 #默认的最大连接数
stats refresh 30s #每30秒更新监控数据
stats uri /stats #访问监控页面的uri
#stats realm HAProxy\ Stats #监控页面的认证提示
#stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名
#stats auth Frank:Frank #设置监控页面的用户和密码:Frank
#stats hide-version #隐藏统计页面上HAProxy的版本信息
#登錄回調端口監聽
listen port8070_8071_8072_8073
bind *:8070
bind *:8071
bind *:8072
bind *:8073
#條件
acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
#重定向
redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1
#listen port8070
# bind *:8070
# #條件
# acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
# #重定向
# redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1
#
#listen port8071
# bind *:8071
# #條件
# acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
# #重定向
# redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1
#
#listen port8072
# bind *:8072
# #條件
# acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
# #重定向
# redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1
#
#listen port8073
# bind *:8073
# #條件
# acl login_AuthCallBack url_beg -i /Account/AuthCallBack? #測試可用1
# #重定向
# redirect prefix http://192.168.21.201:8000 if login_AuthCallBack #測試可用1