展示不使用Terracotta DSO如何集群Web Sessions。
1、要求
1)jdk1.6或者更高版本
2)Terracotta 3.7或者更高版本
3)所有被集群的对象需要实现序列化,如果不想实现序列化,必须使用Terracotta DSO定制Web Sessions的安装
2、安装Terracotta Sessions jar
1)为保证兼容性,请使用已安装的Terracotta的jar文件
2)为了使应用的web Sessions在集群中共享,添加下列jar文件到应用服务器的的lib目录中
${TERRACOTTA_HOME}/sessions/terracotta-session-.jar
${TERRACOTTA_HOME} 是指Terracotta的安装目录,
${TERRACOTTA_HOME}/common/terracotta-toolkit--runtime-ee- .jar
The Terracotta Toolkit JAR包含了Terracotta客户端类库,
3)上述session和toolkit的jar文件在各种应用服务器中的存放路径
Application Server | Suggested Location for Terracotta Sessions JAR File |
---|---|
JBoss AS (earlier than 6.0) | < jboss install dir>/lib |
JBoss AS 6.0 | < jboss install dir>/common/lib (REQUIRED) |
JBoss AS 7.0 or 7.1 | < jboss install dir>/WEB-INF/lib |
Jetty | WEB-INF/lib |
Tomcat 5.0 and 5.5 | $CATALINA_HOME/server/lib |
Tomcat 6.0 and 7.0 | $CATALINA_HOME/lib |
WebLogic | WEB-INF/lib |
3、配置web-session集群
1)Terracotta servers和Terracotta clients通过 Terracotta配置文件运行在集群中的应用服务器上,默认的配置文件是tc-config.xml,服务器启动的时候不指定配置文件就默认使用 tc-config.xml。
2)为了把Terracotta集群添加到我们的应用中,需要通过web.xml或者
context.xml文件指定Terracotta clients如何获取配置。
3)Jetty, WebLogic, and WebSphere需要添加以下配置到web.xml文件中
Container | Value of |
---|---|
Jetty 6.1 | org.terracotta.session.TerracottaJetty61xSessionFilter |
Jetty 7.4.1 | org.terracotta.session.TerracottaJetty74xSessionFilter |
WebLogic 9 | org.terracotta.session.TerracottaWeblogic9xSessionFilter |
WebLogic 10 | org.terracotta.session.TerracottaWeblogic10xSessionFilter |
WebSphere 6.1 | org.terracotta.session.TerracottaWebsphere61xSessionFilter |
WebSphere 7.0 | org.terracotta.session.TerracottaWebsphere70xSessionFilter |
4)Tomcat and JBoss AS 6.0 or Earlier
使用war包发布的应用,如果是tomcat,确保context.xml文件在/META-INF目录下,如果是JBoss,确保context.xml文件在/WEB-INF目录下。
context.xml文件内容如下:
{container-specific-class}根据实际的应用服务器类型选择:
Container | Value of className |
---|---|
JBoss Application Server 4.0 | org.terracotta.session.TerracottaJboss40xSessionValve |
JBoss Application Server 4.2 | org.terracotta.session.TerracottaJboss42xSessionValve |
JBoss Application Server 5.1 | org.terracotta.session.TerracottaJboss51xSessionValve |
JBoss Application Server 6.0 | org.terracotta.session.TerracottaJboss60xSessionValve |
Tomcat 5.0 | org.terracotta.session.TerracottaTomcat50xSessionValve |
Tomcat 5.5 | org.terracotta.session.TerracottaTomcat55xSessionValve |
Tomcat 6.0 | org.terracotta.session.TerracottaTomcat60xSessionValve |
Tomcat 7.0 | org.terracotta.session.TerracottaTomcat70xSessionValve |
例如在tomcat6.0中,context.xml内容如下:
确保Terracotta Value是context.xml文件中的第一个
如果在tomcat中使用了authenticator,在Terracotta集群运行的时候有可能会遇到UnsupportedOperationException
,在tomcat5.5以上可以禁用changeSessionIdOnAuthentication
来防止这种错误:
5)JBoss7.0 or 7.1
添加以下内容到WEB-INF/jboss-web.xml中
... ... org.terracotta.session.TerracottaJboss7xSessionValve tcConfigUrl localhost:9510
4、启动集群
1)启动 Terracotta server:
UNIX/Linux
${TERRACOTTA_HOME}/bin/start-tc-server.sh &
Microsoft Windows
${TERRACOTTA_HOME}/bin/start-tc-server.bat
2)启动应用服务器
3)启动Terracotta 控制台
UNIX/Linux
${TERRACOTTA_HOME}/bin/dev-console.sh &
Microsoft Windows
${TERRACOTTA_HOME}/bin/dev-console.bat
4)启动控制台后,可以看到集群中Terracotta Server和客户端
5、Terracotta配置
这里配置展示如何在分开的机器上运行服务器和客户端,增加容灾(高可用性),扩展集群和添加高可用性可以按照下面的步骤:
1)关闭Terracotta Cluster
2)创建Terracotta配置文件tc-config.xml:
3)在tc-config.xml中配置的每一台服务器机器上安装terracotta3.7.2
4)把tc-config.xml文件复制到每一台服务器中的terracotta Server可以访问的位置
5)在每一台服务器中按照上面步骤(2、安装Terracotta Sessions jar)安装Terracotta Sessions jar
6)在每一台应用服务器中配置web.xml或者context.xml
如果使用的是web.xml,按如下配置:
server.1.ip.address:9510,server.2.ip.address:9510
如果使用的是context.xml,按如下配置:
tcConfigUrl="server.1.ip.address:9510,server.2.ip.address:9510"
tc-config.xml中配置了多少台服务器,web.xml或者context.xml就要配置多少。
7)启动Terracotta Server
UNIX/Linux
${TERRACOTTA_HOME}/bin/start-tc-server.sh -f-n Server1 &
Microsoft Windows
${TERRACOTTA_HOME}/bin/start-tc-server.bat -f-n Server1
${TERRACOTTA_HOME}是指terracotta的安装目录
Server1是指在tc-config.xml文件中配置的ServerName
在每一台服务器上启动各自的Terracotta Server,注意启动的时候 -n 指定各自的ServerName,第二台和往后启动的Terracotta Server处于备用状态。
8)在每一台服务器上启动各自的应用服务器
9)启动Terracotta控制台查看集群