1. 程式人生 > >windows 下使用nginx 實現負載均衡

windows 下使用nginx 實現負載均衡

負載均衡是我們大流量網站要做的一個東西,下面我來給大家介紹在Nginx伺服器上進行負載均衡配置方法,希望對有需要的同學有所幫助哦。

負載均衡

先來簡單瞭解一下什麼是負載均衡,單從字面上的意思來理解就可以解釋N臺伺服器平均分擔負載,不會因為某臺伺服器負載高宕機而某臺伺服器閒置的情況。那麼負載均衡的前提就是要有多臺伺服器才能實現,也就是兩臺以上即可。

測試環境
1、由於沒有伺服器,所以本次測試直接host指定域名,在同一臺機器上使用IIS建立兩個站點。

2、nginx與iis的預設埠都是80,這裡使用nginx做負載均衡,所以需要改變iis的預設埠,這裡我把IIS的預設埠改成了81

測試域名  :a.com

A站點:nginx的預設站點

B站點 :localhost:9000

C站點 :localhost:9001

部署思路
A站點做為主站點,域名直接解析到A站點( localhost)上,由A站點負載均衡到B站點(localhost:9000)與C站點(localhost:9001)上。


域名解析

由於不是真實環境,域名就隨便使用一個a.com用作測試,所以a.com的解析只能在hosts檔案設定。

開啟:C:Windows\System32\drivers\etc\hosts

在末尾新增

127.0.0.1    a.com

儲存退出,然後啟動命令模式ping下看看是否已設定成功

 

從截圖上看已成功將a.com解析到127.0.0.1

nginx.conf 設定

開啟nginx.conf,檔案位置在nginx安裝目錄的conf目錄下。

在http段加入以下程式碼

upstream a.com { 
      server  127.0.0.1:9000; 
      server  127.0.0.1:9001; 

  
server{ 
    listen 80; 
    server_name localhost; 
    location / { 
        proxy_pass         http://a.com; 

    } 
}

儲存重啟nginx

測試
當訪問a.com的時候,為了區分是轉向哪臺伺服器處理我分別在b,c站點下寫一個不同內容的index.html檔案,以作區分。

開啟瀏覽器訪問a.com結果,重新整理會發現所有的請求均分別被分配到B站點(localhost:9000)與C伺服器(localhost:9001)上,實現了負載均衡效果。

B站點處理頁面

 

c站點處理頁面

 

假如其中一個站點停止了會怎樣?
當某個站點停止了,是否會影響訪問呢?

我們先來看看例項,根據以上例子,假設C站點(localhost:9001)這個站點停止了(我們在IIS上把C站點停止)然後再來訪問看看。

訪問結果:

 

我們發現,當C站點(localhost:9001)停止了,所有的請求都會分配到B站點去處理。這樣,就不會擔心在負載均衡模式下因為某個站點的停止而影響使用者的正常訪問了。

最後
一、負載均衡不是nginx獨有,apache,IIS也可以實現負載均衡,但效能可能不如nginx。

二、多臺伺服器提供服務,但域名只解析到主伺服器,而真正的伺服器IP不會被ping下即可獲得,增加一定安全性。

三、upstream裡的IP不一定是內網,外網IP也可以。不過經典的案例是,區域網中某臺IP暴露在外網下,域名直接解析到此IP。然後又這臺主伺服器轉發到內網伺服器IP中。

四、某個站點無法訪問、不會影響網站正常執行,Nginx不會把請求轉發到已停止的站點

五、推薦幾個優秀文章

實戰windows下nginx負載均衡(請勿轉載)