Haproxy-LoadBalance

  • Carter Ho
  • 4 Minutes
  • 2024年12月19日

在處理nginx LB HC到一半的時候發現,Nginx免費版本只有支援被動類型的健康檢查,這個必須在來源請求後才能知道後端服務是否正常並進而調整是否要把請求往後送;如果要做到主動檢查,則必須使用nginx plus付費版本才行,所以找了Haproxy這套來處理

Nginx跟Haproxy差異

支持一般LB跟ip_hash配置設定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
global
# 瞬間最大連線數
maxconn 60000
daemon

defaults
mode http
timeout connect 10s
# client跟Haproxy超過多久沒有互動會被斷線(default:無限制)
timeout client 300s
# client透過Haproxy跟後端超過多久沒有互動會被斷線(default:50s)
timeout server 300s

backend handler-9001
# 末端check加上HC機制
server api1 api1:9001 check
server api2 api2:9001 check

backend handler-9002
# IP_Hash配置
balance source
hash-type consistent
server api3 api3:9002 check
server api4 api4:9002 check

frontend front
# 監聽port
bind :9001
bind :9002
# 當來源以9001 port拜訪則導向handler-9001
use_backend handler-9001 if { dst_port 9001 }
use_backend handler-9002 if { dst_port 9002 }

ps: 要留意config最後必須是LF結尾

參考資料

範例程式