負(fù)載均衡可以把用戶的請(qǐng)求分?jǐn)偟蕉鄠€(gè)服務(wù)器上進(jìn)行處理,從而實(shí)現(xiàn)了對(duì)海量用戶的訪問(wèn)支持。負(fù)載均衡的架構(gòu)如圖所示:
對(duì)于復(fù)雜的web應(yīng)用來(lái)說(shuō),用nginx做前端負(fù)載均衡是理所當(dāng)然的事。
下面,我們用nginx做nodejs應(yīng)用的負(fù)載均衡。
1、配置nginx
修改nginx.conf:
upstream?sample?{? ?????server?127.0.0.1:3000;? ?????server?127.0.0.1:3001;? ?????keepalive?64;? ????}? ?????server?{? ??????listen?80;? ??????....? ??????server_name?127.0.0.1;? ??????....? ??????location?/?{? ????????proxy_redirect?off;? ????????proxy_set_header?x-real-ip?$remote_addr;? ????????proxy_set_header?x-forwarded-for?$proxy_add_x_forwarded_for;? ????????proxy_set_header?x-forwarded-proto?$scheme;? ????????proxy_set_header?host?$http_host;? ????????proxy_set_header?x-nginx-proxy?true;? ????????proxy_set_header?connection?"";? ????????proxy_http_version?1.1;? ????????proxy_pass?http://sample;? ??????}? ????}
這里在3000端口和3001端口各有一個(gè)node.js服務(wù)器,這兩個(gè)服務(wù)器在做同樣的工作。在upstream節(jié),配置了兩個(gè)node.js服務(wù)器。此外,我們還設(shè)置了proxy_pass 做http請(qǐng)求代理。
2、構(gòu)建nodejs服務(wù)器
var?http?=?require('http');? var?morgan????=?require('morgan');? ? var?server1?=?http.createserver(function?(req,?res)?{? ?console.log("request?for:?"?+?req.url?+?"--?port?3000?");? ?res.writehead(200,?{'content-type':?'text/plain'});? ?res.end('hello?node.jsn');? }).listen(3000,?"127.0.0.1");? ? var?server2?=?http.createserver(function?(req,?res)?{? ?console.log("request?for:?"?+?req.url?+?"--?port?3001?");? ?res.writehead(200,?{'content-type':?'text/plain'});? ?res.end('hello?node.jsn');? }).listen(3001,?"127.0.0.1");? ? server1.once('listening',?function()?{? ?console.log('server?running?at?http://127.0.0.1:3000/');? });? ? server2.once('listening',?function()?{? ?console.log('server?running?at?http://127.0.0.1:3001/');? });
3、訪問(wèn)nginx服務(wù)器
現(xiàn)在我們可以訪問(wèn)
可以看到如下的輸出:
server?running?at?http://127.0.0.1:3000/? server?running?at?http://127.0.0.1:3001/? request?for:?/--?port?3001?? request?for:?/favicon.ico--?port?3000?? request?for:?/favicon.ico--?port?3001?? request?for:?/--?port?3000?? request?for:?/favicon.ico--?port?3001?? request?for:?/favicon.ico--?port?3000?? request?for:?/--?port?3001?? request?for:?/favicon.ico--?port?3000?? request?for:?/favicon.ico--?port?3001?? request?for:?/--?port?3000?? request?for:?/favicon.ico--?port?3001?? request?for:?/favicon.ico--?port?3000
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END