用Nginx搭建IIS集群實現負載均衡


長話短說,我們用Nginx來搭建一個簡單的集群,實現Web應用的負載均衡,架構圖如下:

 

 兩台Web服務器,一台靜態資源服務器,因為是演示,我們以網站形式部署在本機IIS中

一台Nginx代理服務器,安裝到本機的Linux虛擬機中,參考 CentOS下Nginx安裝與配置

 

網站部署

新建三個文件夾,用於網站部署

 在IIS中新建三個站點,分別指向以上三個目錄,兩台WEB端口是9527,9528,靜態資源站點端口9529

新建兩個HTML網頁 index.html,內容分別是 This is localhost:9527 和 This is localhost:9528,發布到9527和9528網站下

<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>test</title>
</head>
    <body>
        <h1>This is localhost:9527</h1>
        <img src="/images/cnblog.gif">
    </body>    
</html>

到9529網站下新建一個images文件夾,放入一張圖片cnblog.gif

預覽下這三個網站,都是OK的,9527和9528網站目錄下沒有cnblog圖片,所以顯示失敗,后面圖片將從資源服務器9529去取。

 

配置Nginx

在CentOS命令環境下,Nginx啟動和停止的命令:

cd /usr/local/nginx/sbin/  進入Nginx運行目錄
./nginx  啟動
./nginx -s reload  重新加載配置
./nginx -s quit:   處理完畢后退出
./nginx -s stop:   強制殺掉Nginx進程

啟動成功,在瀏覽器訪問Nginx代理服務器IP(192.168.149.129)可以看到如下頁面

 

下面來更改配置,用vi編輯器打開nginx.conf文件,配置服務器集群

upstream是配置集群,192.168.92.1是我本機的IP,weight是權重,9527的權重是1,9528的權重是2,訪問比率是,Nginx會將請求轉發給9527一次,然后轉發給9528兩次,如此輪詢;

ip_hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一台Web服務器,可以解決session的問題,但是客戶端IP也會變換,那這招就不好使,還是推薦用分布式緩存如Redis來保持session,這里把ip_hash注釋掉了;

第一個location配置了默認請求轉發給集群myserver,第二個請求是將指定文件的請求轉發給本機的9529端口(資源服務器)

配置好后,保存退出,用 nginx -t 測試一下配置是否正常,沒問題用 nginx -s reload 重新加載配置,直接運行

 

測試結果

在本機瀏覽器輸入Nginx代理服務器IP(192.168.149.129)當前顯示9527,刷新一下變成9528,刷新兩下變回9527,圖片也正常顯示,一個網頁分別從三台服務器取數據

 

 

現在我們停止9527這個站點(模擬某台服務器宕機了),再刷新網頁

網站仍然正常瀏覽,只是一直是顯示9528,這就是故障轉移

 

大功告成,用Nginx很容易就實現了負載均衡,當然Nginx的功能遠不止此……

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM