Nginx代理Tomcat負載均衡 實現session

下載軟件:

wget http://www.minunix.com/docs/web/openssl-1.0.1c.tar.gz
Wget http://www.minunix.com/docs/web/pcre-8.31.tar.gz
wget http://www.minunix.com/docs/web/zlib-1.2.7.tar.gz
wget http://www.minunix.com/docs/web/nginx-1.2.8.tar.gz
wget http://nginx-upstream-jvm-route.googlecode.com/files/nginx-upstream-jvm-route-0.1.tar.gz



環境安裝:

tar xf openssl-1.0.1c.tar.gz && tar xf pcre-8.31.tar.gz && tar xf zlib-1.2.7.tar.gz
tar xf nginx-upstream-jvm-route-0.1.tar.gz

JDK安裝就略過了 只需要下載安裝然後在/etc/profile添加路徑就行了

export JAVA_HOME=/usr/java/jdk1.7.0_09
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin


安裝nginx

tar xf nginx-upstream-jvm-route-0.1.tar.gz
tar zxvf nginx-1.2.8.tar.gz
cd nginx
patch -p0 < ../nginx-upstream-jvm-route/jvm_route.patch  ##這一步很重要 不執行的話後面的nginx。conf配置會報錯jvm錯誤
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module
--with-http_stub_status_module --with-select_module --with-poll_module
--with-http_sub_module
--with-http_ssl_module
--with-md5=/usr/lib64
--with-sha1=/usr/lib64
--pid-path=/usr/local/nginx/var/run/nginx.pid
--with-pcre=/usr/local/soft/pcre-8.21
--with-zlib=/usr/local/soft/zlib-1.2.7
--with-openssl=/usr/local/soft/openssl-1.0.1d
--add-module=/usr/local/soft/nginx_upstream_jvm_route/
make && make install


##到此支持jvm-route模塊的nginx安裝完畢 下面是配置文件nginx.conf

user  nginx nginx;
worker_processes  1;
pid        logs/nginx.pid;
events {
use epoll;
worker_connections  1024;
}
http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
tcp_nopush     on;
keepalive_timeout  35;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip  on;
gzip_types   text/javascript text/plain text/css application/xml application/x-javascript;
gzip_disable    "MSIE [1-6]\.(?!.*SV1)";
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Connection Close;
server_names_hash_max_size 1024;
server_names_hash_bucket_size 1024;
upstream minunix.com {
server 192.168.43.139:8080  ;
server 192.168.43.139:9080 ;
ip_hash;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}
server {
listen       80;
server_name  localhost;
root /var/www;
index index.jsp index.html index.htm;
charset utf-8;
#access_log  logs/host.access.log  main;
location / {
proxy_pass http://minunix.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
client_max_body_size 0;
location ~ .*\.(php|php5)?$
    {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }
    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }
}
#error_page  404              /404.html;
error_page   500 502 503 504  /50x.html;
location = /50x.html {
#            root   html;
}
}
}


安裝tomcat 下載apache-tomcat 在/usr/local中有tomcat1 tomcat2

tomcat1修改

<Engine name="Catalina" defaultHost="localhost" >增加jvmRoute="tomcat1"

tomcat2修改

<Engine name="Catalina" defaultHost="localhost" >增加jvmRoute="tomcat2"
並且需要把原來默認的8080 8005 8009改成其他的端口我就改成9080 9005 9009




開始測試

tomcat1測試文件

vim /usr/local/tomcat1/webapps/aa/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
%>
<html>
  <head>
     </head>
       <body>
       888888
  <br />
 <%out.print(request.getSession()) ;%>
  <!--輸出session-->
   <br />
 <%out.println(request.getHeader("Cookie")); %>
  <!--輸出Cookie-->
      </body>
  </html>


tomcat2測試文件

vim /usr/local/tomcat2/webapps/aa/index.jsp
  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
%>
<html>
  <head>
     </head>
       <body>
        9999999
                                               
  <br />
 <%out.print(request.getSession()) ;%>
  <!--輸出session-->
   <br />
 <%out.println(request.getHeader("Cookie")); %>
  <!--輸出Cookie-->
      </body>
  </html>


啓動nginx和tomcat之後訪問http://192.168.43.139/aa/會發現tomcat1和tomcat2不斷在切換 這一步說明負載成功。那麼現在實現session。

修改nginx.conf將上面upstream一段修改爲如下

upstream minunix.com {
server 192.168.0.4:8080  srun_id=tomcat1;  ##不增加srun_id就會不斷兩個頁面訪問增加之後就實現了session
server 192.168.0.52:8080 srun_id=tomcat2;  ##
ip_hash;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}

重啓nginx

現在訪問頁面會不斷出現8888 或者99999 在一個頁面不會變 停止某個tomcat就會顯示另外一個


轉載http://www.minunix.com/2013/05/tomcatmemcachedsession/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章