3、netcore跨平臺之 Linux配置nginx負載均衡

前面兩章講了netcore在linux上部署以及配置nginx,並讓nginx代理webapi。html

這一章主要講如何配置負載均衡,有些步驟在前兩章講的很詳細了,因此這一章我就不會一個個截圖了。linux

由於本人只有一個服務器。因此我會在同一臺服務器上部署兩套差很少的實例。nginx

一樣的代碼,咱們在Program.cs進行了修改,如圖所示:web

這裏我把原來的端口6666改爲了8888算法

 

 而後你能夠改一改你的接口部分的代碼,便於讓你更好的看到效果。json

這裏把value1和value2改爲value3和value4,這裏是爲了看到測試效果,在實際的開發中這裏不用改。vim

 

 而後發佈和上傳到服務器,如何發佈和上傳,我在第一章有講到:https://www.cnblogs.com/dengbo/p/11878766.htmlapi

注意的是你一樣的地方新建一個新的目錄保存你新上傳的程序,netcore是我第一章創建的,netcore1是新建的,服務器

你把你新的發佈包放在netcore便可。如圖:session

上傳結束後,在這個目錄中運行你的程序,輸入下面的命令

dotnet WebApiTest.dll   --server.urls "http://*:8888"

如圖所示

 

 而後去看看你的接口是否正常

 

 

好了,這裏的準備工做完成了,下面咱們進入到nginx的配置的目錄中

輸入下面的命令:

cd /usr/local/nginx/conf

而後對文件進行編輯

vim nginx.conf

 

 咱們須要在這裏修改一下配置。

在如圖的server的平級添加以下的代碼

upstream NgWebApi {
                server localhost:6666;
                server localhost:8888;
    }

上面的 NgWebApi是隨意寫的名稱,不要糾結這裏。

而後在修改 proxy_pass後面的內容:

proxy_pass http://NgWebApi;

最終的結果以下:

 

 這樣你就修改完成,輸入:wq退出並保存便可。

最後檢查並重啓nginx

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

最後不要忘記把你的8888端口的webapi啓動一下。

這裏我務必要提醒你,請進入到你的程序的目錄中執行這段代碼,

cd /root/netcore1
dotnet WebApiTest.dll   --server.urls "http://*:8888"

啓動以下:

 

 

 好了,配置結束了,下面咱們來測試下

 

仍是昨天的那個網站進行測試   https://www.sojson.com/httpRequest/

 

 

 

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

 

 

看到上面兩個請求,就說明你配置成功了,是否是很簡單。

上面這種配置,系統會採用默認的輪詢訪問不一樣的端口,nginx做爲強大的反向代理,強大的遠遠不止這裏

下面簡單講講分發策略。

1)、輪詢 ——輪流處理請求(這是系統默認的)

      每一個請求按時間順序逐一分配到不一樣的應用服務器,若是應用服務器down掉,自動剔除它,剩下的繼續輪詢,若是您的服務器都差很少,建議這個。 

2)、權重 ——誰的設置的大,誰就承擔大部分的請求

      經過配置權重,指定輪詢概率,權重和訪問比率成正比,用於應用服務器性能不均的狀況,有時候你買的服務器可能良莠不齊,有的性能強大

    有的通常,你能夠經過設置權重,把服務器性能強大權重設置大一點,這樣能夠合理分配壓力。 

3)ip_哈希算法

      每一次的請求按訪問iphash結果分配,這樣每一個訪客固定訪問一個應用服務器,能夠解決session共享的問題。

 

 

關於權重的策略,以下圖示的 你只要加一個  weight=6 便可這裏不必定是6,是整數都行。

 

 

 而後保存便可

這裏不要忘記重啓nginx,以及運行8888端口的程序了,若是你不會,能夠看前面的部分

最後咱們看看效果

結果和上面的測試結果差很少,惟一不一樣的是出現下面這個結果的次數要大於另一個的。

 

 

到這裏就結束了,感謝觀看。

相關文章
相關標籤/搜索