親測Nginx負載均衡,讓你一步到位

【前言】

在大型網站中,負載均衡是有想當必要的。尤其是在同一時間訪問量比較大的大型網站,例如網上商城,新聞等CMS系統,為了減輕單個服務器的處理壓力,我們引進了負載均衡這一個概念,將一個服務器的壓力分攤到幾個服務器上,一方面減輕了宕機的幾率,另一方面也使得宕機後還要其他服務器可以繼續穩定運行,提高了系統的健壯性。

【實現功能】

這篇文章將要介紹的主要內容如下:

1、配置三臺服務器

2、分別在三臺服務器上部署同樣的服務代碼

3、使用Nginx實現負載均衡

【實現思路】

我們的Nginx負載均衡器將部署在一臺交互服務器上,配置與其他兩臺服務器的連接,所有的請求直接訪問Nginx服務接口,然後Nginx負載均衡器將自行選擇真實調用的服務器端口。

【開發及部署環境】

開發環境:Windows 7 x64 sp1 英文版

     VisualStudio 2017

部署環境:阿里雲 ECS實例 windows server 2012 x64

     IIS 7.0

【所需技術】

ASP.NET WebApi2(其他的Java服務也一樣可以

【實現過程】

使用ASP.NET webapi2 寫一個簡單地返回json的接口,為了展示我們調用的是不同服務器上的接口,我們以數字形式分別生成三個接口服務,並且分別部署到三臺服務器的iis中。

<code> public IHttpActionResult GetTest()
{
\t\t//throw new Exception_DG_Internationalization(1001);
\t\tstring ip = Request.GetIpAddressFromRequest();
\t\treturn OK("Test Api . Client Ip Address is -> "+ip+" The Server is ===== 333 =====");
}/<code>

我部署的三臺服務器後面的數字分別是 111,222,333

注:return OK是本人自定義的返回格式,具體簡單代碼可以直接return Json();

Request.GetIpAddressFromRequest();是本人擴展的獲取ip地址的方法,具體實現請按自身情況實現。

【系統測試】

我們將三個後臺代碼生成後,分別部署到三個服務器上。

為了保密服務器信息,以下我的所有ip地址都將以ip_A,ip_B,ip_C來標識

親測Nginx負載均衡,讓你一步到位

親測Nginx負載均衡,讓你一步到位

第三個是我們將要部署Nginx的服務器:

親測Nginx負載均衡,讓你一步到位

部署好後,我們進行Nginx的配置:

下載Nginx http://nginx.org/en/download.html

親測Nginx負載均衡,讓你一步到位

然後解壓到ip_C服務器,並打開conf文件夾下的nginx.conf

親測Nginx負載均衡,讓你一步到位


親測Nginx負載均衡,讓你一步到位


然後我們啟動服務:

cmd命令切換到nginx的根目錄下

親測Nginx負載均衡,讓你一步到位

親測Nginx負載均衡,讓你一步到位


這樣,服務就算啟動了... 吐槽一句,為什麼不提示一句服務啟動成功呢..欸,不人性化!

然後我們打開任意一個接口測試工具,分別執行三次相同的請求:

請求一、

親測Nginx負載均衡,讓你一步到位

請求二、

親測Nginx負載均衡,讓你一步到位

請求三、

親測Nginx負載均衡,讓你一步到位

可以發現,我們每一次的請求,調用的後臺服務接口都不是同一個,這樣就保證了在大量客戶訪問同一個服務器地址時候,可以將一個服務器的壓力分別分攤到幾個服務器上,達到了負載均衡的目的


分享到:


相關文章: