緣由
單純想在winodows平台部署分布式程序,微軟在IIS擴展的介紹中有涉及到Application Request Router + Web Farm + Url Rewriter可以實現分布式部署以及管理工具,但是看到相關資料發現這套方案對於windows的系統依賴程度太高了,而且涉及到的工具配置也是相當的多,所以追求簡單以及讓大家對於負載均衡有一個了解,我們選擇Nginx+IIS進行演示!(給我1分鍾,看完這一篇,我們用數據和圖表來感受)
負載均衡
(1)官方概念:負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
(2)簡單的說分配任務的時候為了達到最合理的安排會按照個人的能力去衡量,分配,每個人都有自己的能力范圍和開發功底,so服務器也一樣,對於請求也有自己的處理能力.負載均衡一定程度增加網站的可用性,與承載請求壓力的能力。
預熱
(1)負載均衡服務器nginx
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,這一篇我們主要用nginx作為負載均衡服務器,Nginx作為負載均衡服務器,既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理服務器對外進行服務。Nginx采用C進行編寫,不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。
(2)網站IIS
我們通過部署多台IIS站點進行壓力分攤
基礎准備
(1)創建測試站點
我們這里默認創建一個mvc程序,我在頁面加載過程中延遲0.5s,沒有其他復雜操作
我們默認准備好3個部署文件,方便橫向的擴展測試,不同文件的首頁分別修改為節點01,節點02,節點03
(2)配置負載均衡nginx
下載地址:http://nginx.org/en/download.html 我們最好下載Stable version穩定版本
follow me,進行nginx配置,我把下載的文件直接解壓到d盤符的nginx文件夾進行配置,打開D:\nginx\conf\nginx.config文件,修改內容如下圖
我們將nginx監聽端口修改為我們未被占用的端口,然后開啟nginx
nginx -t 檢查nginx配置
網站和 nginx都准備完畢
Getting Start
配置修改
默認nginx負載均衡服務器為BalanceNode-01 本機器測試
#啟動進程,通常設置成和cpu的數量相等 worker_processes 1; #工作模式及連接數上限 events { worker_connections 1024;#單個后台worker process進程的最大並發鏈接數 } #設定http服務器,利用它的反向代理功能提供負載均衡支持 http { #設定負載均衡的服務器列表 #weigth參數表示權值,權值越高被分配到的幾率越大 upstream web_pool { server 192.168.3.22:8081 weight=10; #本機器IIS部署BalanceNode-01 } server { listen 8080; #偵聽80端口 server_name web_pool; #定義使用www.xx.com訪問 #對 "/" 啟用反向代理 location / { proxy_pass http://web_pool; } } }
重新載入配置
再次訪問nginx地址,頁面直接變為我本機器配置的BalanceNode-01
我們使用上一篇提到的工具ApacheBench進行基准壓力測試 了解ab的請戳 here
(1)一台Nginx+1台IIS
#設定負載均衡的服務器列表 #weigth參數表示權值,權值越高被分配到的幾率越大 upstream web_pool { server 192.168.3.22:8081 weight=10; }
(2)一台Nginx+2台IIS
#設定負載均衡的服務器列表 #weigth參數表示權值,權值越高被分配到的幾率越大 upstream web_pool { server 192.168.3.22:8081 weight=10; server 192.168.3.24:8081 weight=10; }
(3)一台Nginx+3台IIS
#設定負載均衡的服務器列表 #weigth參數表示權值,權值越高被分配到的幾率越大 upstream web_pool { server 192.168.3.22:8081 weight=10; server 192.168.3.24:8081 weight=10; server 192.168.3.26:8081 weight=10; }
(4)效果測試
打開一個瀏覽器,分別輸入地址,恰巧我這三次分別打開了BalanceNode01,BalanceNode02,BalanceNode03
(5)結果繪圖
(6)總結
大家可以根據一個簡短測試感受負載均衡的平攤壓力,提高吞吐量的作用.為了降低影響到最小我的三個測試節點分別部署在不同機器上的,但是中途測試過程中仍然有偏差過大的情況,這時候我基本多次測試,但是總體偏差不大。這一篇我們介紹了負載均衡的高並發。但是仍舊有一些問題需要我們繼續思考.....
eg:我們只有一個nginx服務器,這一台是我們的入口,但是假設nginx G掉了,網站基本也就G掉了,所以網站並不是高可用的.這個在windows平台的解決方案需要繼續思考。