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