負(fù)載均衡原理
客戶端向反向代理發(fā)送請(qǐng)求,接著反向代理根據(jù)某種負(fù)載機(jī)制轉(zhuǎn)發(fā)請(qǐng)求至目標(biāo)服務(wù)器(這些服務(wù)器都運(yùn)行著相同的應(yīng)用),并把獲得的內(nèi)容返回給客戶端,期中,代理請(qǐng)求可能根據(jù)配置被發(fā)往不同的服務(wù)器。 (推薦學(xué)習(xí):nginx教程)
負(fù)載均衡配置
測(cè)試案例:
如下,分別在兩臺(tái)服務(wù)器(192.168.1.103, 192.168.1.102)上部署了相同的應(yīng)用,并通過8080端口訪問網(wǎng)站,如下
http://192.168.1.xx:8080/webautotest/xxxxxxx
同時(shí)在192.168.1.103上安裝了nginx反向代理,想通過192.168.1.103的80端口來實(shí)現(xiàn)對(duì)兩個(gè)站點(diǎn)的訪問
編輯nginx配置文件(例中為/usr/local/ngnix/conf/nginx.conf),找到http結(jié)點(diǎn),如下,添加帶背景色部分的內(nèi)容
http { upstream myapp1 { server 192.168.1.103:8080; server 192.168.1.104:8080; } ……略 server { listen 80; server_name localhost; ……略 location /webautotest/ { proxy_buffering off; proxy_pass http://myapp1; } } }
重新加載配置文件
[root@localhost nginx-1.10.0]# /usr/local/ngnix/sbin/nginx -s reload
訪問測(cè)試url
如下,訪問相同的頁(yè)面,展示來自不同服務(wù)器的頁(yè)面
說明:
負(fù)載均衡方法
nginx提供了以下三種負(fù)載均衡機(jī)制、方法:
round-robin — 請(qǐng)求以循環(huán)、輪轉(zhuǎn)的方式分發(fā)到應(yīng)用服務(wù)器。
least-connected — 下一個(gè)請(qǐng)求被分配到擁有最少活動(dòng)連接數(shù)的服務(wù)器
ip-hash — 使用一個(gè)哈希函數(shù),基于客戶端ip地址判斷下一個(gè)請(qǐng)求應(yīng)該被分發(fā)到哪個(gè)服務(wù)器。
默認(rèn)的負(fù)載均衡配置
http { upstream myapp1 { server srv1.example.com; server srv2.example.com; server srv3.example.com; } server { listen 80; location / { proxy_pass http://myapp1; } } }
上例中,有3個(gè)應(yīng)用實(shí)例分別運(yùn)行在srv1-srv3。當(dāng)不顯示指定負(fù)載均衡方法時(shí),默認(rèn)為round-robin。所有請(qǐng)求都被代理轉(zhuǎn)發(fā)至myapp1服務(wù)器組,并根據(jù)負(fù)載均衡方法來分發(fā)請(qǐng)求。