配置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選中一臺伺服器所用的總時間);
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日誌