HAProxy介绍与配置
HAProxy的介绍
1 HAProxy简介
HAProxy(High Availability Proxy)是一个款免费的开放源代码软件,提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。使用HAProxy作为负载均衡的调度器适用于负载特别大的Web站点。
HAProxy的运行模式使得它可以简单安全地整合到用户当前的架构中,同时可以保护用户的Web服务器不被暴露到网络上。
2 衡量负载均衡器性能的因素
- 1、Session rate 会话率:每秒钟产生的会话数
- 2、Session concurrency 并发会话数:服务器处理会话的时间越长,并发会话数越多
- 3、Data rate 数据速率:以MB/s或Mbps衡量
3 HAProxy工作模式
- 1、mode http:只适用于web服务,客户端请求被深度分析后再发往服务器
- 2、mode tcp:适用于各种服务,4层调度,不检查第七层信息
- 3、mode health:仅做健康检查,很少使用
HAProxy配置
HAProxy的配置文件为/etc/haproxy/haproxy.cfg。
配置文件中,global是全局配置;default是缺省配置,如果后续有和default相同的配置,default配置将会被覆盖。
配置文件中,frontend描述haproxy如何与用户交互;backend描述haproxy如何与后台应用服务器交互,这两个选项一般不单独使用,而是合并到一起名为listen。
- default,为后续的其他部分设置缺省参数,缺省参数可以被后续部分重置
- listen,定义服务器集群
1、“global”配置段,用于设定全局配置参数
global
log 127.0.0.1 local2
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid # haproxy的pid存放路径
maxconn 4000 # 最大连接数,默认4000
user haproxy # 运行haproxy用户身份
group haproxy
daemon
2、proxy相关配置段“defaults”默认配置项
defaults
mode http # 默认的模式mode { tcp|http|health }
log global # 采用全局定义的日志
option dontlognull # 不记录健康检查的日志信息
option httpclose # 每次请求完毕后主动关闭http通道
option httplog # 日志类别http日志格式
option redispatch # serverid服务器挂掉后强制定向到其他健康服务器
timeout client 300000 # 客户端连接超时
timeout server 300000 # 服务器连接超时
maxconn 60000 # 最大连接数
retries 3
3、proxy相关配置段“listen”定义服务器集群配置项
listen myweb # 定义虚拟服务器
bind 0.0.0.0:80 # 监听在所有可用地址的80端口
balance roundrobin # 定义轮询调度算法
server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5
# 对web服务器做健康检查,2秒检查一次,如果连续2次检查成功,认为服务器是健康的,如果连续5次检查失败,认为服务器坏了
listen stats # 定义虚拟服务器
bind 0.0.0.0:1080 # 监听在所有可用地址的1080端口
stats refresh 30s # 设置监控页面自动刷新时间为30秒
stats uri /stats # 定义监控地址是/stats
stats auth admin:admin # 监控页面的用户名和密码都是admin
管理服务:
# 开启 haproxy 服务
[root@svr1 ~]# systemctl start haproxy
# 停止 haproxy 服务
[root@svr1 ~]# systemctl stop haproxy
# 设置开机自启 haproxy 服务
[root@svr1 ~]# systemctl status haproxy
案例:
使用3台虚拟机,一台调度器,两台web服务器
web服务器:需要安装httpd服务,配置网页并且启动服务
安装HAProxy
[root@lvs1 ~]# yum -y install haproxy
修改配置文件
[root@lvs1 ~]# vim /etc/haproxy/haproxy.cfg
# 结尾添加
listen webs *:80
balance roundrobin
server web1 192.168.2.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.2.200:80 check inter 2000 rise 2 fall 5
# 测试
[root@lvs1 ~]# curl 192.168.4.5
100 #web1
[root@lvs1 ~]# curl 192.168.4.5
200 #web2
[root@lvs1 ~]# curl 192.168.4.5
100 #web1
[root@lvs1 ~]# curl 192.168.4.5
200 #web2
[root@lvs1 ~]# curl 192.168.4.5
100 #web1