于2001年12年首次發(fā)布,比Nginx歷史悠久,18年來,HAProxy一直在演化和創(chuàng)新,2019年5月HAProxy2.0版本發(fā)布。
1、HAPorxy的優(yōu)點(diǎn)
1)HAProxy實(shí)現(xiàn)了一種事件驅(qū)動、單一進(jìn)程模型,此模型支持非常大的并發(fā)連接數(shù),在多核模式下可以利用CPU親和性,啟動多個(gè)HAProxy進(jìn)程增強(qiáng)并發(fā)。
2)支持四層、七層負(fù)載均衡,支持TCP、HTTP、HTTPS、HTTP2、websocket協(xié)議。
3)支持多種負(fù)載均衡算法。
4)健康檢查:支持TCP和HTTP兩種主動健康檢查模式。
5)HTTP請求重寫與重定向,會話保持。
6)HAProxy2.0支持云原始和容器化
a、7層網(wǎng)絡(luò)重試:可以從第7層的另一臺服務(wù)器重試失敗的HTTP請求
b、現(xiàn)在支持向Prometheus暴露metric
c、多語言可擴(kuò)展性:HAProxy1.7中引入了流處理卸載引擎(SPOE,StreamProcessingOffloadEngine)和流處理卸載協(xié)議(SPOP,StreamProcessingOffloadProtocol),目標(biāo)是使用任何編程語言創(chuàng)建構(gòu)建在HAProxy上所必需的擴(kuò)展。
d、Trafficshadowing,可以將請求從一個(gè)環(huán)境鏡像到另一個(gè)環(huán)境,這可以將一定比例的生產(chǎn)流量發(fā)送到測試或暫存環(huán)境,以在完全部署之前審核發(fā)布的情況。
e、完全支持gRPC,允許雙向數(shù)據(jù)流,檢測gRPC消息和記錄gRPC流量。
f、支持HAProxyKubernetesIngress控制器和功能強(qiáng)大的HAProxy數(shù)據(jù)平面API,它提供了一個(gè)用于配置和管理HAProxy的現(xiàn)代RESTAPI
2、HAProxy的安裝
1)yum安裝
yum-yinstallhaproxy
2)HAProxy是開源的,可以從其網(wǎng)站下載源碼,通過源碼編譯安裝
3、HAProxy的配置
HAProxy的配置比較簡單,通過80端口將url轉(zhuǎn)發(fā)后端相應(yīng)的server上
配置格式如下:
global
log127.0.0.1local2
chroot/var/lib/haproxy
pidfile/var/run/haproxy.pid
userhaproxy
grouphaproxy
daemon
#turnonstatsunixsocket
statssocket/var/lib/haproxy/stats
frontenmy_frontend
bind80
modehttp
aclmy_aclhdr(host)-imy_domain
use_backendmy_backendifacl
backendmy_backend
modehttp
balanceroundrobin
servermy_srv172.28.13.45:8080check
servermy_srv172.28.13.46:8080check
4、總結(jié)
HAProxy的開源免費(fèi),高性能等特點(diǎn),會越來越受互聯(lián)網(wǎng)公司的青睞。