Nginx負載均衡+tomcat+session共享

本文,是筆者工做之餘寫的,第一是把以前打系統框架的步驟記錄下來。第二是將這個過程,談不上經驗,奉獻給正在撘這種框架遇到各類bug,各類問題的人們。javascript

看這個以前首先你須要已經用nginx+tomcat+session共享打過框架,可是沒有成功,遇到種種問題。便可參考此文。文章比較簡潔,但全是精華。css

對了,本文是基於windows平臺下的。html

好了,言歸正傳!
——————————————————————————————————————————————————java

  1. 下載Nginx ;下載地址:http://nginx.org/node

  2. 下載tomcat;下載地址:http://tomcat.apache.org/download-60.cgi linux

  3. 下載memcached-win32nginx

  4. 下載一扒拉Session共享所用的jarweb

 

 

  1. Nginx下載解壓以後獲得這樣的列表:apache

  2. 配置nginx.conf;新增proxy.confgzip.confwindows

  3. Nginx.conf

#Nginx所用用戶和組,window下不指定
#user  niumd niumd;
 
#工做的子進程數量(一般等於CPU數量或者2倍於CPU)
worker_processes  4;
 
#錯誤日誌存放路徑
error_log  logs/error.log  info;
 
#指定pid存放文件
pid        logs/nginx.pid;
 
events {
    #使用網絡IO模型linux建議epoll,FreeBSD建議採用kqueue,window下不指定。
    #use epoll;
   
    #容許最大鏈接數
    worker_connections  2048;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    access_log  logs/access.log;
         fastcgi_intercept_errors on;
        
 
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
 
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;
 
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
 
    #keepalive_timeout  75 20;
         #keepalive_timeout  0;
 
    include    gzip.conf;
         include    proxy.conf;
        
    upstream localhost {
      #ip_hash;
      server localhost:18081 weight=3;
      server localhost:18080 weight=1;
     }
 
    server {
            listen       80;
            server_name  localhost;  
                            #自定義40X或者50X頁面的時候須要開啓 fastcgi_intercept_errors on;(上面已經開啓) 
                            error_page  404     http://127.0.0.1/404.html;
                           
                            #定義網站首頁
                            #root:定義網站首頁存放地址
                            #index:定義網站首頁名稱
                            location / {   
                                     root D:/test; 
                                     index main.html; 
                            } 
                           
                            #定義靜態資源存放地址
                            location ~ \.(html|js|css|png|gif|jpg|jpeg|bmp)$ {   
                                     root D:/test; 
                            }
        
                            #將jsp的請求轉移到tomcat裏面
            location ~ \.(jsp)$ {
                               proxy_connect_timeout   3;
                               proxy_send_timeout      30;
                               proxy_read_timeout      30;
                    proxy_pass http://localhost;
            }
   }
}


 

gzip.conf:

gzip               on;
gzip_min_length    1000;
gzip_types           text/plain text/css application/javascript application/x-javascript;


 

proxy.conf:

proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   300;
proxy_send_timeout      300;
proxy_read_timeout      300;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;


 

至此Nginx已經配置成功。雙擊目錄下面的nginx.exe 便可打開。

訪問127.0.0.1將顯示你在Nginx.conf中配置的:

       

  location / {   
               root D:/test; 
               index main.html; 
            }

main.html頁面

 

由此看出,已經將靜態資源文件分開。

 

2 . tomcat 

         我使用的是tomcat6.X;tomcat拷貝2份,分別將tomcat的端口改變。若是不在同一臺機子上則不用更改。如下列出更改的地方:

         Conf\server.xml

         A:  <Server port="18005" shutdown="SHUTDOWN">

         B:  <Connector port="18080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

        C:  <Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

         D:     <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

         jvmRoute="tomcat1"是作Session共享的時候使用的。

         同理,配置tomcat2!

        

因爲上面的Nginx.conf已經添加了兩臺tomcat因此,如今啓動Nginxtomcat 訪問127.0.0.1/project/index.jsp  即能看出Nginx負載均衡,將請求分發到不一樣的tomcat中。

 

以上就是Nginx+tomcat負載均衡,百度一下這種一大堆!

 

  1. 安裝memcached,並啓動。

  2. a)         下載session共享須要的jar

i.                  

 

配置context.xml文件,以下:

添加下面的代碼:

<Manager       className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
                                     memcachedNodes="n1:127.0.0.1:11211" 
                                     sticky="false" 
                                     sessionBackupAsync="false" 
                                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|jpeg|bmp|css|js|html|htm)$" 
                                     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
      />


通過上面的配置,則表明Nginx負載均衡,靜態動態請求分開+tomcat集羣+msmsession共享成功!!!

 

結果以下:

同一瀏覽器中:

不一樣瀏覽器中:

相關文章
相關標籤/搜索