特点:
1)原生的SSL支持,同时支持客户端和服务端的SSL
2)支持HTTP keep-alive
3) 支持HTTP1.1压缩,以节省带宽
4)支持优化的健康检查机制
5)支持7层负载均衡
与lvs区别?
1)Haproxy不需要后端服务都指向负载均衡的内网地址,这个与lvs-nat区别。
2)Haproxy不需要后端服务器与负载均衡处于同一个网段,这个与lvs-DR区别。
3)Haproxy不需要后端服务器配置IPIP隧道,这个与lvs-tun模式不同。
4)Haproxy仅仅要求后端服务能够在网上连通,可以跨网段。
1、 四层Haproxy的配置
cat /etc/haproxy/haproxy.cfg
global
maxconn 4000
daemon
defaults
mode http
listen test1
bind 0.0.0.0:80
mode tcp #注意,此处是tcp
balance leastconn
server s1 166.110.110.1:80
server s2 166.110.110.2:80
2、 七层Haproxy的配置
cat /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local3
maxconn 4096
uid 502
gid 502
daemon
nbproc 1
pidfile /home/haproxy/logs/haproxy.pid
defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
option redispatch
log 127.0.0.1 local3
retries 3
maxconn 32000
balance roundrobin
stats uri /haproxy-stats
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web_proxy *:80
appsession JSESSIONID len 52 timeout 3h
#插入cookie的方式
cookie SRV insert indirect nocache
#模式有http tcp health
mode http
stats enable
stats hide-version
#查看状态
stats uri /haproxy-stats
stats refresh 10s
monitor-uri /haproxy_test
#负载均衡方案:轮调
balance roundrobin
option httpclose
#后端可以获取客户端的真实ip
option forwardfor
#健康检查
option httpchk HEAD /login HTTP/1.0
#option httpchk GET /ping.jsp
#后端真实服务
server webA 192.168.1.226:8081 cookie A check
server webB 192.168.1.246:8888 cookie B check
3、 配置参数说明:
mode {tcp|http|health}:
tcp:该实例运行在纯TCP模式下
http:该实例运行在HTTP模式下,被调度到后端服务器之前,会被深度分析,可以实现7层过滤。
balance:[roundrobin,static-rr,leastconn,source]
roundrobin:轮询
static-rr:轮询,在线修改权重时不生效。
leastconn:最小连接数
source:基于客户端来源的哈希算法
4、 haproxy的会话保持功能
会话保持:保证同一个客户端的连接的请求被持续的调度到一台后端的服务器的过程。
业务场景:
1)购物车
2)访问登录后的内容
haproxy有2种基本方法:
1)基于源地址的负载均衡调度
balacne source
2)基于cookie的技术
cookie appsession insert indirect preserve
haproxy在第一次响应中插入到后端服务器给客户端的响应的cookie名字,如果haproxy发现用户的请求中发现该cookie,就可以找到该后端主机。
5、TCP四层与HTTP七层请求的区别
1)TCP四层一般是在客户端与Haproxy完成3次握手以后,然后haproxy发送一个syn报,要求与后端的服务器建立TCP连接。
2)HTTP七层一般是在客户端与Haproxy完成3次握手以后,客户端在发送了HTTP以后,才由haproxy于后端服务器建立TCP连接。