長話短說,我們用Nginx來搭建一個簡單的集群,實現Web應用的負載均衡,架構圖如下: 兩台Web伺服器,一臺靜態資源伺服器,因為是演示,我們以網站形式部署在本機IIS中 一臺Nginx代理伺服器,安裝到本機的Linux虛擬機中,參考 CentOS下Nginx安裝與配置 網站部署 新建三個文件夾,用 ...
長話短說,我們用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的功能遠不止此……