nginx+resin+mysql實現session共享

 
resin 專業版具備http負載均衡的能力,我們這裏採用nginx來負載均衡resin的http請求,同時使用jvm做到session共享的效果.
 
mysql
 
二.安裝及初始化
1.安裝jdk
cp jdk-6u20-linux-x64-rpm.bin /usr/java
cd /usr/java
./jdk-6u20-linux-x64-rpm.bin ###時間有點長
rpm -ivh jdk-6u20-linux-amd64.rpm
##設置環境變量,
echo -en "export JAVA_HOME = /usr/java/jdk1.6
export PATH = $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
exportCLASSPATH=.:/usr/java/jdk1.6/lib:/usr/java/jdk1.6/jre/lib:$CLASSPATH"
>> /etc/profile
source  /etc/profile
java --version
##出現java版本說明安裝jdk成功
cd
2.安裝jvm&&nginx
tar zxvf pcre-8.02.tar.gz
cd pcre 8.02
./configure
make;make install
cd ..
tar zxvf nginx-0.8.34.tzr.gz
cd ..
tar zxvf  nginx-upstram*
mv nginx-upstram-jvm-route nginx0.8.34
cd nginx-0.8.34
##打補丁
patch -p0 < nginx-upstram-jvm-route/jvm_route.patch
##編譯
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=nginx_upstream_jvm_route
cd ..
3.安裝resin
tar zxvf  resin*
cd resin3.1.10
./configure --prefix=/usr/local/resin
make;make install
## 環境變量
echo "export RESIN_HOME=/usr/local/resiin " >> /etc/profile
source /etc/export
 
三.整合
1.配置及啓動resin
cd /usr/localresin
vi conf/resin.comf
###查找
<http address="*" port="8080"/>
###註釋掉
<!--http address="*" port="8080"/-->
###查找
<server id="" address="127.0.0.1" port="6800">
###替換成(3.1版本這個地方進行了改動)
<server id="1" address="127.0.0.1" port="6800">
<http id="" port="8080"/>
<server id="2" address="127.0.0.1" port="6801">
<http id="" port="8080"/>
<server id="3" address="127.0.0.1" port="6802">
<http id="" port="8080"/>
</server>
echo "rest" > webapp/ROOT/test.jsp
cp webapp/ROOT/index.jsp /webapp/ROOT/index.jsp_bak
echo > webapp/ROOT/index.jsp
vi webapp/ROOT/index.jsp
###add;( 測試代碼來源於互聯網)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
%>
<html>
  <head>
    </head>
      <body>
        this is a page
        <br />
       <%out.print(request.getSession()) ;%>
       <!--輸出session-->
        <br />
        <%out.println(request.getHeader("Cookie")); %>
      <!--輸出Cookie-->
      </body>
 </html
###啓動resin
啓動server 1:bin/httpd.sh -server 1 start
啓動server 2:bin/httpd.sh -server 2 start
啓動server 3:bin/httpd.sh -server 3 start
###整合nginx與resin
vi  /usr/local/nginx/conf/nginx.conf
 ###增加如下兩段(訪問jsp文件則proxy_pass到webgroup羣集)
http{
......
   upstream webgroup {
    server 127.0.0.1:8080 srun_id=1; ## 注意與resin server id對應
    server 127.0.0.1:8080 srun_id=2;
    server 127.0.0.1:8080 srun_id=3;
   
    jvm_route $cookie_JSESSIONID|sessionid;
 }
  .....................
server{
   listen       80;
   server_name  127.0.0.1 localhost;
   index index.html index.htm index.jsp;
   root  /usr/local/www;
   location ~ .*\.jsp$
   {
     proxy_pass http://webgroup;
     proxy_redirect    off;
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
     proxy_set_header  X-Real-IP  $remote_addr;
     proxy_set_header  Host $http_host;
   }
..........................
}
}
 
###啓動nginx
/usr/local/nginx/sbin/nginx
 
四.測試
links 127.0.0.1/test.jsp ###測試resin是否正常
links 127.0.0.1/index.jsp###測試session是否共享
可以使用不同的瀏覽器進行測試
同一個瀏覽器數次刷新後看看session id是否變化,如果不變化,說明jvm模塊是起了作用的
the end
 
五. 安裝mysql
我這裏使用rpm包安裝,源碼編譯安裝也可,主要就是mysql的jdbc驅動需要設置配置一下
rpm -ivh MySQL-client*
rpm -ivh MySQL-server*
tar zxvf mysql*
cp mysql-connector* /usr/local/resin
cp mysql-connector-java-5.1.12-bin.jar /usr/local/resin/lib
echo "JDBC_HOME=/usr/local/resin/mysql-connector-java-5.1.12" >> /etc/profile
source /etc/profile
###給root授權,注意這裏面不能是@localhost,resin調用jdbc類似於遠程讀取
mysql
GRANT ALL ON *.* TO root@'%';
use test;
create table test(age int not null primary key,name char(20));
INSERT INTO test (age,name) values ('20'','admin');
exit
###建立測試頁面,讀取name數值(測試代碼來源於互聯網)
 vi  /usr/local/resin/webapps/ROOT/test.jsp
###add;
<%@ page contentType="text/html;charset=GBK" %>
<%@ page language="java" import="java.sql.*"%>
<%
Connection conn = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
ResultSet RS_result=null;
%>
<html>
<head>
<title>虜芒</title></head>
<body>
<%
RS_result=stmt.executeQuery("select * from test");
String Name;
while(RS_result.next())
{
Name=RS_result.getString("username");
%>
<%=Name%>
<%
}
RS_result.close();
stmt.close();
conn.close();
%>
</body>
</html>
 
測試結果:
links 127.0.0.1/test.jsp
出現admin即表明測試成功
 
the end
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章