1. 程式人生 > >負載均衡軟體和Web應用伺服器詳解

負載均衡軟體和Web應用伺服器詳解

為什麼我們使用軟體負載均衡
海量併發下分散請求,減輕服務壓力,分散式部署,容災,解決單點問題,埠複用節約伺服器資源
硬體負載均衡成本較高,裝置維護較為複雜,穩定性高 nginx haproxy lvs(piranha)
php+fastcgi,modjk+tomcat 軟體負責均衡原理 負載均衡分為七層和四層負載均衡,是由通訊協議決定均衡模式,如SSL
443是TCP模式,http請求是應用層模式,然後按照一定的排程演算法把請求排程到相應的節點 在統一接入層進行請求排程均衡
按照伺服器效能排程請求,權值調整 業務層邏輯解耦,按照URL分發 IP層,按照網段分發 容災
自適應性排程(nginx+fasctcgi,modjk+apache) 注意事項: 服務是否長連線 是否會話黏貼
32位系統和64位系統網路中斷問題 安全相關 維護成本 節點生存檢測 演算法選擇 避免跨IDC 跨網段 跨樓層 負責均衡軟體特點
LVS特點: 抗負載能力強,使用IP負載均衡技術,只做分發,所以LVS本身並沒有多少流量產生;
穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived) 應用範圍比較廣,可以對所有應用做負載均衡;
不支援正則處理,不能做動靜分離。 常用四種演算法: rr:輪叫,輪流分配到後端伺服器; wrr:權重輪叫,根據後端伺服器負載情況來分配;
lc:最小連線,分配已建立連線最少的伺服器上; wlc:權重最小連線,根據後端伺服器處理能力來分配。 可以採用ipvsadm
–p(persistence)來保持session,預設是300/s 。 Nginx特點:
工作在7層,可以對做正則規則處理;(如:針對域名、目錄進行分流)
配置簡單,能ping通就能進行負載功能,可以通過埠檢測後端伺服器狀態,不支援url檢測;
抗高併發,採用epoll網路模型處理客戶請求; 支援HTTP、TCP和EMail,應用範圍比較少;
nginx主要是HTTP和反向代理伺服器,低系統資源消耗。 常用四種演算法: RR:(預設)輪詢,輪流分配到後端伺服器;
weight:根據後端伺服器效能分配;
ip_hash:每個請求按訪問ip的hash結果進行分配,併發小時合適,解決session問題;
fair:(擴充套件策略),預設不被編譯nginx核心,根據後端伺服器響應時間判斷負載情況,選擇最輕的進行處理。 Haproxy特點:
支援兩種代理模式:TCP(四層)和HTTP(七層),支援虛擬主機; 配置簡單,支援url檢測後端伺服器狀態;
僅做負載均衡軟體使用,在高併發情況下,處理速度高於nginx; TCP層多用於Mysql從(讀)伺服器負載均衡。 常用四種演算法:
roundrobin:輪詢,輪流分配到後端伺服器; static-rr:根據後端伺服器效能分配;
leastconn:最小連線者優先處理; source:根據請求源IP,與Nginx的IP_Hash類似。
為什麼要解決session會話
負載均衡環境下,每個使用者都有可能不固定的訪問後端伺服器,在有些應用情況下,是必須要求在一定時間內同一使用者訪問的所有請求都分配給後端同一臺伺服器去處理,例如:電子商務網站,使用者註冊頁面等,一重新整理頁面,就會分配到後端的另一臺伺服器上,那剛才的頁面上的資訊也都沒了,這種情況下,分配同一臺伺服器處理請求是至關重要的!
Web應用伺服器對比 主流應用伺服器: Apache後臺伺服器(主要處理php及一些功能請求 如:中文url)
Nginx前端伺服器(利用它佔用系統資源少得優勢來處理靜態頁面 大量請求) Lighttpd 圖片伺服器
總體來說,隨著nginx功能得完善將使他成為今後web server的主流。 三種伺服器對比:在這裡插入圖片描述