1. 程式人生 > 其它 >配置HAProxy負載平衡叢集

配置HAProxy負載平衡叢集

技術標籤:運維

在這裡插入圖片描述
步驟一:配置後端Web伺服器
設定兩臺後端Web服務(如果已經配置完成,可用忽略此步驟)

# yum -y install httpd 
# systemctl start httpd 
# echo "192.168.2.100" > /var/www/html/index.html 
# yum -y install httpd 
# systemctl start httpd 
# echo "192.168.2.200" > /var/www/html/index.html 

步驟二:部署HAProxy伺服器
配置網路,安裝軟體

# echo 'net.ipv4.ip_forward = 1' >> sysctl.conf  //開啟路由轉發 
# sysctl -p 
# yum -y install haproxy 

修改配置檔案

# vim /etc/haproxy/haproxy.cfg 
global 
 log 127.0.0.1 local2   ###[err warning info debug] 
 chroot /usr/local/haproxy 
 pidfile /var/run/haproxy.pid ###haproxy的pid存放路徑 
 maxconn 4000     ###最大連線數,預設4000 
 user haproxy 
 group haproxy 
 daemon       ###建立1個程序進入deamon模式執行 
defaults 
 mode http     ###預設的模式mode { tcp|http|health } log global   ###採用全域性定義的日誌           tcp:四層排程  http:七層排程  health:只做健康檢查 
 option dontlognull       ###不記錄健康檢查的日誌資訊 
 option httpclose         ###每次請求完畢後主動關閉http通道 
 option httplog           ###日誌類別http日誌格式 
 option forwardfor        ###後端伺服器可以從Http Header中獲得客戶端ip 
 option redispatch        ###serverid伺服器掛掉後強制定向到其他健康伺服器 
 timeout connect 10000     #如果backend沒有指定,預設為10s 
 timeout client 300000      ###客戶端連線超時 
 timeout server 300000     ###伺服器連線超時 
 maxconn  60000  ###最大連線數 
 retries  3   ###3次連線失敗就認為服務不可用,也可以通過後面設定 
listen stats 
    bind 0.0.0.0:1080                 #監聽埠 
    stats refresh 30s                  #統計頁面自動重新整理時間 
    stats uri /stats                     #統計頁面url 
    stats realm Haproxy Manager      #統計頁面密碼框上提示文字 
    stats auth admin:admin            #統計頁面使用者名稱和密碼設定 
  #stats hide-version                   #隱藏統計頁面上HAProxy的版本資訊 
listen  websrv-rewrite 0.0.0.0:80       #叢集名 
   cookie  SERVERID rewrite           #在原有的cookie上加標記(根據需求設定) 
   balance roundrobin                    #輪詢演算法 
   server  web1 192.168.2.100:80 cookie app1inst1 check inter 2000 rise 2 fall 5 
   server  web2 192.168.2.200:80 cookie app1inst2 check inter 2000 rise 2 fall 5 

啟動伺服器並設定開機啟動

# systemctl start haproxy 
# systemctl enable haproxy 

步驟三:客戶端驗證
客戶端配置與HAProxy相同網路的IP地址,並使用火狐瀏覽器訪問http://192.168.4.5,測試排程器是否正常工作,客戶端訪問http://192.168.4.5:1080/stats測試狀態監控頁面是否正常

備註:
Queue佇列資料的資訊(當前佇列數量,最大值,佇列限制數量);
Session rate每秒會話率(當前值,最大值,限制數量);
Sessions總會話量(當前值,最大值,總量,Lbtot: total number of times a server was selected選中一臺伺服器所用的總時間);

Bytes(入站、出站流量);
Denied(拒絕請求、拒絕迴應);
Errors(錯誤請求、錯誤連線、錯誤迴應);
Warnings(重新嘗試警告retry、重新連線redispatches);
Server(狀態、最後檢查的時間(多久前執行的最後一次檢查)、權重、備份伺服器數量、down機伺服器數量、down機時長)

Nginx分析
工作在7層,可以針對http做分流策略;正則表示式比HAProxy強大;安裝、配置、測試簡單,通過日誌可以解決多數問題;併發量可以達到幾萬次;nginx還可以作為web伺服器使用
僅支援http、https、mail協議,應用面小;監控檢查僅通過埠,無法使用url檢查

LVS分析
負載能力強,工作在4層,對記憶體、cpu消耗低;配置性低,沒有太多可配置性,減少人為錯誤;應用面廣,幾乎可以為所有應用提供負載均衡
不支援正則表示式,不能實現動靜分離;如果網站架構龐大,LVS-DR配置比較繁瑣

HAProxy分析
支援session、cookie功能;可以通過url進行健康檢查;效率、負載均衡速度,高於nginx,低於LVS;支援TCP,可以對MySQL進行負載均衡;排程演算法豐富
正則弱於nginx;日誌依賴syslogd,不支援apache日誌