系統環境:
VirtualBox Manager
Centos6.4
nginx1.10.0
IP對應的機器名:
IP 機器名 角色名
10.0.0.139 [elk] client
10.0.0.136 [lvs-master] nginx server
10.0.0.137 [kvm] web server 1
一、正向代理
概念這裏不在介紹,可以參考此文http://my.oschina.NET/yoyoko/blog/147414。
1.1 環境介紹
1.2 配置介紹
Nginx server:(內網地址:10.0.0.136,外網地址:172.16.27.64)
使用VirtualBox Manager虛擬出雙網卡。
Nginx client:
只有一個內網網卡,通過訪問Nginx server去訪問internet,其實翻牆、肉雞、之類的俗稱就是這個原理。
二、反向代理
介紹文章同正向代理
2.1 環境介紹
1.下面來看下測試頁面:
2.看下效果:
2.2 配置介紹
看下結果:
代理多個web服務器:
三、負載均衡
負載均衡實現的方式有很多,常用的lvs四層負載均衡,nginx是七層負載均衡,可以網上查詢相關資料。
3.1 環境介紹
3.2 配置介紹
1.upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度算法來實現客戶端IP到後端服務器的負載均衡。在上面的設定中,通過upstream指令指定了一個負載均衡器的名稱1.2.3.4。這個名稱可以任意指定,在後面需要用到的地方直接調用即可。
2.Nginx的負載均衡模塊目前支持4種調度算法,下面進行分別介紹,其中後兩項屬於第三方調度算法。
-
輪詢(默認)。每個請求按時間順序逐一分配到不同的後端服務器,如果後端某臺服務器宕機,故障系統被自動剔除,使用戶訪問不受影響。Weight 指定輪詢權值,Weight值越大,分配到的訪問機率越高,主要用於後端每個服務器性能不均的情況下。
-
ip_hash。每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個後端服務器,有效解決了動態網頁存在的session共享問題。
-
fair。這是比上面兩個更加智能的負載均衡算法。此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據後端服務器的響應時間來分配請求,響應時間短的優先分配。Nginx本身是不支持fair的,如果需要使用這種調度算法,必須下載Nginx的upstream_fair模塊。
-
url_hash。此方法按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,可以進一步提高後端緩存服務器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調度算法,必須安裝Nginx 的hash軟件包。
3.upstream 支持的狀態參數
在HTTP Upstream模塊中,可以通過server指令指定後端服務器的IP地址和端口,同時還可以設定每個後端服務器在負載均衡調度中的狀態。常用的狀態有:
-
down,表示當前的server暫時不參與負載均衡。
-
backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,纔會請求backup機器,因此這臺機器的壓力最輕。
-
max_fails,允許請求失敗的次數,默認爲1。當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。
-
fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_timeout一起使用。
我們來看下具體配置:
4.測試結果
5.健康檢查
一般健康檢查都需要搞個keepalived,但nginx也有相應的參數可以設置。
-
max_fails,允許請求失敗的次數,默認爲1。當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。
-
fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間。max_fails可以和fail_timeout一起使用,進行健康狀態檢查。
6.測試下結果
7.ip_hash的負載均衡