Windows平臺分散式架構-負載均衡(高併發)
緣由
單純想在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
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平臺的解決方案需要繼續思考。