Terracotta是一个JVM级的开源群集框架,提供了HTTP会话复制、分布式缓存、POJO集群,采用代码注入方式实现分布式应用的协调。Dave Klein在他的博文中讲述了如何使用Terracotta对Tomcat上的Grails应用进行集群。
Dave Klein的配置步骤简述如下:
- 在这里下载Terracotta,将下载的文件包解压到适当的位置,设置Terracotta的环境变量TERRACOTTA_HOME;
- 将TERRACOTTA_HOME/sessions/terracotta-session-1.0.0.jar拷贝至CATALINA_HOME/lib下;
- 在Grails应用的web-app/META-INF下创建context.xml,并在该文件中添加如下代码:
- 对需要集群的类,要实现serializable,比如:
- 将Grails应用发布到Tomcat上;
- 通过start-tc-server.sh(bat)命令启动Terracotta服务器;
- 如果要查看应用连接的情况,可以使用Terracotta Developer Console,通过dev-console.sh(bat)命令启动。
<Context>
<Valve className="org.terracotta.session.TerracottaTomcat60xSessionValve"
tcConfigUrl="localhost:9510"/>
</Context>
这里className需要跟Tomcat的版本保持一致,具体情况可参见Terracotta的文档。tcConfigUrl指的是要装入Terracotta服务器的配置,localhost是Terracotta的主机名,9510是Terracotta DSO(Distributed Shared Object)的端口。
class TekEvent implements Serializable {
//...
配置完毕,启动Tomcat,访问你的Grails程序!
下面做一个小的试验,来验证一下Terracotta的会话保留功能:
- 登录到Grails程序中,进入到页面中;
- 停止Tomcat;
- 重新启动Tomcat;
- 返回到第一步中的页面,刚才登录的用户信息还在呢!
Terracotta还提供了其他功能,比如分布式缓存、POJO集群以及管理应用服务器的水平/垂直集群。可以根据应用程序的实际情况,选择使用Terracotta的功能。
关于Dave Klein的详细配置步骤,请参见原文

最新评论
2 周 3 天之前
2 周 5 天之前
4 周 5 天之前
5 周 2 天之前
5 周 3 天之前
5 周 6 天之前
6 周 4 天之前
11 周 6 天之前
13 周 5 天之前
15 周 3 天之前