集群Grails应用

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,并在该文件中添加如下代码:
  • <Context>
        <Valve className="org.terracotta.session.TerracottaTomcat60xSessionValve"
      tcConfigUrl="localhost:9510"/>
    </Context>
    

    这里className需要跟Tomcat的版本保持一致,具体情况可参见Terracotta的文档。tcConfigUrl指的是要装入Terracotta服务器的配置,localhost是Terracotta的主机名,9510是Terracotta DSO(Distributed Shared Object)的端口。

  • 对需要集群的类,要实现serializable,比如:
  • class TekEvent implements Serializable {
    //...
    
  • 将Grails应用发布到Tomcat上;
  • 通过start-tc-server.sh(bat)命令启动Terracotta服务器;
  • 如果要查看应用连接的情况,可以使用Terracotta Developer Console,通过dev-console.sh(bat)命令启动。

配置完毕,启动Tomcat,访问你的Grails程序!

下面做一个小的试验,来验证一下Terracotta的会话保留功能:

  1. 登录到Grails程序中,进入到页面中;
  2. 停止Tomcat;
  3. 重新启动Tomcat;
  4. 返回到第一步中的页面,刚才登录的用户信息还在呢!

Terracotta还提供了其他功能,比如分布式缓存、POJO集群以及管理应用服务器的水平/垂直集群。可以根据应用程序的实际情况,选择使用Terracotta的功能。

关于Dave Klein的详细配置步骤,请参见原文

By huwh - Posted on 07 四月 2010