摘要:注意本篇文章為負載均衡的理論篇后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡配置負載均衡不難。常用的狀態有,表示當前的暫時不參與負載均衡。注,當負載調度算法為時,后端服務器在負載均衡調度中的狀態不能是和。
注意,本篇文章為負載均衡的理論篇,后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡,配置負載均衡不難。但實戰中要要注意幾個點,比如如何做到多服務器之間的數據共享(session,file等),多cache服務器如何做到命中率高等等問題
上一篇文章中我們通過反向代理了后端一臺服務器,但隨著網站訪問的人越來越多一臺服務器實在是頂不住,于是我們加了多臺服務器,那么多臺服務器又怎么配置代理呢?
upstream test.com{ # ip_hash; server 192.168.10.13:80; server 192.168.10.14:80 down; server 192.168.10.15:8009 max_fails=3 fail_timeout=20s; server 192.168.10.16:8080; } server { location / { proxy_pass http://test.com; } }
實際上負載均衡也是通過反向代理的方式,但是proxy_pass只能寫一個地址,所以我們把某些地址通過upstream作為一個集合來做反向代理就實現了負載均衡;
upstream 負載均衡模塊說明upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度算法來實現客戶端IP到后端服務器的負載均衡。在上面的設定中,通過upstream指令指定了一個負載均衡器的名稱test.com。這個名稱可以任意指定,在后面需要用到的地方直接調用即可。
支持的負載均衡算法Nginx的負載均衡模塊目前支持4種調度算法,下面進行分別介紹,其中后兩項屬于第三方調度算法。
輪詢(默認)。每個請求按時間順序逐一分配到不同的后端服務器,如果后端某臺服務器宕機,故障系統被自動剔除,使用戶訪問不受影響。Weight 指定輪詢權值,Weight值越大,分配到的訪問機率越高,主要用于后端每個服務器性能不均的情況下。
ip_hash。每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,有效解決了動態網頁存在的session共享問題。
fair。這是比上面兩個更加智能的負載均衡算法。此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配。Nginx本身是不支持fair的,如果需要使用這種調度算法,必須下載Nginx的upstream_fair模塊。
url_hash。此方法按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調度算法,必須安裝Nginx的hash軟件包
支持的狀態參數在HTTP Upstream模塊中,可以通過server指令指定后端服務器的IP地址和端口,同時還可以設定每個后端服務器在負載均衡調度中的狀態。常用的狀態有:
down,表示當前的server暫時不參與負載均衡。
backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。
max_fails,允許請求失敗的次數,默認為1。當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。
fail_timeout,在經歷了max_fails次失敗后,暫停服務的時間。max_fails可以和fail_timeout一起使用。
注,當負載調度算法為ip_hash時,后端服務器在負載均衡調度中的狀態不能是weight和backup。
配置負載均衡upstream webservers { server 192.168.18.201 weight=1; server 192.168.18.202 weight=1; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header X-Real-IP $remote_addr; } }
注,upstream是定義在server{ }之外的,不能定義在server{ }內部。定義好upstream之后,用proxy_pass引用一下即可。
如果定義在server內部就會報錯:
"upstream" directive is not allowed here in xxxxxx
重啟以后不斷刷新208就會發現,是201和202的內容交替出現,然后分別查看其日志,達到了負載均衡輪詢的效果;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40494.html
摘要:如果你有一個高流量的站點,提高性能的第一步是在你的前面放一個反向代理服務器。使用在一個已經存在的服務器前做反向代理,作為的一個核心應用,已經被用于全世界成千上萬的站點中。 如果你的 node 服務器前面沒有 nginx, 那么你可能做錯了。— Bryan Hughes Node.js 是使用 最流行的語言— JavaScript 構建服務器端應用的領先工具 。由于可以同時提供 web ...
摘要:現有的服務器和應用程序服務器相結合并在一個冒泡中運行,無法直接接觸網絡流量,由反向代理服務器提出填鴨式請求。賦予高可用性讓你的反向代理服務器鏡像到在線備份,同時擁有備用的應用程序服務器,讓你的站點高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優化 Python 應用性能。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現。 本文上一篇系: 利用...
摘要:現有的服務器和應用程序服務器相結合并在一個冒泡中運行,無法直接接觸網絡流量,由反向代理服務器提出填鴨式請求。賦予高可用性讓你的反向代理服務器鏡像到在線備份,同時擁有備用的應用程序服務器,讓你的站點高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優化 Python 應用性能。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現。 本文上一篇系: 利用...
閱讀 564·2023-04-25 16:00
閱讀 1597·2019-08-26 13:54
閱讀 2495·2019-08-26 13:47
閱讀 3401·2019-08-26 13:39
閱讀 1037·2019-08-26 13:37
閱讀 2734·2019-08-26 10:21
閱讀 3534·2019-08-23 18:19
閱讀 1601·2019-08-23 18:02