當生產環境裡有很大的流量產生時,通常需要用負載均衡技術來做優化,並確保容錯配置。nginx不光可以實現web server,還可以作為http負載均衡來分發流量給後端的應用程式伺服器,以此來提高效能。nginx的負載均衡功能依賴於ngx_http_upstream_module模組,所支援的**方式有proxy_pass,fastcgi_pass,memcached_pass。
輪詢(預設演算法)——每個請求會依次分配給後端不同的應用程式伺服器,不理會後端伺服器的實際壓力
加權輪詢——權重越大的伺服器,被分配到的次數就會越多,通常用於後端伺服器效能不一致的情況
ip hash——當同ip進行重複訪問時會被指定到上次訪問到的伺服器,可以解決動態**session共享問題
引數說明
server 192.168.0.100:80
負載均衡後端realserver的ip或者網域名稱,埠不寫的話預設為80。高併發場景用網域名稱,再通過dns進行負載均衡
weight=5
權重,預設為1,權重越大接收的請求越多
max_fails=2
最大嘗試的失敗次數,預設為1,0表示禁止失敗嘗試
fail_timeout=10s
失敗超時時間,預設是10秒,通常3s左右比較合適
backup
熱備配置,前段realserver出現問題後會自動上線backup伺服器
down
標誌伺服器不可用,這個引數通常配合ip_hash使用
}}在上面的例子中,當使用者訪問www.web3.xin站點時,nginx會負載平衡分配給後端的三個伺服器。
}}在上面配置中,每3個請求分配給192.168.1.100,然後第4個請求會分配給192.168.1.110,如此迴圈下去。
如果需要將客戶與後端一台伺服器「繫結」起來,可以使用ip-hash負載平衡機制。這樣可以確保來自相同客戶機的請求總是指向相同的伺服器除非該伺服器不可用。
nginx高可用的實現,利用backup標籤,可以實現高可用,當主服務掛掉後,backup伺服器會自動接管服務,當主服務恢復後,backup也會自動放棄服務
}}nginx的upstream模組相當於是建立乙個函式庫一樣,把後端的伺服器位址放在了乙個池子裡,而proxy模組則是從這個池子裡呼叫了這些伺服器。
proxy_set_header:讓後端伺服器能獲取到前端使用者真實ip,而不只是**伺服器的ip
proxy_set_header host $host;
當後端伺服器配置多個web站點時,該選項可以讓伺服器識別出具體要訪問的是哪個站點,而不會將第乙個站點作為預設站點傳遞給使用者
proxy_set_header x-forwarded-for $remote_addr;
如果後端伺服器需要獲取使用者的真實ip,需要該選項
client_body_buffer_size:客戶端請求主體緩衝區大小
proxy_connect_timeout:**伺服器和後端真實伺服器握手連線超時時間
proxy_send_timeout:後端伺服器回傳資料給nginx的時間,需要在設定的時間範圍內傳送完所有資料,否則nginx將斷開連線
proxy_read_timeout:**伺服器和後端伺服器連線成功後,等待後端伺服器響應時間
Nginx負載均衡與高可用的實現
ps 尊重原創 摘自 1 硬體方面 普通的乙個p4的伺服器每天最多能支援大約10萬左右的ip,如果訪問量超過10w那麼需要專用的伺服器才能解決,如果硬體不給力 軟體怎麼優化都是於事無補的。主要影響伺服器的速度 有 網路 硬碟讀寫速度 記憶體大小 cpu處理速度。2 軟體方面 第乙個要說的就是資料庫,...
負載均衡(SLB) 高可用
負載均衡 slb 高可用是從系統設計 產品配置等多個方面提供了可用性保障。此外,您可以根據業務需求,配合使用雲解析dns等產品實現跨地域容災。負載均衡例項採用集群部署,可實現會話同步,以消除伺服器單點故障,提公升冗餘,保證服務的穩定性。其中四層負載均衡通過lvs linux virtual serv...
高可用 負載均衡 方案
高可用 keepalived heartbeat 負載 lvs haproxy web應用的負載均衡 集群 高可用 ha 解決方案 構建高效能web站點 筆記 基礎架構篇 高可用可伸縮架構實用經驗談 amoeba是乙個以mysql為底層資料儲存,並對應用提供mysql協議介面的proxy。它集中地響...