一、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的訪問量,總流量
如有不足,還請指正,謝謝~!