Nginx知多少系列之(六)Linux下.NET Core項目負載均衡


目錄

1.前言

2.安裝

3.配置文件詳解

4.工作原理

5.Linux下托管.NET Core項目

6.Linux下.NET Core項目負載均衡

7.負載均衡策略詳解

8.加權輪詢(round robin)策略剖析

9.IP哈希(ip hash)策略剖析

10.最少連接(least_conn)策略剖析

11.隨機(random)策略剖析

12.URL哈希(url hash)策略剖析

13.響應時間(fair)第三方模塊詳解

14.Linux下.NET Core項目Nginx+Keepalived高可用(主從模式)

15.Linux下.NET Core項目Nginx+Keepalived高可用(雙主模式)

16.Linux下.NET Core項目LVS+Keepalived+Nginx高可用集群

17.構建靜態服務器

18.日志分析

19.優化策略

20.總結

 

在上一篇文章我們已經講過如何使用Nginx托管.NET Core項目,那么接下來我們就要介紹如何使用Nginx作為負載均衡。這里之前是用了兩台服務器作為講解的,后面更新為三台上游服務器,只是內容有所變化,方法是不變的,特此說明下。

 

1.什么是負載均衡?

 

Load balancing,即負載均衡,是一種計算機技術,用來在多個計算機(計算機集群)、網絡連接、CPU、磁盤驅動器或其他資源中分配負載,以達到最優化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。

 

2.有什么作用?

①、解決並發壓力,提高應用處理性能(增加吞吐量,加強網絡處理能力);

②、提供故障轉移,實現高可用;

③、通過添加或減少服務器數量,提供網站伸縮性(擴展性);

⑤、安全防護;(負載均衡設備上做一些過濾,黑白名單等處理)

 

3.為什么使用Nginx來做負載均衡?

在前一篇文章,我們只是單機部署站點,程序猿A很開心的把站點部署上線了,客戶使用了一段時間也沒有發現什么問題,突然有一天訪問不了,程序猿A一看,哦豁,服務器掛了,讓我來重啟下服務器,重啟之后他很開心的告訴客戶,系統已經可以訪問啦。同時心里慶幸在上班時間出現問題,萬一半夜或者在路上,那客戶不得急死咯。程序猿A就想了,這可是概率事件啊,我也不知道它什么時候發神經或者經常性的給我來故障,那我不得經常被老板拿去祭天咯。程序猿A到最后也沒有解決這個故障問題,當然后面也沒有發生故障,隨着客戶越來越多,突然某天某個點系統突然很卡甚至返回訪問不了,程序猿A去看了下,發現服務器並沒有故障,但是就是訪問不了。這個時候程序猿A不解決問題就不行了,不解決客戶就會經常訪問不了,久之這個系統就沒法用了,即使老板天天拿程序猿A去祭天也無濟於事。

上面這個故事其實就是因為單機部署發生的單點故障,導致系統無法訪問。還有就是並發鴨梨,導致系統處理能力下降甚至訪問不了。那這個時候我們就把系統部署在多台服務器上,當一台掛了,另外一台也可以照常使用,而多台服務器就需要Nginx作為代理服務器,所有的請求先進入Nginx,Nginx在根據具體的規則把請求轉發到具體的服務器上。

 

4.怎么做?

 

首先我們還是按照上一篇文章介紹的,部署三台.NET Core站點。但是我們要做為這兩個.NET Core做一些區分,這樣能更好的看出我們訪問的是哪台服務器。我們按照《.NET Core項目部署到Linux(Centos7)(三)創建.NET Core API項目》,然后找到WeatherForecastController修改Get方法,增加ServerName區分具體訪問的是哪一個站點。如下圖

 

 

三台服務器的IP分別為192.168.157.132、192.168.157.133、192.168.157.138(這里的IP根據具體環境變化),我們修改ServerName為“.Net Core Nginx Server 1”,發布到132這台服務器上。然后修改ServerName為“.Net Core Nginx Server 2”,發布到133這台服務器上。最后修改ServerName為“.Net Core Nginx Server 3”,發布到138這台服務器上。發布完之后,我們在Postman驗證下效果。《.NET Core項目部署到Linux(Centos7)(六)發布.NET Core 項目到Linux》

 

 

 

 

這樣我們單獨去訪問這三台服務器站點都是正常的,但是這樣我們是無法做負載均衡的,用戶只能訪問一個站點,因為只能公布一個入口,那么下面我們就部署Nginx負載均衡服務器,用它來把用戶的請求轉發到這兩個站點的其中一個。

 

我們先新建一個虛擬機,然后用yum安裝Nginx,《Nginx知多少系列之(二)安裝》 ,安裝后如下圖

 

 

#測試Nginx安裝是否成功
curl http://localhost

 

 

 

這一台服務器是192.168.157.134,我們按照前面介紹的為Nginx開機自啟動以及開放對應的防火牆端口。

接下來我們就要做負載均衡配置了。

 

#進入nginx目錄
cd /etc/nginx

#編輯nginx.conf
sudo vim nginx.conf

#按i進入插入模式

#注釋下面的內容

#    server {
#        listen       80 default_server;
#        listen       [::]:80 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

#編輯完后按Esc,然后:wq保存退出

 

負載均衡需要使用upstream模塊,所以我們首先需要在Http塊里的全局位置定義一組服務器,我們在使用yum安裝的nginx在nginx.conf里會定義了include /etc/nginx/conf.d/*.conf,這里說明了包含了conf.d文件夾下面以.conf為結尾的配置文件。因為include是定義在全局的,所以在conf配置文件里也可以定義全局的內容。

 

#進入conf.d目錄
cd /etc/nginx/conf.d

#創建upstream.conf文件
sudo touch upstream.conf

#編輯upstream.conf文件
sudo vim upstream.conf

#按i進入插入模式

#輸入下面的配置內容

upstream netCoreDemo  {
    server 192.168.157.132;
    server 192.168.157.133;
    server 192.168.157.138;
}  
 
server {
    listen   80; 
    location / {
      proxy_pass  http://netCoreDemo;
    }
}

#按Esc,然后:wq保存退出

#重啟Nginx
sudo nginx -s reload

 

配置負載均衡就是這么簡單哦,當然下面我們還會介紹負載均衡的策略。不過我們先來驗證下效果吧,有圖有真相。

 

 

哦豁,看到效果了么,第一次訪問是在132的站點,第二次訪問是在133的站點,第三次訪問的是在138的站點,以此類推下去。簡單的負載均衡已經實現了。這里的策略我們沒有做更改,在Nginx里默認的方式是輪詢,每個請求按照時間順序輪流分配到不同的后端服務器。

 

 下一篇文章將會詳細的講解Nginx負載均衡的策略,目前暫不包含商業策略的講解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM