不需要關閉防火牆來配置nginx實現負載均衡
企業伺服器隨著所部署專案的逐漸增多會面臨高併發的問題,這時候一般有兩個方向的處理策略:1、硬體;2、軟體,本著減輕成本和能不浪費就不浪費的原則,今天重點介紹第二點(軟體):使用nginx實現負載均衡。
今天同事在我原先部署的基礎上,增加了幾個專案,遇到了防火牆不關不能訪問的問題,我這裡重點講解下。
首先講點概念性的東西,不感興趣可pass
一、負載均衡的作用
1、轉發功能
按照一定的演算法【權重、輪詢】,將客戶端請求轉發到不同應用伺服器上,減輕單個伺服器壓力,提高系統併發量。
2、故障移除
通過心跳檢測的方式,判斷應用伺服器當前是否可以正常工作,如果伺服器期宕掉,自動將請求傳送到其他應用伺服器。
3、恢復新增
如檢測到發生故障的應用伺服器恢復工作,自動將其新增到處理使用者請求隊伍中。
二、Nginx實現負載均衡
同樣使用兩個tomcat模擬兩臺應用伺服器,埠號分別為8080 和8081
1、Nginx的負載分發策略
Nginx 的 upstream目前支援的分配演算法:
1)、輪詢 ——1:1 輪流處理請求(預設)
每個請求按時間順序逐一分配到不同的應用伺服器,如果應用伺服器down掉,自動剔除,剩下的繼續輪詢。
2)、權重 ——you can you up
通過配置權重,指定輪詢機率,權重和訪問比率成正比,用於應用伺服器效能不均的情況。
3)、ip_雜湊演算法
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用伺服器,可以解決session共享的問題。
2、配置Nginx的負載均衡與分發策略
通過在upstream引數中新增的應用伺服器IP後新增指定引數即可實現
3、nginx其他配置
1)down
表示單前的server暫時不參與負載
2)Weight
預設為1.weight越大,負載的權重就越大。
3)max_fails
允許請求失敗的次數預設為1.當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤
4)fail_timeout
max_fails 次失敗後,暫停的時間。
5)Backup
其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
三、使用Nginx的高可用
除了要實現網站的高可用,也就是提供n多臺伺服器用於釋出相同的服務,新增負載均衡伺服器分發請求以保證在高併發下各臺伺服器能相對飽和的處理請求。同樣,負載均衡伺服器也需要高可用,以防如果負載均衡伺服器掛掉了,後面的應用伺服器也紊亂無法工作。
實現高可用的方案:新增冗餘。新增n臺nginx伺服器以避免發生上述單點故障。具體方案詳見下文:keepalive+nginx實現負載均衡高可用
接下來直接講解如何配置
主要分為兩塊: upstream 與 server (只需要在conf配置檔案中這麼設定就行)
例項:
upstream furnace.e-plant.cn {
server localhost:8088;
}
server {
listen 80;
server_name furnace.e-plant.cn;
location / {
index index.html index.jsp article_new_list;
proxy_pass http://furnace.e-plant.cn;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
我同事就是忽略upstream的作用了,並沒有用到分配的功能,這裡還可以加入多網址的權重配置,這次不詳講哈
附:nginx樣例下載網址
https://download.csdn.net/download/knight_key/10716244