1. 正向代理和反向代理
正向代理是一個位於客戶端【使用者A】和原始伺服器【伺服器B】之間的伺服器【代理伺服器Z】,為了從原始伺服器取得內容,使用者A向代理伺服器Z傳送一個請求並指定目標(伺服器B),然後代理伺服器Z向伺服器B轉交請求並將獲得的內容返回給客戶端。即代理伺服器替代訪問方【使用者A】去訪問目標伺服器【伺服器B】。客戶端必須要進行一些特別的設定才能使用正向代理。當然前提是要知道正向代理伺服器的IP地址,還有代理程式的埠。
用單機tomcat搭建的網站,在比較理想的狀態下能夠承受的併發訪問量在150到200左右。按照併發訪問量佔總使用者數量的5%到10%這樣計算,單點tomcat網站的使用者人數在1500到4000左右。對於一個為全國範圍提供服務的網站顯然是不夠用的,為了解決這個問題引入了負載均衡方法。負載均衡就是一個web伺服器解決不了的問題可以通過多個web伺服器來平均分擔壓力來解決,併發過來的請求被平均分配到多個後臺web伺服器來處理,這樣壓力就被分解開來。
反向代理正好與正向代理相反,對於客戶端而言代理伺服器就像是原始伺服器,並且客戶端不需要進行任何特別的設定。客戶端向反向代理的名稱空間(name-space)中的內容傳送普通請求,接著反向代理將判斷向何處(原始伺服器)轉交請求,並將獲得的內容返回給客戶端。
2. 安裝及啟動nginx
如果啟動不成功,說明80埠被佔用,可通過 netstat -ano|findstr ":80" 檢視
可通過修改 nginx-1.12.2\conf\nginx.conf 裡的預設的埠配置來啟動
nginx.conf 中節點作用:
-
worker_processes:工作程式個數,可配置多個
-
worker_connections:單個程式最大連線數
-
server:每一個server相當於一個代理伺服器
-
lister:監聽埠,預設80
-
server_name:當前服務的域名,可以有多個,用空格分隔(我們是本地所以是localhost)
-
location:表示匹配的路徑,這時配置了/表示所有請求都被匹配到這裡
-
index:當沒有指定主頁時,預設會選擇這個指定的檔案,可多個,空格分隔
-
proxy_pass:請求轉向自定義的伺服器列表
-
upstream name{ }:伺服器叢集名稱
nginx的三個常用命令:
啟動nginx: start nginx 關閉nginx: nginx -s stop 重新載入配置檔案: nginx -s reload //可以在不關閉nginx的情況下更新配置檔案.
3. nginx負載均衡配置
使用兩個tomcat伺服器演示(已配置好且都能正常使用),由於兩個tomcat版本不一樣,可以直接展現,這裡就先不新增專案了
配置 nginx-1.12.2\conf\nginx.conf
訪問同一網址 http://localhost:80 可發現頁面在兩個tomcat中來回切換
也可設定權重
注意,每次修改完配置需要重啟一下nginx。
4. 超時策略
如果叢集中的某個伺服器掛了,此時nginx分發請求到該伺服器時,如果沒有配置超時策略,會出現一段至少1分鐘的等待,超過了客戶端的響應時間,會造成客戶端超時情況,使Nginx報499。
主要介紹如下幾個引數:
- proxy_connect_timeout:與伺服器連線的超時時間,預設60s
- proxy_timeout:nginx接收後端伺服器的響應超時時間,預設值為10min,儘量取預設值
- fail_timeout:當該時間內伺服器沒響應,則認為伺服器失效,預設10s
- max_fails:允許連線失敗次數,預設為1
在nginx.conf中的配置:
設定客戶端響應時間=proxy_connect_timeout + fail_timeout*max_fails,如我的客戶端響應時間設定為3秒,那麼超時策略配置如下