nginx的反向代理與負載均衡
1、概念:
正向代理:客戶端明確被訪問伺服器
反向代理:客戶端不清楚被訪問伺服器,只清楚代理伺服器
負載均衡
2、nginx負載均衡的實現
2.1、什麼是http upstream 模組
upstream mypro {
}
server{
location /{
proxy_pass hhtp://mypro;
}
}
主要實現輪詢演算法
ip_hash 指令
將通一個使用者引入同一個伺服器
upstream mypro{
ip_hash;//同一個ip使用者,會一直訪問第一次進入的伺服器。
server www.baiud.com;
server www.jd.com;
}
權重和ip_hash是衝突的,不能同事使用
2.2、server 指令(伺服器權重)
upstream mypro{
server www.baiud.com weight=2;//被訪問權重是2/3,
server www.jd.com;//被訪問權重是1/3
}
其它負載均衡實現(硬體實現,軟體實現:伺服器軟體,系統軟體等)
2.3 backup;
upstream mypro{
server www.baiud.com weight=2;//被訪問權重是2/3, 值越大,負載越大
server
server www.taobao.com backup; //備份機,只有非備份機都掛掉了才啟用
}
2.4 down;
upstream mypro{
server www.baiud.com weight=2;//被訪問權重是2/3,
server www.jd.com;//被訪問權重是1/3
server www.taobao.com down; //停機標誌,不會被訪問
}
整體配置:
負載均衡策略:
1.none(輪詢,權重油weight決定)
2.ip_hash 根據客戶端第一次分配的機器,以後都是這臺機器
//下面是第三方提供的
3.fair 動態的根據後端伺服器的負載能力進行選擇
4.url_hash 根據客戶端url資訊分配伺服器(適合訪問一些圖片,靜態頁面等)
3、nginx+tomcat 負載均衡配置
反向代理:
負載均衡
3.1負載均衡配置實現
2.5、下載第三方模組
如果nginx沒有安裝
1.
如果nginx安裝後:
2.執行make 然後在nginx的安裝目錄裡的objs目錄裡nginx(添加了第三方的編譯檔案),
3.關閉nginx
4.用objs裡的nginx 替換到sbin/裡的nginx檔案
3.2 負載均衡時session 的處理策略
1.將使用者鎖定在一個伺服器上 優點:簡單 缺點:缺乏容錯性
2.session 複製 優點:會及時同步session資訊 缺點:網路壓力
實現方式: 在tomcat裡的server-session-replication.xml 開啟session複製
然後在應用程式碼中。web.xml中設定,應用可以支援session複製
測試或者驗證時,可以建立一個session監聽器實現 httpSessionAttributeListener
3.session共享,將伺服器裡的session放在同一個地方
1.黏性session
不同的tomcat指定一個memcached,tomcat 主儲存
2.非黏性session
tomcat 不儲存session
實現方式:非黏性配置
3.3 叢集環境中應用程式碼應注意的問題
1.實體類序列化支援 一般是session 實體類 根據版本號
2.獲取使用者ip地址的方式,在代理
在程式碼中獲取ip裡的head裡的上述配置選項
其它頭配置資訊
動靜分離結構的預規劃
1.靜態資源(單獨伺服器)