Nginx反向代理與負(fù)載均衡:節(jié)點(diǎn)服務(wù)器單/多虛擬機(jī)配置+實(shí)驗(yàn)環(huán)境搭建+原理解析

.說(shuō)明
常見(jiàn)的集群架構(gòu)及相關(guān)軟件营曼,可以參考下面的導(dǎo)圖:


互聯(lián)網(wǎng)企業(yè)常用的是負(fù)載均衡集群和高可用性集群昔案,負(fù)載均衡集群強(qiáng)調(diào)“分擔(dān)”尿贫,通過(guò)一定的調(diào)度算法 ,可以實(shí)現(xiàn)用多個(gè)節(jié)點(diǎn)服務(wù)器來(lái)分擔(dān)用戶的訪問(wèn)請(qǐng)求和數(shù)據(jù)流量踏揣;高可用性集群強(qiáng)調(diào)“高可用”庆亡,即一個(gè)節(jié)點(diǎn)失效了,它的任務(wù)可以立刻轉(zhuǎn)移到另一個(gè)備份的節(jié)點(diǎn)上(即一般通過(guò)設(shè)置主備來(lái)實(shí)現(xiàn))捞稿。顯然因?yàn)樨?fù)載均衡集群使用多個(gè)節(jié)點(diǎn)來(lái)分擔(dān)服務(wù)又谋,即使其中一個(gè)節(jié)點(diǎn)失效了,其它節(jié)點(diǎn)也可以繼續(xù)工作娱局,因此它也具有高可用性彰亥。
下面介紹的是Nginx負(fù)載均衡的配置,同時(shí)也給出了實(shí)驗(yàn)環(huán)境衰齐。


1.實(shí)驗(yàn)環(huán)境說(shuō)明
本次實(shí)驗(yàn)的測(cè)試環(huán)境使用的宿主機(jī)操作系統(tǒng)為Windows 7任斋,在Vmware虛擬機(jī)安裝CentOS 6.5(3臺(tái)),說(shuō)明如下:

主機(jī)類型 操作系統(tǒng) IP地址 作用
宿主機(jī) Windows 7 10.0.0.1/24(VMnet8的IP地址) 遠(yuǎn)程3臺(tái)虛擬機(jī)耻涛,進(jìn)行配置废酷,同時(shí)也作為后面測(cè)試使用的客戶端
虛擬機(jī)1: lb01 CentOS 6.5 10.0.0.7/24 負(fù)載均衡服務(wù)器lb01,將請(qǐng)求分擔(dān)到Web節(jié)點(diǎn)服務(wù)器中
虛擬機(jī)2: web01 CentOS 6.5 10.0.0.9/24 Web節(jié)點(diǎn)服務(wù)器web01
虛擬機(jī)3: web02 CentOS 6.5 10.0.0.10/24 Web節(jié)點(diǎn)服務(wù)器web02

而當(dāng)使用NAT的方式進(jìn)行上網(wǎng)時(shí)虛擬機(jī)锦积、宿主機(jī)之間的網(wǎng)絡(luò)連接關(guān)系可如下所示:


關(guān)于為什么網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是這樣的,這里不展開(kāi)說(shuō)明,可以參考博主的另一篇博文《在實(shí)踐中深入理解VMware虛擬機(jī)的上網(wǎng)模式NAT模式》哮幢,這篇文章深入地分析了VMware虛擬機(jī)使用NAT模式上網(wǎng)時(shí)的網(wǎng)絡(luò)結(jié)構(gòu)細(xì)節(jié)伦糯,相信看完這篇文章后剂癌,這里搭建Nginx的實(shí)驗(yàn)環(huán)境也就很容易理解了。
所以首先翰绊,應(yīng)該是自己先配置好網(wǎng)絡(luò)環(huán)境佩谷,讓宿主機(jī)跟我們的虛擬機(jī)可以通信,實(shí)際上监嗜,如果理解了VMware虛擬機(jī)上網(wǎng)方式的原理谐檀,同時(shí)對(duì)CentOS的網(wǎng)絡(luò)配置也很熟悉,這一步是可以很輕松完成的裁奇,這里就不給出過(guò)程了桐猬,這里所用的IP地址跟上面的圖示是一樣的。
這里刽肠,對(duì)于Nginx的負(fù)載均衡课幕,希望達(dá)到的效果邏輯如下:


當(dāng)用戶訪問(wèn)我們的Web Server時(shí),實(shí)際上請(qǐng)求是先到達(dá)Nginx負(fù)載均衡器五垮,這就是一個(gè)反向代理的過(guò)程了,然后Nginx負(fù)載均衡器再將請(qǐng)求按照一定的調(diào)度算法分發(fā)給相應(yīng)的節(jié)點(diǎn)服務(wù)器杜秸。
在整個(gè)實(shí)驗(yàn)環(huán)境中放仗,我們假定web01和web02提供bbs.xpleaf.org的網(wǎng)站內(nèi)容服務(wù),Nginx在web01和web02前面作為反向代理服務(wù)器與負(fù)載均衡服務(wù)器撬碟,當(dāng)用戶訪問(wèn)bbs.xpleaf.org時(shí)诞挨,Nginx負(fù)載均衡器會(huì)把請(qǐng)求分發(fā)到web01和web02節(jié)點(diǎn)服務(wù)器上,由節(jié)點(diǎn)服務(wù)器返回實(shí)際的內(nèi)容數(shù)據(jù)呢蛤。


2.配置與測(cè)試實(shí)戰(zhàn):節(jié)點(diǎn)服務(wù)器單虛擬機(jī)場(chǎng)景


這里使用的Nginx的版本為:1.6.3惶傻,關(guān)于Nginx的安裝與基本配置,這里不再做說(shuō)明其障,可以參考博主前面關(guān)于Nginx的博文银室,同樣也是給出了詳細(xì)的實(shí)驗(yàn)環(huán)境,可以去實(shí)踐一下励翼。

下面在每臺(tái)web服務(wù)器上蜈敢,我們只配置了一個(gè)虛擬機(jī),即bbs.xpleaf.org汽抚。

(1)web01配置與測(cè)試

  • web01作為節(jié)點(diǎn)服務(wù)器抓狭,配置它的虛擬機(jī)域名為bbs.xpleaf.org

[root@web01 conf]``# cat nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application``/octet-stream``;

sendfile on;

keepalive_timeout 65;

log_format main ``'$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"'``;

server {

listen 80;

server_name bbs.xpleaf.org;

location / {

root html``/bbs``;

index index.html index.htm;

}

access_log logs``/access_bbs``.log main;

}

}

|

  • 添加相應(yīng)的站點(diǎn)目錄和內(nèi)容

[root@web01 conf]``# cd ../html/bbs/

[root@web01 bbs]``# echo "bbs.xpleaf.org node1 10.0.0.9">index.html

[root@web01 bbs]``# cat index.html

bbs.xpleaf.org node1 10.0.0.9

|

  • 配置hosts解析

[root@web01 bbs]``# echo "127.0.0.1 bbs.xpleaf.org">>/etc/hosts

[root@web01 bbs]``# tail -1 /etc/hosts

127.0.0.1 bbs.xpleaf.org

|

  • 檢查配置文件與啟動(dòng)

[root@web01 bbs]``# /application/nginx/sbin/nginx -t

nginx: the configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf syntax is ok

nginx: configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf ``test is successful

[root@web01 bbs]``# /application/nginx/sbin/nginx -s reload

|

  • 本機(jī)上進(jìn)行測(cè)試

[root@web01 bbs]``# curl bbs.xpleaf.org

bbs.xpleaf.org node1 10.0.0.9

|

(2)web02配置與測(cè)試

  • web02作為節(jié)點(diǎn)服務(wù)器,配置它的虛擬機(jī)域名為bbs.xpleaf.org

[root@web02 conf]``# cat nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application``/octet-stream``;

sendfile on;

keepalive_timeout 65;

log_format main ``'$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"'``;

server {

listen 80;

server_name bbs.xpleaf.org;

location / {

root html``/bbs``;

index index.html index.htm;

}

access_log logs``/access_bbs``.log main;

}

}

|

  • 添加相應(yīng)的站點(diǎn)目錄和內(nèi)容

[root@web01 conf]``# cd ../html/bbs/

[root@web01 bbs]``# echo "bbs.xpleaf.org node2 10.0.0.10">index.html

[root@web01 bbs]``# cat index.html

bbs.xpleaf.org node2 10.0.0.10

|

  • 配置hosts解析

[root@web01 bbs]``# echo "127.0.0.1 bbs.xpleaf.org">>/etc/hosts

[root@web01 bbs]``# tail -1 /etc/hosts

127.0.0.1 bbs.xpleaf.org

|

  • 檢查配置文件與啟動(dòng)

[root@web01 bbs]``# /application/nginx/sbin/nginx -t

nginx: the configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf syntax is ok

nginx: configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf ``test is successful

[root@web01 bbs]``# /application/nginx/sbin/nginx -s reload

|

  • 本機(jī)上進(jìn)行測(cè)試

[root@web02 bbs]``# curl bbs.xpleaf.org

bbs.xpleaf.org node2 10.0.0.10

|

(3)lb01配置

  • 配置文件內(nèi)容

[root@lb01 conf]``# cat nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application``/octet-stream``;

sendfile on;

keepalive_timeout 65;

upstream bbs_server_pools {

server 10.0.0.9:80 weight=1;

server 10.0.0.10:80 weight=1;

}

server {

listen 80;

server_name bbs.xpleaf.org;

location / {

proxy_pass http:``//bbs_server_pools``;

}

}

}

|

  • 配置hosts解析

[root@web01 bbs]``# echo "127.0.0.1 bbs.xpleaf.org">>/etc/hosts

[root@web01 bbs]``# tail -1 /etc/hosts

127.0.0.1 bbs.xpleaf.org

|

  • 檢查配置文件與啟動(dòng)

[root@web01 bbs]``# /application/nginx/sbin/nginx -t

nginx: the configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf syntax is ok

nginx: configuration ``file /application/nginx-1``.6.3``//conf/nginx``.conf ``test is successful

[root@web01 bbs]``# /application/nginx/sbin/nginx -s reload

|

(4)Nginx負(fù)載均衡效果測(cè)試

可以通過(guò)命令行的方式在lb01上進(jìn)行測(cè)試造烁,如下:

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node1 10.0.0.9

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node2 10.0.0.10

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node1 10.0.0.9

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node2 10.0.0.10

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node1 10.0.0.9

[root@lb01 conf]``# curl bbs.xpleaf.org

bbs.xpleaf.org node2 10.0.0.10

|

通過(guò)上面的測(cè)試可以知道否过,訪問(wèn)請(qǐng)求都被分擔(dān)到兩臺(tái)節(jié)點(diǎn)服務(wù)器上午笛,也可以通過(guò)在windows 7的瀏覽器上輸入地址來(lái)進(jìn)行測(cè)試(需要先把"127.0.0.1 bbs.xpleaf.org"添加到windows 7的hosts文件中):


3.進(jìn)階1:記錄訪問(wèn)用戶的實(shí)際IP地址

(1)原理

上面我們通過(guò)windows 7進(jìn)行訪問(wèn)時(shí),查看web服務(wù)器的日志:

[root@web01 bbs]``# tail -2 /application/nginx/logs/access_bbs.log

10.0.0.7 - - [04``/Mar/2017``:11:33:00 +0800] ``"GET / HTTP/1.0" 200 30 ``"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

10.0.0.7 - - [04``/Mar/2017``:11:33:29 +0800] ``"GET / HTTP/1.0" 304 0 ``"-" "Mozilla``/5``.0 (Windows NT 6.1;

|

因?yàn)樵谂渲脀eb服務(wù)器節(jié)點(diǎn)時(shí)苗桂,配置的日志格式是這樣的:

log_format main ``'$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"'``;

|

所以前面日志的第一個(gè)字段用來(lái)記錄Nginx均衡服務(wù)器的地址药磺,這沒(méi)有問(wèn)題,但是最后一個(gè)字段是'-'誉察,也就是沒(méi)有記錄与涡,該字段是用來(lái)記錄用戶的實(shí)際IP的。

(2)配置Nginx攜帶用戶實(shí)際IP

為了能夠讓web服務(wù)器記錄用戶的實(shí)際IP持偏,需要在Nginx負(fù)載均衡服務(wù)器上做如下配置:

[root@lb01 conf]``# cat nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application``/octet-stream``;

sendfile on;

keepalive_timeout 65;

upstream bbs_server_pools { ``# 定義節(jié)點(diǎn)資源池

server 10.0.0.9:80 weight=1;

server 10.0.0.10:80 weight=1;

}

server {

listen 80;

server_name bbs.xpleaf.org;

location / {

proxy_pass http:``//bbs_server_pools``; ``# 把請(qǐng)求轉(zhuǎn)發(fā)到節(jié)點(diǎn)資源池中指定的主機(jī)中

proxy_set_header X-Forwarded-For $remote_addr;

}

}

}

實(shí)際上就是多加了最后一行驼卖。

(3)測(cè)試

這時(shí)再用windows 7去訪問(wèn)bbs.xpleaf.org,然后在web服務(wù)器上查看日志信息:

[root@web01 bbs]``# tail -2 /application/nginx/logs/access_bbs.log

10.0.0.7 - - [04``/Mar/2017``:11:49:10 +0800] ``"GET / HTTP/1.0" 200 30 ``"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "10.0.0.1"

10.0.0.7 - - [04``/Mar/2017``:11:49:11 +0800] ``"GET / HTTP/1.0" 200 30 ``"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "10.0.0.1"

可以看到日志的最后一個(gè)字段就記錄了客戶端的真實(shí)IP地址鸿秆。


4.進(jìn)階2:節(jié)點(diǎn)服務(wù)器多虛擬機(jī)場(chǎng)景

前面在每臺(tái)web服務(wù)器上酌畜,只配置了一個(gè)站點(diǎn)bbs.xpleaf.org,所以上面的負(fù)載均衡是沒(méi)有問(wèn)題卿叽,但是如果再配置一個(gè)站點(diǎn)blog.xpleaf.org(即在bbs.xpleaf.org后面再增加一個(gè)server域)桥胞,當(dāng)去測(cè)試時(shí)就會(huì)發(fā)現(xiàn),無(wú)論是訪問(wèn)bbs.xpleaf.org考婴,還是訪問(wèn)blog.xpleaf.org贩虾,返回的內(nèi)容都是站點(diǎn)bbs.xpleaf.org的內(nèi)容。

究其原因是當(dāng)用戶訪問(wèn)域名時(shí)確實(shí)是攜帶了blog.xpleaf.org主機(jī)頭請(qǐng)求Nginx反向代理服務(wù)器沥阱,但是是反向代理服務(wù)器向下面節(jié)點(diǎn)重新發(fā)起請(qǐng)求時(shí)缎罢,默認(rèn)并沒(méi)有在請(qǐng)求頭里告訴節(jié)點(diǎn)服務(wù)器要找哪臺(tái)虛擬主機(jī),所以web節(jié)點(diǎn)服務(wù)器接收到請(qǐng)求后發(fā)現(xiàn)沒(méi)有主機(jī)頭信息考杉,因此策精,就把節(jié)點(diǎn)服務(wù)器的第一個(gè) 虛擬機(jī)發(fā)給了反向代理。

解決方法是崇棠,當(dāng)反向代理向后重新發(fā)起請(qǐng)求時(shí)咽袜,要攜帶主機(jī)頭信息,以明確告訴節(jié)點(diǎn)服務(wù)器要找哪個(gè)虛擬機(jī)枕稀。只需要在Nginx負(fù)載均衡服務(wù)器上增加下面一行配置:

proxy_set_header Host $host;

|

此時(shí)配置文件內(nèi)容如下:



`[root@lb01 conf]``# cat nginx.conf`

`worker_processes  1;`

`events {`

`worker_connections  1024;`

`}`

`http {`

`include       mime.types;`

`default_type  application``/octet-stream``;`

`sendfile        on;`

`keepalive_timeout  65;`

`upstream bbs_server_pools {`

`server 10.0.0.9:80 weight=1;`

`server 10.0.0.10:80 weight=1;`

`}`

`server {`

`listen 80;`

`server_name bbs.xpleaf.org;`

`location / {`

`proxy_pass http:``//bbs_server_pools``;`

`proxy_set_header X-Forwarded-For $remote_addr;`

`proxy_set_header Host $host;`

`}`

`}`

`}`

 |

由于原理比較簡(jiǎn)單询刹,這里就不給出完整過(guò)程了,可以參考老男孩老師的書籍萎坷。


5.進(jìn)階3:根據(jù)URL中的目錄地址實(shí)現(xiàn)代理轉(zhuǎn)發(fā)

根據(jù)HTTP的URL進(jìn)行轉(zhuǎn)發(fā)的應(yīng)用情況范抓,被稱為第7層(應(yīng)用層)的負(fù)載均衡,而LVS的負(fù)載均衡一般用于TCP等的轉(zhuǎn)發(fā)食铐,因此被稱為第4層轉(zhuǎn)發(fā)(傳輸層)的負(fù)載均衡匕垫。

在上面的案例中,如果需要實(shí)現(xiàn)一個(gè)需求虐呻,希望bbs.xpleaf.org可以使用bbs.xpleaf.org/upload來(lái)提供上傳服務(wù)象泵,而bbs.xpleaf.org則保持默認(rèn)提供網(wǎng)站的主頁(yè)內(nèi)容寞秃,這時(shí)就可以使用Nginx基于URL來(lái)實(shí)現(xiàn)代理轉(zhuǎn)發(fā)了。

可以把lb01的Nginx配置修改為如下:


`[root@lb01 conf]``# cat nginx.conf`

`worker_processes  1;`

`events {`

`worker_connections  1024;`

`}`

`http {`

`include       mime.types;`

`default_type  application``/octet-stream``;`

`sendfile        on;`

`keepalive_timeout  65;`

`upstream bbs_server_pools {`

`server 10.0.0.9:80 weight=1;`

`}`

`upstream bbs_upload_server_pools {`

`server 10.0.0.10:80  weight=1;`

`}`

`server {`

`listen 80;`

`server_name bbs.xpleaf.org;`

`location / {`

`proxy_pass http:``//bbs_server_pools``;`

`}`

`location ``/static` `{`

`proxy_pass http:``//bbs_upload_server_pools``;`

`}`

`}`

`}`

 |

這樣偶惠,實(shí)際上就相當(dāng)于bbs.xpleaf.org提供了兩種不同的業(yè)務(wù)春寿,一種是普通的bbs論壇內(nèi)容業(yè)務(wù),另外一種則是上傳業(yè)務(wù)忽孽,上面我們定義了兩個(gè)地址池绑改,在每個(gè)地址池中,如果有多臺(tái)節(jié)點(diǎn)服務(wù)器兄一,就可以根據(jù)upstream的相關(guān)調(diào)度算法來(lái)實(shí)現(xiàn)不同業(yè)務(wù)的負(fù)載均衡了厘线,總結(jié)來(lái)說(shuō)就是,只使用一個(gè)域名對(duì)外提供服務(wù)出革,同時(shí)該域名對(duì)外提供不同的產(chǎn)品業(yè)務(wù)造壮。

當(dāng)然,基于這種思想骂束,通過(guò)location的正則匹配耳璧,可以根據(jù)用戶不同的瀏覽器版本來(lái)訪問(wèn)不同的服務(wù)器群、根據(jù)設(shè)備的不同類型來(lái)訪問(wèn)不同的服務(wù)器群(PC端和移動(dòng)端)展箱、根據(jù)文件擴(kuò)展名來(lái)訪問(wèn)不同的服務(wù)器群(實(shí)現(xiàn)動(dòng)靜分離)旨枯,從而可以提升用戶的體驗(yàn)。相關(guān)案例可以參考老男孩老師的書籍混驰。


6.原理解析:http proxy模塊和upstream模塊

Nginx的反向代理功能和負(fù)載均衡功能是通過(guò)http proxy模塊和upstream模塊來(lái)實(shí)現(xiàn)的:

| Nginx http功能模塊 | 模塊說(shuō)明 |
| ngx_http_proxy_module | proxy代理模塊攀隔,用于把請(qǐng)求后拋給服務(wù)器節(jié)點(diǎn)或upstream服務(wù)器池 |
| ngx_http_upstream_module | 負(fù)載均衡模塊,可以實(shí)現(xiàn)網(wǎng)站的負(fù)載均衡功能及節(jié)點(diǎn)的健康檢查 |

(1)http proxy模塊

配置方法可以參考上面的案例账胧,實(shí)際上還有很多參數(shù)可以使用,這里不詳細(xì)給出先紫。

(2)upstream模塊

主要介紹一下upstream模塊在實(shí)現(xiàn)負(fù)載均衡功能時(shí)的調(diào)度算法治泥,其實(shí)關(guān)于upstream的調(diào)度算法,如果學(xué)習(xí)過(guò)QoS遮精,看起來(lái)就會(huì)覺(jué)得很熟悉了居夹。

  • 靜態(tài)調(diào)度算法:負(fù)載均衡器根據(jù)自身設(shè)定的規(guī)則進(jìn)行分配,不需要考慮后端節(jié)點(diǎn)服務(wù)器的情況

主要有rr本冲、wrr准脂、ip_hash

(1)rr輪詢

如果節(jié)點(diǎn)服務(wù)器不宕機(jī),請(qǐng)求將會(huì)平均分發(fā)到各節(jié)點(diǎn)服務(wù)器上檬洞;

(2)wrr權(quán)重輪詢

按照設(shè)置的weight權(quán)重狸膏,將請(qǐng)示按比例分發(fā)到各節(jié)點(diǎn)服務(wù)器上;

(3)ip_hash

按照客戶端IP的``hash``結(jié)果分配添怔;

可以解決動(dòng)態(tài)網(wǎng)頁(yè)的session共享問(wèn)題(會(huì)話保持)湾戳,但無(wú)法保證1:1的負(fù)載均衡贤旷;

|

  • 動(dòng)態(tài)調(diào)度算法:負(fù)載均衡器會(huì)根據(jù)后端節(jié)點(diǎn)的當(dāng)前狀態(tài)來(lái)決定是否分發(fā)請(qǐng)求

主要有fair、least_conn砾脑、url_hash幼驶、一致性``hash``算法

(1)fair

根據(jù)后端節(jié)點(diǎn)服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配韧衣;

Nginx本身不支持該算法盅藻,需要下載相關(guān)模塊upstream_fair;

(2)least_conn

根據(jù)后端節(jié)點(diǎn)的連接數(shù)來(lái)決定分配情況畅铭,哪個(gè)機(jī)器連接數(shù)少就分發(fā)氏淑;

(3)url_hash(第三方調(diào)度算法)

與ip_hash類似,根據(jù)訪問(wèn)URL來(lái)分配請(qǐng)求顶瞒,讓每個(gè)URL定向到同一個(gè)后端服務(wù)器夸政;

后端服務(wù)器為緩存服務(wù)器時(shí)效果顯著;

(4)一致性``hash``算法(第三方調(diào)度算法)

比較復(fù)雜榴徐,這里不做介紹守问。

|


7.下一步做什么

首先當(dāng)然是要能夠把Nginx負(fù)載均衡的環(huán)境搭建出來(lái),否則是沒(méi)有辦法繼續(xù)往下面學(xué)習(xí)的坑资,然后就是繼續(xù)加深Nginx負(fù)載均衡的理解耗帕,同時(shí)也在實(shí)際場(chǎng)景中多分析和嘗試使用。

實(shí)際場(chǎng)景:給flume,elasticsearch袱贮,web應(yīng)用做負(fù)載均衡

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仿便,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子攒巍,更是在濱河造成了極大的恐慌嗽仪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒莉,死亡現(xiàn)場(chǎng)離奇詭異闻坚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)兢孝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門窿凤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人跨蟹,你說(shuō)我怎么就攤上這事雳殊。” “怎么了窗轩?”我有些...
    開(kāi)封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵夯秃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)寝并,這世上最難降的妖魔是什么箫措? 我笑而不...
    開(kāi)封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮衬潦,結(jié)果婚禮上斤蔓,老公的妹妹穿的比我還像新娘。我一直安慰自己镀岛,他們只是感情好弦牡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著漂羊,像睡著了一般驾锰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上走越,一...
    開(kāi)封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天椭豫,我揣著相機(jī)與錄音,去河邊找鬼旨指。 笑死赏酥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谆构。 我是一名探鬼主播裸扶,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼搬素!你這毒婦竟也來(lái)了呵晨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤熬尺,失蹤者是張志新(化名)和其女友劉穎摸屠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粱哼,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡季二,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了皂吮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒傻。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡税手,死狀恐怖蜂筹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芦倒,我是刑警寧澤艺挪,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響麻裳,放射性物質(zhì)發(fā)生泄漏口蝠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一津坑、第九天 我趴在偏房一處隱蔽的房頂上張望妙蔗。 院中可真熱鬧,春花似錦疆瑰、人聲如沸眉反。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寸五。三九已至,卻和暖如春耿币,著一層夾襖步出監(jiān)牢的瞬間梳杏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工淹接, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留十性,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓蹈集,卻偏偏與公主長(zhǎng)得像烁试,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拢肆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容