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环境。

# 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版本,每个版本的部署配置略有不同。

# 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替代)

# 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连接配置:

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

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

 

 

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

# 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

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测试页面。

#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服务器上开启监控工具,来查看集群状态:

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



Terracotta双机配置:

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

#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

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

226

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



本文出自 “扮演上帝的小丑” 博客,转载请与作者联系!

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
一、企业网络安全管理面临的新问题 现在计算机和移动智能设备越来越普及,有一些企业网用户不再满足于只让实名登记的、有实际办公用途的计算机上网,他们把家中的笔记本、智能手机、平板电脑带到单位,通过非法架设SOHO路由器、随身WIFI、安装免费WIFI软件等,绕过网络管理员的检测,实现非法接入企业网,然后就可以通过他们自己的设备实现一些移动平台的网络应用。这些SOHO路由器、随身WIFI的一个大卖点:“就是可以绕过检测,隐匿接入”,因为这些设备都可以关闭信号的广播发送,通过信号检测的方法也搜不到。 非法接入问题
什么是逻辑卷? LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,
========================================================== 一:MySQL主从复制规划 主库:(MySQLmaster)IP:10.0.0.52PROT:3306从库1:(MySQLslave)IP:10.0.0.52PORT:3307从库2:(MySQLslave)IP:10.0.0.52PORT:3308 ========================================================== 二:检查环境 (1)检

openstack-M版安装部署 - 2016-08-29 22:08:06

[openstack 信息简介 ] Openstack 项目是一个开源的云计算平台,它为广大云平台提供了可大规模扩展的平台,全世界的云计算技术人员创造了这个项目,通过一组相互关联的服务来提供了 Iaas 基础解决方案,每一个服务都通过提供自身的 API 来提供服务,个人或者企业完全可以根据自身的需求来安装一部分或者全部的服务。 通过下面一张表格来描述一下当前 openstack 的各个组件及功能。 Service Project name Description Dashboard Horizon 通过提
一、前言 Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统,据说是源于Basecamp的ror版而来,支持多种数据库,有不少自己独特的功能,例如提供wiki、新闻台等,还可以集成其他版本管理系统和BUG跟踪系统,例如 Perforce 、SVN、CVS、TD等等。这种 Web 形式的项目管理系统通过“项目(Project)”的形式把成员、任务(问题)、文档、讨论以及各种形式的资源组织在一起,大家参与更新任务、文档等内容来推动项目的进度,同时系统利用时间线
一、Ansible介绍 1 、简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory
挂载概念简述 : 根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“ 挂载 ”,此目录即为“ 挂载点 ”,解除此关联关系的过程称之为“ 卸载 ” 1.挂载:根文件系统外通过关联至根文件系统上的某个目录来实现访问 2.挂载点:mount_point,用于作为另一个文件系统的访问入口; (1) 事先存在; (2) 应该使用未被或不会被其它进程使用到的目录; (3) 挂载点下原有的文件将会被隐藏; 挂载与卸载 挂载方法 :mount DECE MOUNT_
mha下载地址,需要翻墙 https://code.google.com/p/mysql-master-ha/ 管理软件 mha4mysql-manager-0.52-0.noarch.rpm 节点软件 mha4mysql-node-0.52-0.noarch.rpm 环境介绍Centos6.7X64192.168.30.210monitor192.168.30.211db1(master)192.168.30.212db2(备master)192.168.30.213db3192.168.30.214d
我在刚开始接触IO重定向时,经历了由懂到不懂然后了然的过程,当然现在的我也不可能说对于IO重定向就彻底懂了,只是在解决一些问题或实现某些结果时不会因为IO重定向的问题而迷惑了。 什么叫IO重定向? 为了解释这个问题,我们要先明白什么叫IO,什么叫做程序的数据流。 什么叫IO? 在Linux或计算机领域IO指的是信息的输入和输出。 在Linux中可用于输入的设备:文件(Linux中一切皆文件) 具体包括:键盘设备、文件系统上的常规文件、网卡等。 在Linux中用于输出的设备:文件 具体包括:显示器、文件系统
认真的测试过网上的大多数文章和版本,真正能一次性测试通过的文章太少了,需要反复的推敲,反复的查阅资料,才能真正的测试成功,所以,在此背景下,总结了Rsync,加上自己的理解分享出来; 1、 原理篇 Rsync,故名思议,是一个远程数据同步工具,可以镜像整个目录树和文件系统,也可以保持源文件的权限,时间和软硬链接,可以优化数据,文件重复数据的删除,也可以在LAN/WAN之间快速的同步多台主机的数据,这主要得益于Rsync的压缩和Rsync的核心算法,其算法,是本地和远程两台主机之间的文件达到同步并保持一致,