Nginx系列(五)--nginx+tomcat實現負載均衡

         Nginx佔有內存少,併發能力強,其實Nginx的併發能力確實在同類型的網頁伺服器中表現較好.眼下中國大陸使用Nginx站點用戶有:新浪,網易,騰訊等.html

        本文主要是基於Nginx搭建tomcat集羣.java


環境:nginx

         Win8.1,JDK 1.6 , Nginx1.9.3算法

Tomcat 7.0.63(兩個tomcatserver)後端

結構:緩存

                    

 

1、Nginx之反向代理


一、Nginx配置:

upstreamlocahost{
     #ip_hash;
     server192.168.24.17:8080  weight=1;
     server192.168.24.43:8080  weight=2;
}

二、效果:

                          

                        

 

          反向代理:對於client而言,它就像是演示server,並且client不需要進行不論什麼特別的設置.client反向代理的命名空間中的內容發送普通請求,接着反向代理將推斷向何處轉交請求,並將得到的內容返回給client,就像這些內容本來就是它本身的同樣.前面博客:Nginx是什麼?裏面介紹了.tomcat

 

2、Nginx之負載均衡

 

一、實例

a.Nginx配置

upstream192.168.24.17{
      #ip_hash;
     server192.168.24.17:8080  weight=1;
     server192.168.24.43:8080  weight=2;
}
    #gzip on;
 
    server {
        listen       8888;
        server_name  192.168.24.17;
 
       #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
   root   html;
          index  index.html index.htm;
  proxy_pass  http://192.168.24.17;
 
proxy_connect_timeout1;
proxy_send_timeout30;
proxy_read_timeout60;
       }
 
        error_page   500 502 503 504  /50x.html;
       location = /50x.html {
            root   html;
       }

 

b.配置說明:

a.Weight:權重,值越大,命中率越高session

b.上面標紅的地方:192.168.24.17,這三處要一致才幹實現負載均衡的效果.併發


c.實驗效果:



 



       說明:這個IP以及port號是nginx設置的名稱以及port號.訪問後能分別調用到後端不一樣的server.實現負載均衡效果.進一步可以看出本實例使用的是輪詢的方式,也就是負載均衡默認的方式.app

 

2.原理


1).upstream負載均衡模塊說明:

          upstreamNginxHTTP Upstream模塊,這個模塊經過一個簡單的調度算法來實現clientIP到後端server的負載均衡.在上面的設定中,聽過upstream指令指定了一個負載均衡的名稱爲192.168.24.17.這個名稱可以隨意指定,在後面需要用到的地方直接調用就能夠.

 

2).updtream支持的負載均衡算法

Nginx的負載均衡模塊眼下支持4種調度算法.

  1. 輪詢(默認).每個請求按時間順序逐一分配到不一樣的後端server,假設後端某臺server宕機,故障系統被本身主動提出,使用戶訪問不受影響.Weight指定輪詢權值,Weight值越大,分配到的訪問概率越高,用於後端每個server性能不均的狀況下.
  1. ip_hash 每個請求按訪問IPhash結果分配,這樣來自同一個IP的訪客固定訪問一個後端server,有效攻克了動態網頁存在的session共享問題.
  2. fair這是比上面兩個更加智能的負載均衡算法.這樣的算法可以根據頁面大小和載入時間長短智能地進行負載均衡,也就是根據後端server的響應時間來分配請求,響應時間短的優先分配.Nginx自己是不支持fair,假設需要使用這樣的調度算法,必須下載Nginxupstream_fair模塊.
  3. url_hash此方法按訪問urlhash結果來分配請求,使每個url定向到同一個後端server,可以進一步提升後端緩存server的效率.Nginx自己是不支持url_hash,假設需要使用這樣的調度算法,必須安裝Nginxhash軟件包.

 

3).upstream支持的狀態參數

HTTP Upstream模塊彙總,可以經過server指令指定後端server的IP地址和port,同一時候還可以設定每個後端server在負載均衡調度中的狀態.常常使用的狀態有:

  1. down,表示當前的server臨時不參與負載均衡.
  2. backup,預留的備份機器.當其它所有的非backup機器出現問題或者忙的時候,纔會請求backup機器,所以這才記起的眼裏最輕.
  3. max_fails,贊成請求失敗的次數,默以爲1.當超過最大次數時,返回proxy_next_upstream模塊定義的錯誤.
  4. fail_timeout,在經歷了max_fails次失敗後,暫停服務時間.max_fails可以和fail_timeout一塊兒使用.

:當負載調度算法爲ip_hash,後端server在負載均衡調度中的狀態不能使weightbackup.

 

        經過這樣的方式,當咱們的站點訪問量愈來愈大時,咱們就能承受不少其它的壓力,並且能夠動態的加入server.配置負載均衡很是easy,那麼怎樣實現多臺server之間session的共享呢?下篇繼續介紹.

 

注意:nginx放到中文文件夾下,啓動時會有問題.

打印出來的日誌:

        [emerg] 10744#10916: CreateFile()"E:\02 Java內容學習彙總\Nginx\nginx-1.4.7/conf/nginx.conf"failed (1113: No mapping for the Unicode character exists in the targetmulti-byte code page)

相關文章
相關標籤/搜索