如何使用HAProxy實現HiveServer2負載均衡?
HAProxy是一款提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理軟件,支持虛擬主機,它是免費、快速并且可靠的一種負載均衡解決方案,
于2001年12年首次發布,比Nginx歷史悠久,18年來,HAProxy一直在演化和創新,2019年5月HAProxy2.0版本發布。
1、HAPorxy的優點
1)HAProxy實現了一種事件驅動、單一進程模型,此模型支持非常大的并發連接數,在多核模式下可以利用CPU親和性,啟動多個HAProxy進程增強并發。
2)支持四層、七層負載均衡,支持TCP、HTTP、HTTPS、HTTP2、websocket協議。
3)支持多種負載均衡算法。
4)健康檢查:支持TCP和HTTP兩種主動健康檢查模式。
5)HTTP請求重寫與重定向,會話保持。
6)HAProxy2.0支持云原始和容器化
a、7層網絡重試:可以從第7層的另一臺服務器重試失敗的HTTP請求
b、現在支持向Prometheus暴露 metric
c、多語言可擴展性:HAProxy 1.7 中引入了流處理卸載引擎(SPOE,Stream Processing Offload Engine)和流處理卸載協議(SPOP,Stream Processing Offload Protocol),目標是使用任何編程語言創建構建在 HAProxy上所必需的擴展。
d、Traffic shadowing,可以將請求從一個環境鏡像到另一個環境,這可以將一定比例的生產流量發送到測試或暫存環境,以在完全部署之前審核發布的情況。新的 Traffic Shadowing 守護進程被編寫為流處理卸載代理(SPOA,Stream Processing Offload Agent),并利用 HAProxy 的 SPOE,允許使用任何編程語言擴展 HAProxy。
e、完全支持 gRPC,允許雙向數據流,檢測 gRPC 消息和記錄 gRPC 流量。
f、支持HAProxy Kubernetes Ingress 控制器和功能強大的 HAProxy 數據平面 API,它提供了一個用于配置和管理 HAProxy 的現代 REST API
2、HAProxy的安裝
1)yum安裝
yum -y install haproxy
2)HAProxy是開源的,可以從其網站下載源碼,通過源碼編譯安裝
3、HiveServer2服務
1)HiveServer2(HS2)是一種能使客戶端執行Hive查詢的服務。
2)HiveServer2可以支持多客戶端并發和身份認證,旨在為開放API客戶端(如JDBC和ODBC)提供更好的支持。
3)HiveServer2單進程運行,提供組合服務,包括基于Thrift的Hive服務(TCP或HTTP)和用于Web UI的Jetty Web服務器。
4)HiveServer2在TCP模式下使用TThreadPoolServer(來自Thrift),在HTTP模式下使用Jetty Server。
4、HAProxy配置支持HiveServer2服務
HAProxy的配置比較簡單,通過tcp的80端口將rpc請求轉發后端相應的HiveServer2 server上
配置格式如下:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
fronten my_frontend
bind 80
mode tcp
default_backend my_backend
backend my_backend
mode tcp
balance roundrobin
server hiveserver2_01 172.28.13.45:8080 check
server hiveserver2_02 172.28.13.46:8080 check
5、總結
HAProxy的開源免費,高性能等特點,會越來越受互聯網公司的青睞。