nginx windows 環境模擬負載(簡單)
背景:隨著訪問量的增加和併發的提高,伺服器的壓力會越來越大,此時需要部署多臺伺服器來分攤壓力(分散式部署),
服務分攤開來,是資料前段分佈服務,即在服務層之前的分佈負載,此時需要一個工具將所有分散式伺服器和訪問進行條件負載連線;
nginx下載地址(windows環境模擬下載windows版本):
http://nginx.org/en/download.html
注:nginx下載後本地解壓時,解壓的資料夾不能帶中文,需要解壓到非中文資料夾,否早啟動不了報錯;
雙擊nginx.exe啟動檔案後,去工作管理員-->程序-->重尋找nginx程序,如果沒找到,去檢視nginx解壓目錄下的logs檔案下的
error.log檔案:
錯誤:failed (1113: No mapping for the Unicode character exists in the target multi-byte code page) 這個錯誤是因為解壓在中文目錄下了,改下解壓目錄名字為英文即可;
upstream 關鍵字後面的代理服務名字不要帶特殊字元,否則服務無法訪問(錯誤提示在tomcat控制檯顯示)
負載模型(簡單):
|------------------>tomcat1 |
|------------------>tomcat2 |
nginx|------------------>tomcat3 | ------------------------->服務層------->資料層
|------------------>tomcat4 |
|------------------>tomcat...... |
上面是基本的模型,這個nginx負載需要簡單的配置一下nginx,即在conf資料夾下編輯nginx.conf檔案:
多個tomcat配置在upstream 下面
配置完畢,瀏覽器輸入:localhost即可訪問配置負載的兩臺tomcat伺服器
注:nginx負載均衡有多種負載策略:
1:輪詢
每個請求按時間順序逐一分配到不同的應用伺服器,如果應用伺服器down掉,自動剔除,剩下的繼續輪詢
2:權重
通過配置權重,指定輪詢機率,權重和訪問比率成正比,用於應用伺服器效能不均的情況。
3:ip_雜湊演算法
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用伺服器,可以解決session共享的問題。
upstream localtomcat{
server 192.168.1.104:40 down;
server 192.168.1.104:50 weight=4;
server 192.168.1.104:60;
server 192.168.1.104:70 backup;
}
1)down
表示單前的server暫時不參與負載
2)Weight
預設為1.weight越大,負載的權重就越大。
3)max_fails
允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤
4)fail_timeout
max_fails 次失敗後,暫停的時間。
5)Backup
其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。