Nginx + Jetty 基于wadi的集群配置
最先做的是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配置:
参考网上其他文章即可
测试:
略