天天看點

Linux 使用nginx實作netcore項目的負載均衡

上篇文章Linux通過nginx反向代理net core項目中已經在伺服器A上使用nginx代理了netcore項目,這裡再增加一台伺服器,叫做B伺服器,部署同樣的代碼(我們這裡對某個頁面稍加改動,主要便于看負載的效果),使用nginx實作負載均衡。

一、B伺服器部署netcore項目

部署的過程可以參考Linux-Centos8.3 部署net core項目。這裡簡單的說下:

上傳釋出的netcore項目,如何上傳可以參考:Linux遠端連接配接及上傳檔案

!!!!!重點說明:為了便于效果示範,這裡稍加修改下項目,将其中頁面中的“文檔”兩個字改為“文檔(伺服器B)”

Linux 使用nginx實作netcore項目的負載均衡

 啟動netcore項目:

dotnet HyWebSocketServer.dll      
Linux 使用nginx實作netcore項目的負載均衡

我們伺服器B上部署的項目,看下效果:

Linux 使用nginx實作netcore項目的負載均衡

 B伺服器上的項目啟動後,開始在A伺服器上配置nginx了

二、Nginx負載均衡配置

如果想了解負載均衡的知識體系可以參考另一篇部落格:負載均衡

通過Xshell打開伺服器A

Linux 使用nginx實作netcore項目的負載均衡

 進入nginx的配置目錄:

cd /usr/local/nginx/conf      

對檔案進行編輯:

vim nginx.conf      
Linux 使用nginx實作netcore項目的負載均衡

使用 nginx 中的 upstream子產品 來實作nginx将跨越單機的限制,完成網絡資料的接收、處理和轉發。我們主要使用提到的轉發功能進行排程分發。定義的 upstream 子產品名稱是 wsServer,這裡配置了兩個IP端口,到時候nginx就往這兩個伺服器上分發。修改一下配置,在如下圖的server的平級添加如下的代碼:

upstream wsServer{
     server localhost:9000 ;
     server 伺服器B的公網IP:9000;
}      

server ip:port後面可以加參數,比如:

  • down 表示目前的server臨時不參與負載.
  • weight 是權重,weight越大,負載的權重就越大。
  • backup: 其他全部的非backup機器當機或者忙的時候,請求backup機器。是以這台機器壓力會最輕

我們這裡使用nginx預設的政策,即輪詢法。

Linux 使用nginx實作netcore項目的負載均衡

修改完成,輸入:wq退出并儲存,最後檢查并重新開機nginx

/usr/local/nginx/sbin/nginx -t      
/usr/local/nginx/sbin/nginx -s reload      
Linux 使用nginx實作netcore項目的負載均衡

三、負載的效果展示

多次發送請求會出現下面的響應:

Linux 使用nginx實作netcore項目的負載均衡
Linux 使用nginx實作netcore項目的負載均衡

 看到上面兩個截圖,就說明配置成功了。