Nginx负载均衡讲解
文章目錄
- 產(chǎn)品出現(xiàn)瓶頸
- Nginx出現(xiàn)
- Nginx作用
- Http代理,反向代理
- 正向代理
- 反向代理
- 負(fù)載均衡
- 輪詢
- 加權(quán)輪詢
- ip hash
- 動(dòng)靜分離
- Nginx的安裝
- 下載nginx
- 啟動(dòng)nginx
- 檢查nginx是否啟動(dòng)成功
- 配置監(jiān)聽
- 關(guān)閉nginx
- Nginx常用命令
- 實(shí)戰(zhàn)講解
產(chǎn)品出現(xiàn)瓶頸
公司項(xiàng)目剛剛上線的時(shí)候,并發(fā)量小,用戶使用的少,所以在低并發(fā)的情況下,一個(gè)jar包啟動(dòng)應(yīng)用就夠了,然后內(nèi)部tomcat返回內(nèi)容給用戶
但是慢慢的,使用我們平臺(tái)的用戶越來(lái)越多了,并發(fā)量慢慢增大了,這時(shí)候一臺(tái)服務(wù)器滿足不了我們的需求了。
于是我們橫向擴(kuò)展,又增加了服務(wù)器。這個(gè)時(shí)候幾個(gè)項(xiàng)目啟動(dòng)在不同的服務(wù)器上,用戶要訪問(wèn),就需要增加一個(gè)代理服務(wù)器了,通過(guò)代理服務(wù)器來(lái)幫我們轉(zhuǎn)發(fā)和處理請(qǐng)求
Nginx出現(xiàn)
Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)。
如上所述,出現(xiàn)瓶頸后:我們希望這個(gè)代理服務(wù)器可以幫助我們接收用戶的請(qǐng)求,然后將用戶的請(qǐng)求按照規(guī)則幫我們轉(zhuǎn)發(fā)到不同的服務(wù)器節(jié)點(diǎn)之上。這個(gè)過(guò)程用戶是無(wú)感知的,用戶并不知道是哪個(gè)服務(wù)器返回的結(jié)果,我們還希望他可以按照服務(wù)器的性能提供不同的權(quán)重選擇。保證最佳體驗(yàn)!所以我們使用了Nginx。
Nginx作用
Http代理,反向代理
正向代理
正向代理類似一個(gè)跳板機(jī),代理訪問(wèn)外部資源
比如我們國(guó)內(nèi)訪問(wèn)谷歌,直接訪問(wèn)訪問(wèn)不到,我們可以通過(guò)一個(gè)正向代理服務(wù)器,請(qǐng)求發(fā)到代理服,代理服務(wù)器能夠訪問(wèn)谷歌,這樣由代理去谷歌取到返回?cái)?shù)據(jù),再返回給我們,這樣我們就能訪問(wèn)谷歌了
正向代理的用途:
- 訪問(wèn)原來(lái)無(wú)法訪問(wèn)的資源,如google
- 可以做緩存,加速訪問(wèn)資源
- 對(duì)客戶端訪問(wèn)授權(quán),上網(wǎng)進(jìn)行認(rèn)證
- 代理可以記錄用戶訪問(wèn)記錄(上網(wǎng)行為管理),對(duì)外隱藏用戶信息
反向代理
反向代理(Reverse Proxy)實(shí)際運(yùn)行方式是指以代理服務(wù)器來(lái)接受internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請(qǐng)求連接的客戶端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器
反向代理的用途:
- 保證內(nèi)網(wǎng)的安全,阻止web攻擊,大型網(wǎng)站,通常將反向代理作為公網(wǎng)訪問(wèn)地址,Web服務(wù)器是內(nèi)網(wǎng)
- 負(fù)載均衡,通過(guò)反向代理服務(wù)器來(lái)優(yōu)化網(wǎng)站的負(fù)載
總結(jié):
- 正向代理即是客戶端代理, 代理客戶端, 服務(wù)端不知道實(shí)際發(fā)起請(qǐng)求的客戶端
- 反向代理即是服務(wù)端代理, 代理服務(wù)端, 客戶端不知道實(shí)際提供服務(wù)的服務(wù)端
負(fù)載均衡
Nginx提供的負(fù)載均衡策略有2種:內(nèi)置策略和擴(kuò)展策略。內(nèi)置策略為輪詢,加權(quán)輪詢,Ip hash。擴(kuò)展策略,就天馬行空,只有你想不到的沒有他做不到的。
輪詢
顧名思義,輪流訪問(wèn)服務(wù)端
加權(quán)輪詢
權(quán)重高,能得到的更多訪問(wèn)(比如某個(gè)服務(wù)器性能較好,可以設(shè)置高權(quán)重)
ip hash
對(duì)客戶端請(qǐng)求的ip進(jìn)行hash操作,然后根據(jù)hash結(jié)果將同一個(gè)客戶端ip的請(qǐng)求分發(fā)給同一臺(tái)服務(wù)器進(jìn)行處理,可以解決session不共享的問(wèn)題
動(dòng)靜分離
在我們的軟件開發(fā)中,有些請(qǐng)求是需要后臺(tái)處理的,有些請(qǐng)求是不需要經(jīng)過(guò)后臺(tái)處理的(如:css、html、jpg、js等等文件),這些不需要經(jīng)過(guò)后臺(tái)處理的文件稱為靜態(tài)文件。讓動(dòng)態(tài)網(wǎng)站里的動(dòng)態(tài)網(wǎng)頁(yè)根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來(lái),動(dòng)靜資源做好了拆分以后,我們就可以根據(jù)靜態(tài)資源的特點(diǎn)將其做緩存操作。提高資源響應(yīng)的速度。
說(shuō)白了,就是靜態(tài)資源交給了nginx來(lái)訪問(wèn),減少服務(wù)器負(fù)擔(dān)
Nginx的安裝
下載nginx
http://nginx.org/en/download.html下載穩(wěn)定版本
啟動(dòng)nginx
兩種方式都可以使用
- 直接雙擊nginx.exe,雙擊后一個(gè)黑色的彈窗一閃而過(guò)
- 打開cmd命令窗口,切換到nginx解壓目錄下,輸入命令 nginx.exe ,回車即可
檢查nginx是否啟動(dòng)成功
直接在瀏覽器地址欄輸入網(wǎng)址 http://localhost:80 回車,出現(xiàn)以下頁(yè)面說(shuō)明啟動(dòng)成功!
配置監(jiān)聽
nginx的配置文件是conf目錄下的nginx.conf,默認(rèn)配置的nginx監(jiān)聽的端口為80,如果80端口被占用可以修改為未被占用的端口即可
修改之后,需要執(zhí)行命令 nginx -s reload 即可讓改動(dòng)生效
關(guān)閉nginx
如果使用cmd命令窗口啟動(dòng)nginx, 關(guān)閉cmd窗口是不能結(jié)束nginx進(jìn)程的,可使用兩種方法關(guān)閉nginx
- 輸入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)
- 使用taskkill taskkill /f /t /im nginx.exe(終止進(jìn)程)
Nginx常用命令
nginx 啟動(dòng)
nginx -s stop 停止
nginx -s quit 安全退出
nginx -s reload 重新加載配置文件
ps aux|grep nginx 查看nginx進(jìn)程
實(shí)戰(zhàn)講解
現(xiàn)在有個(gè)項(xiàng)目,我們分別用8080/8081進(jìn)行啟動(dòng)
正常的訪問(wèn),是用不同的端口進(jìn)行訪問(wèn)
現(xiàn)在我們用nginx進(jìn)行改造,修改其配置文件
- listen、server_name不用說(shuō),是訪問(wèn)的ip和端口
- location指的是代理:對(duì)應(yīng)server_name,需要修改的是proxy_pass參數(shù),里面的kuangstudy對(duì)應(yīng)upstream名稱
- upstream指的是負(fù)載均衡,weight是權(quán)重,值一樣就輪詢,值越大權(quán)重越大
reload一下nginx,再訪問(wèn),就能發(fā)現(xiàn)nginx已經(jīng)代理了服務(wù)了
由于水平有限,本博客難免有不足,懇請(qǐng)各位大佬不吝賜教!
總結(jié)
以上是生活随笔為你收集整理的Nginx负载均衡讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【SIKI学院】愤怒的小鸟创建过程-1
- 下一篇: siki学院_Unity初级案例_愤怒的