nginx在LB Cluster集羣中也可以扮演一定的角色,即反向代理與負載均衡。在一個Web服務中,來自客戶端的請求可以經由nginx服務器轉發至後端服務器,並且按照一定的算法實現負載均衡。
1.反向代理
1)在192.168.10.17/24與192.168.10.77/24主機上安裝nginx,提供web服務。
編輯兩臺主機的主頁文件內容分別爲
inode17 page 和inode77 page
2)主機172.16.10.66提供nginx的反向代理服務
爲了與後端主機進行通信,此主機需要配置兩個IP接口,另一個爲192.168.10.66/24
ifconfig eth0:0 192.168.10.66/16
打開nginx的配置文件,在location段中添加一行
proxy_pass http://192.168.10.17; ##將客戶端請求反代至後端服務器
注:proxy_pass後面的路徑不帶uri時,其會將location的uri傳遞給後端主機;當proxy_pass後面的路徑是一個uri時,其會將location的uri替換爲proxy_pass的uri;
3)打開網頁測試
http://172.16.10.66
2.提供緩存
1)在172.16.10.66主機上,打開nginx配置文件,在http{}段添加下列行,指明緩存路徑,名稱等相關信息
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:1 keys_zone=pcache:10m;
在server{}段中添加下列幾行內容
proxy_cache pcache; ##引用上述定義的緩存
proxy_cache_key $request_uri; ## 緩存的關鍵字
proxy_cache_valid 200 302 1m; ## 緩存元素,指明要緩存的資源
proxy_cache_valid 301 1h;
proxy_cache_valid any 1h;
2)檢測語法錯誤,並重新載入配置文件
3)在另一臺主機上使用ab命令可以檢測添加緩存前後響應速度
3.負載均衡
nginx通過upstream模塊實現後端服務器的負載均衡
1)在172.16.10.66主機上,打開nginx配置文件,在http段定義upstream{}上下文
upstream test_lb {
server 192.168.10.17 weight=1; ## 指向後端服務器,權重默認爲1
server 192.168.10.77 weight=2;
}
注:可以在上述upsteam中定義算法
least_conn 最少連接調度算法
least_time header|last_byte; 最短平均響應時間和最少連接
ip_hash 源地址hash算法,將同一ip地址的訪問發往同一服務器
hash key [consistent] 基於指定的key的hash表實現請求調度
如 hash $request_uri consistent
hash $remote_addr
hash $cookie_name
2)更改location中proxy_pass爲:
proxy_pass http://test_lb;## 已定義的upstream
3)檢測語法錯誤,並重新載入配置文件
4)在客戶機上進行測試
輸入for i in `seq 10` ;do curl 172.16.10.66 ;done
可以看到兩臺服務器頁面比例爲1:2