一、HAProxy简介及定位
HAProxy 是一款基于TCP和HTTP应用的具备高可用行且负载均衡的代理软件。HAProxy是完全免费的,借助HAProxy可以快速、可靠地提供基于TCP和HTTP应用的代理解决方案。HAProxy最主要的特点是性能优越,特别使用与负载超重的Web站点,这些站点通常需要会话保持或七层处理。HAProxy完全可以支持数以万计的并发连接。并且HAProxy的运行模式使其可以简单、安全的将信息整合进当前的架构中,同时保护后面的Web服务器不被暴露。
HAProxy具有反向代理服务器等功能,配置简单,拥有非常不错的服务器健康检查功能。档期代理的后段服务器出现故障时,HAProxy会自动将该服务器摘除,故障恢复后在自动将其加入。
二、HAProxy与Nginx比较
同样具有7层负载功能的Nginx和HaProxy有很多相似的方面,比如都有匹配规则等。如果单纯从效率上来讲,HAProxy比Nginx有更出色的负载均衡速度,并且在并发处理上也有于Nginx。
HAProxy不仅能够弥补Nginx的一些确定,比如Session的保持等工作,并且支持URL检测对于检测,后段服务器出现的问题有很好的帮助。
Nginx对Big Request Header 的支持不是很好,如果 client_header_buffer_size 设置的数值比较小,就会返回400 Bad Request 的错误页面。
三、HAProxy的安装
使用yum安装
yum install haproxy.x86_64 –y
安装完成之后就可以启动HAProxy服务
/etc/init.d/haproxy start
启动服务之后我们来修改一下配置文件
global # #local2 /var/log/haproxy.log #日志位置 # log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 #最大连接数 user haproxy #用户名 group haproxy #组 daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http #模式 log global #日志 option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 #重试次数 timeout http-request 10s #请求超时时间 timeout queue 1m timeout connect 10s #连接超时时间 timeout client 1m #客户端超时 timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #最大连接数量 stats uri /haproxy_status #监控页面地址 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main *:80 #监听端口 # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static # default_backend app acl is_zabbix path_beg /zabbix #如果请求是以/zabbix结尾则使用zabbix_app这个应用,实现反向代理 use_backend zabbix_app if is_zabbix default_backend tomcat_app #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- #backend static # balance roundrobin # server static 127.0.0.1:4331 check backend zabbix_app #配置后台应用 zabbix_app balance roundrobin server app1 127.0.0.1:8083 check backend tomcat_app #配置后台应用 tomcat_app balance roundrobin #负载均衡方式,使用随机 server app1 127.0.0.1:8081 check #服务器1 server app2 127.0.0.1:8082 check #服务器2 #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app balance roundrobin server app1 127.0.0.1:8081 check server app2 127.0.0.1:8082 check server app3 127.0.0.1:8083 check
重新加载HAProxy的配置文件
/etc/init.d/harpoxy reload
然后查看是否安装成功
在地址栏输入http://192.168.0.65/haproxy_status
页面如下
能够看到,我的zabbix_app是正常的,我的tomcat_app没有启动,所以是红色的
在这个页面能够清楚的看出HAProxy的访问量,总流量
如有不足,还请指正,谢谢~!