lvs、nginx、haproxy中轉模式總結
lvs、nginx、haproxy是最常見的三種高可用性負載平衡軟體。由於lvs和haproxy在目前的公司的現網環境中並未用到,雖然之前簡單的了解和搭建過,現在也已經忘的差不多了,而及於nginx的負載平衡雖然公司在用,不過一配置文件都是ctrl+c、ctrl+v,對轉發的理論性的東西也都忘的差不多了。隱約腦中現在只有upstream、dr 、ip_hash這幾個字了。現對三者的轉發方式做下總結。
一、LVS轉發模式
LVS是章文嵩博士寫的一個工作於四層的高可能性軟體。不像後兩者支援七層轉發,不過也因為其簡單,所以其是最穩定的。其共有三種IP負載平衡技術:VS/NAT(Virtual Server via Network Address Translation)、VS/TUN(Virtual Server via IP Tunneling)和VS/DR(Direct Routing),三者之間的具體比較請見下表
二、nginx負載模式
nginx有五種負載演算法模式,分別是:輪詢、weight(權重)、ip_hash、fair、url_hash 。現逐一說明:
- 輪詢(預設): 每個請求依時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
- weight :指定輪詢幾率,weight和存取比率成正比,用於後端伺服器效能不均的情況。配置為:
- upstream bakend {
- server 192.168.0.192.1681 ;server 192.168 .
- 0.15 weight=10;}
- ip_hash:每個請求按訪問配置為: upstream bakend
{ - ip_hash;
- server. :88 ;
- server 192.168. 0.15:80 ;
- }fair請求 upstream backend {
- server server1 ;
-
- }
- url_hash:按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效。配置如: upstream backend {
- server squid1 :
- 3128 8;
- hash $request_uri
-
- hash_method crc32;
- }注:第五種模式下,需要注意關於methodfoded的hash演算法。 server後面常接的參數有以下幾個:
- down 表示單前的server暫時不參與負載 weight 預設為1.weight越大,負載的權重越大。
- max_fails :允許請求失敗的次數預設為1.超過最大次數時,返回proxy_next_upstream 模組定義的錯誤 fail_timeout:max_fails次失敗後,暫停的時間。
- backup: 其它所有的非backup機器down或忙碌的時候,請求backup機器。所以這台機器壓力會最輕。
- 三、haproxyhaproxy是三者之間負載演算法最多的,有八種,因此其應用場景也是最多,配置也是最靈活的,具體8種演算法為:
①roundrobin,表示簡單的輪詢,這個是負載平衡基本上都具備的;
②static-rr,表示根據權重,和nginx的weight演算法類似;
③leastconn,表示最少連接者先處理,有點類似於nginx的fair,不過fair是根據回應時間;
- ④source,表示根據請求來源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注;
- ⑤ri,表示根據請求的URI,類似於nginx的url_hash; ⑥rl_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name;
- ⑦hdr(name),表示根據HTTP請求頭來鎖定每一次
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。
四、總結
具體現網應用可以根據據體的實際情況選擇最好的負載方式。三者中,lvs穩定性最好,可配置性最少;nginx針對域名、目錄結構進行正則匹配是最強的,同時其對網絡依賴比較小,不過性能上和lvs和haproxy相比稍差一點點;haproxy支援虛擬主機,尤其在session保持方面做的最好,其有三種演算法可以實現session共享-—— ip辨識(source)、cookie辨識、session辨識三種,除此之外在對mysql做HA方案時也常會用到該軟體。
以上就介紹了lvs、nginx、haproxy中轉模式總結,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

服務器無權訪問所請求的資源,導致 nginx 403 錯誤。解決方法包括:檢查文件權限。檢查 .htaccess 配置。檢查 nginx 配置。配置 SELinux 權限。檢查防火牆規則。排除其他原因,如瀏覽器問題、服務器故障或其他可能的錯誤。

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

要關閉 Nginx 服務,請按以下步驟操作:確定安裝類型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服務:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自動啟動(可選):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

如何配置 Nginx 進行負載均衡?定義上游服務器池,指定服務器 IP 和端口。定義虛擬主機,監聽連接並轉發到上游池。指定位置,匹配請求並轉發到上游池。

問題的答案:304 Not Modified 錯誤表示瀏覽器已緩存客戶端請求的最新資源版本。解決方案:1. 清除瀏覽器緩存;2. 禁用瀏覽器緩存;3. 配置 Nginx 允許客戶端緩存;4. 檢查文件權限;5. 檢查文件哈希;6. 禁用 CDN 或反向代理緩存;7. 重啟 Nginx。
