Terracotta+Tomcat+nginx实现session的共享

简介:

环境准备:(Nginx,tomcat的安装部署本例不赘述。)

         192.168.1.13     nginx

         192.168.1.225    tomcat7terracotta

         192.168.1.226    tomcat7

   

部署terracotta+tomcat集群:

 

一:安装java程序至系统,配置java环境。

1
2
3
# vi /etc/profile
export  JAVA_HOME= /usr/local/java
export  PATH= /usr/local/java/bin :$PATH



二:部署单terracotta服务。

下载terracottahttp://www.terracotta.org/downloads

本例使用terracotta3.7.7版本,每个版本的部署配置略有不同。

1
2
3
4
# tar -zxvf terracotta-3.7.7.tar.gz
# mv terracotta-3.7.7.tar.gz /usr/local/terracotta
  开启terracotta服务:
# /usr/local/terracotta/bin/start-tc-server.sh &

 


三:整合Tomcat,使之成为terracotta的客户端。

复制terracotta的相关jar包到Tomcatlib目录下:(tomcat家目录以$TOMCAT_HOME替代)

1
2
# cp /usr/local/terracotta/common/terracotta-toolkit-1.6-runtime-5.7.0.jar $TOMCAT_HOME/lib/
# cp /usr/local/terracotta/sessions/terracotta-session-1.3.7.jar $TOMCAT_HOME/lib

修改context.xml文件,添加terracotta连接配置:

1
2
# vi $TOMCAT_HOME/conf/context.xml
<ValveclassName= "org.terracotta.session.TerracottaTomcat70xSessionValve" tcConfigUrl= "192.168.1.225:9510" />

集群中的Tomcat配置都基本如上。

 

 

四:配置nginx,使用loadblance方式访问后端tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# vi/usr/local/nginx/conf/nginx
upstream  session
{
    server 192.168.1.225:8080 weight=5 max_fails=2 fail_timeout=30s;
    server 192.168.1.226:8080 weight=5 max_fails=2 fail_timeout=30s;
}
  
server {
     listen 80 default_server;
     server_name 0.0.0.0;
  
     location  /session
     {
      proxy_passhttp: //session ;
     }
}

 

 

五:开启tomcatnginx

1
2
3
13:  # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
225: # $TOMCAT_HOME/bin/startup.sh
226: # $TOMCAT_HOME/bin/startup.sh


 

六:session测试。

在所有tomcatsession配置目录下,新建session测试页面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#vi test.jsp
<%@ pagesession= "true"  %>
<html>
< head >
     <title> test  Host1< /title ><!--  //Host2 就写为 "test Host1"  以示区分 -->
< /head >
<body>
<%
     out.println( "SessionId:" +request.getSession().getId()+ "<br />" );
     out.println( "CreationTime:" +request.getSession().getCreationTime());
  
     Stringname=(String)session.getAttribute( "name" );
     if (name==null||name.equals( "" )){
         session.setAttribute( "name" , "HelloHost1!" );  //Host2 就写为 "Hello Host2!"
        out.println(session.getAttribute( "name" ));
     } else {
         out.println(name);
     }
%>
< /body >
< /html >


使用nginx跳转访问tomcattest.jsp页面,效果如下:

 

wKioL1fFOXqzYhTaAAAz4Y6uFIM361.jpg

wKiom1fFOXriA59FAAA1MCJULTo530.jpg

刷新页面多次,可以清楚看到页面是在两个tomcat之间互相跳转。SessionId除了最后的标识改变外,其余的都保持一直,且内容value一直都是HelloHost2。证明了页面的session id 与内容都保持了一直,session共享是生效的。

   

另外,还可以在terracotta服务器上开启监控工具,来查看集群状态:

1
#/usr/local/terracotta/bin/dev-console.sh



Terracotta双机配置:

部署两台Terracotta服务器,在Terracotta目录下,新建tc-config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#vi tc-config.xml
<?xmlversion= "1.0"  encoding= "UTF-8" ?>
<!--All content copyright Terracotta, Inc., unless otherwise indicated.  
     All rights reserved. -->
<tc:tc-config
xsi:schemaLocation= "http://www.terracotta.org/schema/terracotta-5.xsd"
xmlns:tc= "http://www.terracotta.org/config"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" >
   <servers>
     <!-- Sets where the Terracotta servercan be found. Replace the value 
of          host with the server's IP address.-->
     <server host= "192.168.1.225"  name= "Server1" >
       <data>%(user.home) /terracotta/server-data < /data >
      <logs>%(user.home) /terracotta/server-logs < /logs >
     < /server >
     <!-- If using a standby Terracottaserver, also referred to as an 
ACTIVE-PASSIVEconfiguration, add the second server here. -->
     <server host= "192.168.1.226"  name= "Server2" >
      <data>%(user.home) /terracotta/server-data < /data >
      <logs>%(user.home) /terracotta/server-logs < /logs >
     < /server >
<!--If using  more  than one server, add an <ha> section. -->
     <ha>
        <mode>networked-active-passive< /mode >
        <networked-active-passive>
               <election- time >5< /election-time >
        < /networked-active-passive >
     < /ha >
   < /servers >
   <!-- Sets where the generated client logsare saved on clients. -->
   <clients>
     <logs>%(user.home) /terracotta/client-logs < /logs >
   < /clients >
< /tc :tc-config>


 

然后分别用该配置文件,开启terratocca服务。

225

1
#/bin/start-tc-server.sh-f /usr/local/terracotta/tc-config.xml -n Server1 &

226

1
#/bin/start-tc-server.sh-f /usr/local/terracotta/tc-config.xml -n Server2 &










本文转自 icenycmh 51CTO博客,原文链接:http://blog.51cto.com/icenycmh/1844360,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
42 1
|
3月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
4月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
35 0
|
4月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
50 1
|
18天前
|
运维 Java 应用服务中间件
Nginx+Tomcat动静分离及Nginx优化(企业案例)
Nginx+Tomcat动静分离及Nginx优化(企业案例)
|
5月前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
181 0
|
5月前
|
负载均衡 算法 应用服务中间件
Nginx+Tomcat实现反向代理与负载均衡入门
Nginx+Tomcat实现反向代理与负载均衡入门
190 0
|
Web App开发 Java 应用服务中间件
|
17天前
|
XML Java 应用服务中间件
Tomcat_servlet部署、编译、配置、打包
Tomcat_servlet部署、编译、配置、打包
21 0
|
2天前
|
IDE Java 应用服务中间件
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
JDK1.6.0+Tomcat6.0的安装配置(配置JAVA环境)
13 1