haproxy

Linux小菜鸟發表於2024-07-21

haproxy

image-20240630171139338

  • 也是一款實現負載均衡的排程器
  • 也適用於發在特別大的web站點
  • HAProxy的工作模式
    • mode http:只適用於 web服務
    • mode tcp:適用於各種服務
    • mode health:僅做健康檢查,很少使用

【1】、配置IP

# client1
nmcli connection modify eth0 ipv4.method manual ipv4.addresss 192.168.4.100 autoconnection yes
# proxy
nmcli connection modify eth0 ipv4.method manual ipv4.addresss 192.168.4.5 autoconnection yes
# web1
nmcli connection modify eth0 ipv4.method manual ipv4.addresss 192.168.4.110 autoconnection yes
# web2
nmcli connection modify eth0 ipv4.method manual ipv4.addresss 192.168.4.120 autoconnection yes

【2】、安裝配置haproxy

# proxy
yum install -y haproxy
vim /etc/haproxy/haproxy.cfg
global  # 全域性配置
	......
	
defaults # 變數
	......
# 將defaults後面的配置刪除,寫如下配置
listen myweb
    bind 0.0.0.0:80  # 誰可以訪問proxy
    balance roundrobin  # 負載均衡排程演算法
    server web1 192.168.4.110:80 check inter 2000 rise 2 fall 5
    # web伺服器的地址  check:進行健康檢查 inter:健康檢查間隔時間 rise:健康檢查兩次可以ping通則認為正常 fall:健康檢查失敗5次認為斷開
    server web1 192.168.4.120:80 check inter 2000 rise 2 fall 5

【3】、測試

[root@client1:192.168.4.100 ~]$curl http://192.168.4.5
Welcome  to web2 on 192.168.4.120
[root@client1:192.168.4.100 ~]$curl http://192.168.4.5
Welcome  to web1 on 192.168.4.110
# 檢查web1的日誌,可以看到都是proxy訪問web1的
192.168.4.5 - - [30/Jun/2024:17:50:53 +0800] "GET / HTTP/1.1" 200 34 "-" "curl/7.61.1" "192.168.4.100"
192.168.4.5 - - [30/Jun/2024:17:50:55 +0800] "GET / HTTP/1.1" 200 34 "-" "curl/7.61.1" "192.168.4.100"
192.168.4.5 - - [30/Jun/2024:17:50:56 +0800] "GET / HTTP/1.1" 200 34 "-" "curl/7.61.1" "192.168.4.100"

同時,haproxy為我們提供了視覺化的檢視網站,需要自己配置

# 在haproxy
listen stats # stats 自己設定
    bind 0.0.0.0:1080   # 網站監聽埠,自己設定
    stats refresh 30s  # 網站每隔30s重新整理
    stats uri /stats
    stats auth admin:admin  # 新增驗證 使用者名稱:密碼

image-20240630181101691

負載均衡排程器比較

LVS適用於需要高併發性和穩定性

Nginx適用於靜態檔案伺服器和反向代理等應用層負載均衡場景

HAProxy則具備較為豐富的功能和靈活性,適用於多種負載均衡場景

【1】、LVS(Linux Virtual Server)

優點

  • 高效能:LVS使用Linux核心中的IP負載均衡技術,能夠實現非常高的併發處理能力
  • 穩定性:LVS經過長時間的實踐應用,成熟穩定,被廣泛使用
  • 可用性:支援高可用性的配置,可以實現故障自動切換,提供無中斷服務
  • 靈活性:可根據需要採用多種負載均衡演算法

缺點

  • 配置複雜:相比於其他兩個技術,LVS的配置相對於複雜,需要更深入的瞭解和配置
  • 功能相對侷限:LVS主要是傳輸層負載均衡技術,無法想Nginx和HAProxy那樣對應用層協議進行處理

【2】、Nginx

優點

  • 高效能:Nginx採用了基於事件驅動的非同步非阻塞架構,能夠處理大量併發連線
  • 負載均衡:Nginx具備內建的負載均衡功能,可以根據配置進行請求 的轉發
  • 豐富的應用:Nginx支援反向代理、靜態檔案服務、快取、SSL等,在web伺服器領域有很廣泛的應用

缺點

  • 功能相對較少:相比於LVS和HAProxy,Nginx在負載均衡演算法和健康檢查等方面的功能相對較少
  • 限制於應用層協議:Nginx只能對HTTP和HTTPS等應用層協議進行處理,無法處理其他協議

【3】、HAProxy

優點

  • 靈活性:HAProxy支援豐富的負載均衡演算法和會話保持的方式,可以根據需求進行靈活的配置
  • 完整的功能:HAProxy支援高可用性配置、健康檢查、故障恢復、SSL等功能,在負載均衡領域應用廣泛
  • 高效能:HAProxy效能優良,能夠處理大量併發連線,並且支援非同步IOmox】

缺點

  • 記憶體佔用:相對於Nginx和LVS,HAProxy在處理大量連線時消耗的記憶體高
  • 高可用性:HAProxy需要藉助額外的工具來實現高可用性,比如keepalived

相關文章