nginx + jetty 基于wadi的集群配置
作者:Kiven Lee 2011-6-16
最先做的是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配置文件,添加如下内容:
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> <Set name="contextPath">/myweb</Set> <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/myweb</Set> <Set name="extractWAR">false</Set> <Set name="copyWebDir">false</Set> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set> <New id="wadiCluster" class="org.mortbay.jetty.servlet.wadi.WadiCluster"> <Arg>CLUSTER</Arg> <Arg><SystemProperty name="node.name" default="node01"/></Arg> <Arg>http://localhost:<SystemProperty name="jetty.port" default="8080"/>/myweb</Arg> <Call name="start"/> </New> <Set name="SessionHandler"> <New class="org.mortbay.jetty.servlet.wadi.WadiSessionHandler"> <Arg> <New id="wadiSessionManager" class="org.mortbay.jetty.servlet.wadi.WadiSessionManager"> <Arg><Ref id="wadiCluster"/></Arg> <Arg type="int">2</Arg> <Arg type="int">24</Arg> <Arg type="int">360</Arg> <Arg type="boolean">true</Arg> <Arg type="boolean">false</Arg> </New> </Arg> </New> </Set> </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配置:
参考网上其他文章即可
测试:
略