HAProxy的工作模式:
mode http:只适用于web服务
mode tcp:适用于各种服务
mode health:仅做健康检查,很少使用
环境准备:
client1:eth0 -> 192.168.88.10
HAProxy:eth0 -> 192.168.88.5
web1:eth0 -> 192.168.88.100
web2:eth0 -> 192.168.88.200
配置haproxy
# 装包[root@haproxy1 ~]# yum install -y haproxy[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg # 配置文件中,global是全局配置;default是缺省配置,如果后续有和default相同的配置,default配置将会被覆盖。# 配置文件中,frontend描述haproxy怎么和用户交互;backend描述haproxy怎么和后台应用服务器交互。这两个选项,一般不单独使用,而是合并到一起,名为listen。# 将61行之后全部删除,写入以下内容 61 listen myweb 0.0.0.0:80 # 定义本机监听地址 62 balance roundrobin # 调度算法为轮询 # 对web服务器做健康检查,2秒检查一次,如果连续2次检查成功,认为服务器是健康的,如果连续5次检查失败,认为服务器坏了 63 server web1 192.168.88.100 check inter 2000 rise 2 fall 5 64 server web2 192.168.88.200 check inter 2000 rise 2 fall 5 65 66 listen stats 0.0.0.0:1080 # 定义监控地址 67 stats refresh 30s # 设置监控页面自动刷新时间为30秒 68 stats uri /stats # 定义监控地址是/stats 69 stats auth admin:admin # 监控页面的用户名和密码都是admin# 启服务[root@haproxy1 ~]# systemctl start haproxy.service # 使用firefox访问监控地址 http://192.168.88.5:1080/stats# 客户端访问测试[root@client1 ~]# for i in {1..6}; do curl http://192.168.88.5/; done192.168.99.100apache web server2192.168.99.100apache web server2192.168.99.100apache web server2
监控地址 http://192.168.88.5:1080/stats如下:
Quee:队列长度。Cur当前队列长度,Max最大队列长度,Limit限制长度
Session rate:会话率,每秒钟的会话数
Sessions:会话数
Bytes:字节数。In收到的字节数,Out发出的字节数
Denied:拒绝。Req请求,Resp响应
Errors:错误
Warning:警告
Status:状态
LastChk:上一次检查。L4OK,第四层tcp检查通过
Wght:权重
负载均衡调度器比较:https://blog.51cto.com/u_13538361/3268760
nginx:可以工作在第4层和第7层。可以根据url进行负载均衡。正则表达式支持的更广泛。
lvs:效率最高。工作在第4层。
haproxy:可以工作在第4层和第7层。可以根据url进行负载均衡。支持有限的正则表达式。