天天看點

Nginx負載均衡

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

這篇文章将要介紹的主要内容如下:

配置三台伺服器

分别在三台伺服器上部署同樣的服務代碼

使用nginx實作負載均衡

我們的nginx負載均衡器将部署在一台互動伺服器上,配置與其他兩台伺服器的連接配接,所有的請求直接通路nginx服務接口,然後nginx負載均衡器将自行選擇真實調用的伺服器端口。

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

     visualstudio 2017 

部署環境:阿裡雲 ecs執行個體 windows server 2012 x64

     iis 7.0

asp.net webapi2

使用asp.net webapi2 寫一個簡單地傳回json的接口,為了展示我們調用的是不同伺服器上的接口,我們以數字形式分别生成三個接口服務,并且分别部署到三台伺服器的iis中。

我部署的三台伺服器後面的數字分别是 111,222,333

注:return ok是本人自定義的傳回格式,具體簡單代碼可以直接return json();request.getipaddressfromrequest();是本人擴充的擷取ip位址的方法,具體實作請按自身情況實作。

我們将三個背景代碼生成後,分别部署到三個伺服器上。

為了保密伺服器資訊,以下我的所有ip位址都将以ip_a,ip_b,ip_c來辨別。

Nginx負載均衡
Nginx負載均衡

第三個是我們将要部署nginx的伺服器:

Nginx負載均衡

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

然後解壓到ip_c伺服器,并打開conf檔案夾下的nginx.conf

Nginx負載均衡

編輯内容如下

Nginx負載均衡

然後我們啟動服務:

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

Nginx負載均衡

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

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

請求一、

Nginx負載均衡

請求二、

Nginx負載均衡

請求三、

Nginx負載均衡

可以發現,我們每一次的請求,調用的背景服務接口都不是同一個,這樣就保證了在大量客戶通路同一個伺服器位址時候,可以将一個伺服器的壓力分别分攤到幾個伺服器上,達到了負載均衡的目的。

繼續閱讀