返回首页
当前位置: 主页 > 网络编程 > Php实例教程 >

HaProxy常见配置实现教程

时间:2017-12-24 22:17来源:知行网www.zhixing123.cn 编辑:麦田守望者

最近用到的,Haproxy做前端负载服务器,碰到的一些问题记录。

1、后端负载多个服务器后,登录页面出现的验证码错误问题

这种情况一般都是会话保持没有做好,加入以下配置:

cookie SRV insert indirect nocache使其变为:

 

listen HTTP-4481
bind 0.0.0.0:4481
mode http
option httplog
retries 3
option httpclose
option forwardfor
balance roundrobin
timeout connect 5000
timeout client 50000
timeout server 50000
cookie SRV insert indirect nocache
server WEB-1 192.168.1.1:4481 cookie WEB-1 check weight 1 maxconn 50000 check inter 5000
server WEB-2 192.168.1.2:4481 cookie WEB-2 check weight 1 maxconn 50000 check inter 5000

 

2、frontend、backend、Listen之间的区别及关系

frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend
backend : 后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器,也就是跟随者Frontend,两者结合使用。
通常Frontend和backend一并使用,如:

frontend http-4480
bind *:80
mode http
option httplog
default_backend HTTP-A-4480
Listen : (可以理解为Fronted和backend的组合体) 比如haproxy实例状态监控部分配置。
Listen是上面两者的结合体,是一种老的展现方式,现在依然可用,其配置如:

backend HTTP-A-4480
server WEB-1 192.168.198.1:80 cookie WEB-1 check weight 1 maxconn 8000 check inter 5000
server WEB-2 192.168.198.2:80 cookie WEB-2 check weight 1 maxconn 8000 check inter 5000

 

listen HTTP-4481
bind 0.0.0.0:4481
mode http
option httplog
retries 3
option httpclose
option forwardfor
balance roundrobin
cookie SRV insert indirect nocache
server WEB-1 192.168.1.1:4481 cookie WEB-1 check weight 1 maxconn 5000 check inter 5000
server WEB-2 192.168.1.2:4481 cookie WEB-2 check weight 1 maxconn 5000 check inter 5000

 

3、haproxy global部分配置说明

log global #引入global定义的日志格式
mode http #所处理的类别(7层代理http,4层代理tcp)
maxconn 50000 #最大连接数
option httplog #日志类别为http日志格式
option httpclose #每次请求完毕后主动关闭http通道
option dontlognull #不记录健康检查日志信息
option forwardfor #如果后端服务器需要获得客户端的真实ip,需要配置的参数,可以从http header 中获取客户端的IP
retries 3 #3次连接失败就认为服务器不可用,也可以通过后面设置
option redispatch #上述选项意思是指serverID 对应的服务器挂掉后,强制定向到其他健康的服务器, 当使用了 cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉了,但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常
stats refresh 30 #设置统计页面刷新时间间隔
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
balance roundrobin #设置默认负载均衡方式,轮询方式
#balance source #设置默认负载均衡方式,类似于nginx的ip_hash
#contimeout 5000 #设置连接超时时间
#clitimeout 50000 #设置客户端超时时间
#srvtimeout 50000 #设置服务器超时时间
timeout http-request 10s #默认http请求超时时间
timeout queue 1m #默认队列超时时间
timeout connect 10s #默认连接超时时间
timeout client 1m #默认客户端超时时间
timeout server 1m #默认服务器超时时间
timeout http-keep-alive 10s #默认持久连接超时时间
timeout check 10s #设置心跳检查超时时间
更详细的可参考:HAproxy指南之haproxy配置详解

 

4、真实服务器参数详解

server web2 192.168.2.1:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3
# web1/web2:自定义服务器别名
# 192.168.2.10:80:服务器IP:Port
# cookie 1/2:表示serverid
# weight: 服务器权重,数字越大分配到的请求数越高
# check: 接受定时健康检查
# inter 2000: 检查频率
# rise 2: 两次检测正确认为服务器可用
# fall 3: 三次失败认为服务器不可用

 

5、在ubuntu中为haproxy打开日志记录

vi  /etc/rsyslog.d/haproxy.conf

添加以下:

$ModLoad imudp
$UDPServerRun 514
local0.*     /var/log/haproxy.log

重启rsyslog和haproxy

service rsyslog restart
service haproxy restart
------分隔线----------------------------
标签(Tag):HaProxy HaProxy配置
------分隔线----------------------------
推荐内容
猜你感兴趣