1. 程式人生 > >nginx的反向代理與負載均衡

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   

www.jd.com;//被訪問權重是1/3

    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.靜態資源(單獨伺服器)