Nginx + Jetty 基于wadi的集群配置

HatsuneMiku 2011-06-19

最先做的是nginx + Tomcat的集群,然而应用发布后发现UTF-8支持有问题,之前在debian linux上测试UTF-8是OK的,生产环境的linux是定制的,采用ttylinux的启动脚本,不包含jre6的话,系统镜像只有几十兆,在自己定制的linux上,tomcat的UTF-8解码有问题,弄了2天都没法解决,没办法,只好采用jetty做web服务器。

jetty的集群方式,在jetty官方站点的介绍中,有三种:

1、基于Terracotta方式  --  推荐方式,大型集群使用,但缺点是要同时运行Terracotta服务

2、基于wadi方式 -- 本文采用方式,小集群使用,无需其他服务

3、基于jdbc共享session的方式 -- 另一种选择,看不出优点。

经过比较,我最后选择了wadi方式,一个原因是我的集群节点只有2个,属于小集群,第二个原因是不需要另外的服务。

配置:

1、下载jetty,我下载了最新版6.1.26,解压。

2、下载maven,安装。

3、转到jetty-6.1.26\contib\wadi目录下,执行mvn install。

执行mvn install后,应该在jetty-6.1.26\lib\wadi目录下生成这一堆文件

aspectjrt-1.5.2a.jar
backport-util-concurrent-2.2.jar
cglib-nodep-2.1_3.jar
commons-codec-1.2.jar
commons-httpclient-3.0.jar
concurrent-1.3.4.jar
jcl104-over-slf4j-1.0.1.jar
jetty-wadi-session-manager-6.1.26.jar
juli-6.0.16.jar
regexp-1.3.jar
slf4j-simple-1.0.1.jar
tribes-6.0.16.jar
wadi-aop-2.0.jar
wadi-core-2.0.jar
wadi-group-2.0.jar
wadi-tribes-2.0.jar

修改jetty-6.1.26\etc\jetty.xml配置文件,添加如下内容:

  1. <Configure class="org.mortbay.jetty.webapp.WebAppContext">  
  2.   <Set name="contextPath">/myweb</Set>  
  3.   <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/myweb</Set>  
  4.   <Set name="extractWAR">false</Set>  
  5.   <Set name="copyWebDir">false</Set>  
  6.   <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>  
  7.   <New id="wadiCluster" class="org.mortbay.jetty.servlet.wadi.WadiCluster">  
  8.     <Arg>CLUSTER</Arg>  
  9.     <Arg><SystemProperty name="node.name" default="node01"/></Arg>  
  10.     <Arg>http://localhost:<SystemProperty name="jetty.port" default="8080"/>/myweb</Arg>  
  11.     <Call name="start"/>  
  12.   </New>  
  13.   <Set name="SessionHandler">  
  14.     <New class="org.mortbay.jetty.servlet.wadi.WadiSessionHandler">  
  15.       <Arg>  
  16.         <New id="wadiSessionManager" class="org.mortbay.jetty.servlet.wadi.WadiSessionManager">  
  17.           <Arg><Ref id="wadiCluster"/></Arg>  
  18.           <Arg type="int">2</Arg>  
  19.           <Arg type="int">24</Arg>  
  20.           <Arg type="int">360</Arg>  
  21.           <Arg type="boolean">true</Arg>  
  22.           <Arg type="boolean">false</Arg>  
  23.         </New>  
  24.       </Arg>  
  25.     </New>  
  26.   </Set>  
  27. </Configure>  

用如下命令分别在节点1和节点2运行:

Java -Dnode.name=node01 -Djetty.port=8080 -Djava.net.preferIPv4Stack=true -jar start.jar

java -Dnode.name=node02 -Djetty.port=8080 -Djava.net.preferIPv4Stack=true -jar start.jar

nginx配置:

参考网上其他文章即可

测试:

相关推荐