摘要:另一種負(fù)載均衡策略是最少連接。當(dāng)使用最少連接負(fù)載均衡策略時,會把新請求分發(fā)給不太忙的服務(wù)器,從而避免分發(fā)過多的請求給忙碌的服務(wù)器造成過載。另外,還有很多的命令以及參數(shù)可以控制的負(fù)載均衡,例如。使用做負(fù)載均衡
Introduction
負(fù)載均衡一般被用來優(yōu)化資源利用率、最大化吞吐量、降低延遲和容錯配置。
Nginx 可以作為一種十分有效的 HTTP 負(fù)載均衡工具來使用,通過 nginx 的負(fù)載均衡分發(fā)流量到不同的應(yīng)用服務(wù)器,可以提升 web 應(yīng)用的性能、伸展性和可靠性。
Load balancing methodsNginx 支持下面幾種負(fù)載均衡策略:
round-robin(輪詢) — 根據(jù)輪詢分發(fā)請求到不同的服務(wù)器
least-connected(最少連接) — 將最新請求分發(fā)到活動連接最少的服務(wù)器
ip-hash(ip 哈希) — 用一個哈希函數(shù)來決定最新請求應(yīng)該被分發(fā)到哪一個服務(wù)器(基于客戶端的 ip).
舉個栗子
最簡單的 nginx 負(fù)載均衡配置看起來像這樣:
http { upstream myapp1 { server srv1.example.com; server srv2.example.com; server srv3.example.com; } server { listen 80; location / { proxy_pass http://myapp1; } } }
在上面的例子中,有三個一樣的應(yīng)用跑在 srv1-srv3 服務(wù)器上。當(dāng)我們沒有配置任何負(fù)載均衡策略的時候,nginx 會采用默認(rèn)的負(fù)載均衡策略——輪詢。所有的請求都被代理到 myapp1 服務(wù)器群,然后 nginx 根據(jù) HTTP 負(fù)載均衡分發(fā)請求。
Nginx 反向代理包括對 HTTP, HTTPS, FastCGI, uwsgi, SCGI, and memcached 的負(fù)載均衡策略。
如果想要配置 HTTPS 的負(fù)載均衡,只需要使用 “https” 協(xié)議就可以了。
當(dāng)設(shè)置 FastCGI, uwsgi, SCGI, or memcached 的負(fù)載均衡策略時,只需要使用分別使用 fastcgi_pass , uwsgi_pass , scgi_pass , and memcached_pass 指令就可以了。
Least connected load balancing另一種負(fù)載均衡策略是最少連接。當(dāng)一些連接完成所需時間更長時,使用最少連接策略可以更公平地控制均衡負(fù)載。
當(dāng)使用最少連接負(fù)載均衡策略時,nginx 會把新請求分發(fā)給不太忙的服務(wù)器,從而避免分發(fā)過多的請求給忙碌的服務(wù)器造成過載。
只要把 least_conn 指令配置成服務(wù)器群配置的一部分 nginx 就會采用最少連接負(fù)載均衡策略:
upstream myapp1 { least_conn; server srv1.example.com; server srv2.example.com; server srv3.example.com; }Session persistence
值得注意的是,輪詢和最少連接負(fù)載均衡可能會把來自同一個客戶端的請求分發(fā)到不同的服務(wù)器。它們不保證同一個客戶端的請求會分發(fā)到同樣的服務(wù)器上。
如果需要把同一個客戶端請求分發(fā)到同樣的服務(wù)器的,換句話說就是讓客戶端的會話“持續(xù)”而又“有粘性”地選擇連接到特定的服務(wù)器,那么可以使用 ip 哈希負(fù)載均衡策略。
ip 哈希負(fù)載均衡策略會使用客戶端的 ip 地址作為哈希的 key 來決定選擇服務(wù)器群中某臺服務(wù)器來處理客戶端的請求。這種方式確保來自同一臺客戶端的請求會分發(fā)到同一臺服務(wù)器上,除非這臺服務(wù)器處于不可用狀態(tài)。
只需要把 ip_hash 指令添加到服務(wù)器群(upstream)配置中就可以使用 ip 哈希負(fù)載均衡策略了:
upstream myapp1 { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com; }Weighted load balancing
除了上面三種負(fù)載均衡策略,我們還可以通過配置服務(wù)器權(quán)重來更深入地影響 nginx 負(fù)載均衡算法。
在上面幾個例子中,并沒有配置服務(wù)器權(quán)重,那么這意味著 nginx 在進(jìn)行負(fù)載均衡計算的時候會同等地看待配置的服務(wù)器。
假如有足夠的請求,并且請求的處理模式一致而且完成的速度足夠快,那么輪詢負(fù)載均衡策略意味著根據(jù)基本上一致的權(quán)重來分發(fā)請求到服務(wù)器上。
當(dāng)一個服務(wù)器被配置了權(quán)重的時候,權(quán)重值就會被當(dāng)做負(fù)載均衡算法決策因素的一部分。
upstream myapp1 { server srv1.example.com weight=3; server srv2.example.com; server srv3.example.com; }
當(dāng)采用上面的配置的時候,每5個請求將會如下方式分發(fā)到應(yīng)用服務(wù)器上:
三個請求會分發(fā)到 srv1,一個會分發(fā)到 srv2,另一個會分發(fā)到 srv3
權(quán)重式負(fù)載均衡策略可以在最近版本的 nginx 運用到最少連接和 ip hash 負(fù)載均衡策略中。
Health checksnginx 的反向代理實現(xiàn)包括了被動的 health checks 策略。當(dāng)某個特定的服務(wù)器由于錯誤而響應(yīng)失敗時,nginx 會把這臺服務(wù)器標(biāo)記為 failed,并且會在一短時間內(nèi)不把后續(xù)的請求分發(fā)到這臺服務(wù)器上。
max_fails 指令可以設(shè)置允許的在 fail_timeout 時間內(nèi)嘗試與服務(wù)器交互的最大連續(xù)失敗次數(shù)。max_fails 默認(rèn)為 1。當(dāng) max_fails 設(shè)置成 0 的時候,這臺服務(wù)器的 health checks 功能將會被禁用。fail_timeout 參數(shù)同時也定義了服務(wù)器被標(biāo)記為 failed 的時長。服務(wù)器出錯并且經(jīng)過 fail_timeout 的時間間隔之后, nginx 會開始優(yōu)雅地用活躍的客戶端請求來探測出錯的服務(wù)器。如果這些探測成功了,那么這臺服務(wù)器將會被標(biāo)記為正常。
強烈建議讀完 max_fails 跟 fail_timeout 的鏈接。
Further reading另外,還有很多的命令以及參數(shù)可以控制 nginx 的負(fù)載均衡,例如 proxy_next_upstream , backup , down , and keepalive 。同時,可以通過閱讀 reference documentation 來獲取更多信息。
使用 NGINX 做 HTTP 負(fù)載均衡 - Agentd
Reference linkshttp://nginx.org/en/docs/http...
http://nginx.org/en/docs/http...
http://nginx.org/en/docs/http...
http://nginx.org/en/docs/http...
http://blog.csdn.net/xiajun07...
http://blog.csdn.net/xiajun07...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40141.html
摘要:如果你有一個高流量的站點,提高性能的第一步是在你的前面放一個反向代理服務(wù)器。使用在一個已經(jīng)存在的服務(wù)器前做反向代理,作為的一個核心應(yīng)用,已經(jīng)被用于全世界成千上萬的站點中。 如果你的 node 服務(wù)器前面沒有 nginx, 那么你可能做錯了?!?Bryan Hughes Node.js 是使用 最流行的語言— JavaScript 構(gòu)建服務(wù)器端應(yīng)用的領(lǐng)先工具 。由于可以同時提供 web ...
摘要:架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案關(guān)于均衡負(fù)載架設(shè)服務(wù)器均衡負(fù)載方式有多種,是目前使用最廣泛的三種方案。服務(wù)器集群環(huán)境接下來講下想要搭的均衡負(fù)載環(huán)境。 http://homeway.me showImg(http://homeway.me/image/logo-nginx.png); 為jue.so架設(shè)一個服務(wù)器集群。 架設(shè)服務(wù)器均衡負(fù)載...
摘要:部署只是一種規(guī)則,控制器組件會將這一規(guī)則應(yīng)用于實際負(fù)載均衡器中。原因是功能僅允許將端口用于路由,負(fù)載均衡器和則可作為全局啟動。負(fù)載均衡的限制提供了功能豐富的負(fù)載均衡器支持詳細(xì)介紹在此。截至目前,我們暫時無法使用工具將負(fù)載均衡器配置從轉(zhuǎn)換為。 如果您的應(yīng)用程序是面向大量用戶、會吸引大量流量,那么一個不變的目標(biāo)一定是在高效滿足用戶需求的同時、不讓用戶感知到任何類似于服務(wù)器繁忙!的情況。這一...
閱讀 1003·2023-04-26 01:47
閱讀 1683·2021-11-18 13:19
閱讀 2050·2019-08-30 15:44
閱讀 665·2019-08-30 15:44
閱讀 2306·2019-08-30 15:44
閱讀 1242·2019-08-30 14:06
閱讀 1429·2019-08-30 12:59
閱讀 1907·2019-08-29 12:49