前段时间用tomcat搭建服务器老是遇到小猫自己崩溃的现象,后来从tomcat6换到7 ,情况依旧不容乐观,是在是被监控的邮件搞的头大,想起试试用nginx做前端来缓存一下静态文件,情况好转,但是时间长了小猫还是会崩溃,于是试想用tomcat7+tomcat6来跑服务负载一下,这样至少可以保证在一个崩溃的情况下另一个还活着,于是nginx前段代理+缓存跑后台6+7,果然很强力,有效的实现了网站的高可用,但是随之而来的问题是session的共享问题,一开始使用nginx是为了保证网站的高可用,但是对session这块没考虑过多,很多人说做seesion共享,那么害怕的是session风暴问题,还有就是多个网站的话个人觉得这个seesion复制不是一个好办法,也有人说用cookie来代替session,虽然不错,但是考虑到session对于某些敏感地方的重要性,部分地方还是不能放弃,哎悲催的session啊,后来权衡了一下,决定使用nginx的ip_hash 来做集群,起码可以保证一部分用户可用,于是配置修改了,从之前的轮询改为ip_hash 保证的一定的可用性的同时也保证了session的问题(虽然做测试的站不是很重要,session也无必要,但是对以后的部署大型系统有一定前瞻性,起码保证session问题和高可用高性能的问题都要权衡了这里暂时不表)
nginx 配置如下:
upstream tomcats {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

将池中的weight 去掉了,对于IP固定分配
对于这个tomcat多开不多说了。
监听配置为:
server {
server_name www.doman.com doman.com;
listen 80;
access_log off;
index index.jsp;
if ($host != 'www.doman.com' ) {
rewrite ^/(.*)$ http://www.doman.com/$1 permanent;
}
location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {
root /myserver/webapp/domain/ROOT;
expires 24h;
}
location / {
client_max_body_size 100m;
client_body_buffer_size 128k;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_connect_timeout 30s;
proxy_pass http://tomcats;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

多个网站的配置可以参见上面的配置列表,还有很多优化可以自己添加一些。
对于tomcat里面的server.xml配置不同域名映射的问题还要说吗?=。=
加上吧
server.xml修改配置

 

<Host name="www.domain.com"  appBase="/myserver/webapp/domain.com" unpackWARs="true" autoDeploy="true">        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="www.domain.com_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" resolveHosts="false"/></Host>

重启nginx 重启tomcat6和7
网站运行还不错,检测中,有问题会在以后出报告。
需要明确的问题,你的需求是什么 ,这个方法是否对你有效?
当一只猫死了之后将会有一部分可能会无法访问,没有轮询的方式可用性高,但是避免session问题,当然可以让tomcat来组播session共享,这个会在以后配置报告给出,
若是宕掉一只可以自动分发到可用的话,复活之后的用户是否可回归?暂无测试。有问题欢迎讨论,谢谢,高手请指导 不慎感谢。