1.介紹
1.1 Nginx不僅是一個出色的web軟件,其七層代理和負載均衡也是相當出色。Nginx做前端代理,當用戶請求服務時,可以根據url進行判斷,然后分配到不同的后臺webserver上。
1.2 Nginx的負載均衡實現原理:首先在http模塊中配置使用upstream模塊定義后臺的web server的池子,名為proxy-web,在池子中我們可以添加多臺后臺webserver,其中狀態檢查、調度算法都是在池子中配置;然后在serverr模塊中定義虛擬主機,但是這個虛擬主機不指定自己的web目錄站點,它將使用location匹配url然后轉發到上面定義好的web池子中,最后根據調度策略再轉發到后臺web server上
2.負載均衡配置項的介紹
2.1 upstream調度算法介紹
(1)rr輪詢(默認)
按照請求順序分配到每個RS,和lvs中的rr算法一樣,如果RS宕機,會自動剔除,默認情況下只檢測80端口,如果RS報402、403、503、504錯誤,會直接返回給客戶端。
(2)weight(權重)
在rr的基礎上再加上權重(默認是rr+weight),權重輪詢和訪問成正比,值越大分配的越多,可以根據服務器的配置設置權重,可以解決服務器性能不均進行請求分配的問題
(3)ip_hash
解決動態網頁session共享問題
每個訪問請求按照IP地址的hash值進行分配,ip的hash值只要相同就會被分配到同一臺服務器上(lvs負載均衡的-p參數,keepalived配置里的persistence_timeout 50),該調度算法可以解決動態網頁session共享問題,但有時會導致請求分配不均,
提示:由于國內用的都是nat模式,所以hash不適合使用
ip_hash不能和其他的算法一塊使用,即不能使weight或backup
(4)fair(第三方)
按照后端服務器的響應時間來配置,響應時間短的優先分配,比上面的都更智能,此種算法可以按照頁面大小和加載時間長短智能的進行負載均衡,nginx本身不支持fair,需要下載nginx的upstrea_fair模塊
(5)url_hash(第三方)
主要應用于緩存服務器上
按照訪問的url來分配請求,讓相同的url定向到同一個服務器,后端服務器為緩存服務器的時候效果更顯著,在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法。
缺點:如果有一臺機器宕機了,那就苦了,consistent_hash可以解決這個問題
可以提高后端緩存服務器的效率,nginx本身不支持url_hash的,需要下載hash軟件
(6)least_conn
最少連接數,哪個連接少就分配到哪臺設備
(7)consistent_hash
一致性算法
2.2 upstream健康檢查配置介紹
upstream proxy_nginx { server 192.168.0.254 weight=1 max_fails=2 fail_timeout=10s ; server 192.168.0.253 weight=2 max_fails=2 fail_timeout=10s; server 192.168.0.252 backup; server 192.168.0.251 down; }
新聞熱點
疑難解答