关于tomcat集群的想法

一直有兴趣的就是企业级应用,面对高并发,高性能要求的应用开发.可是以前都分不太清集群和负载均衡之间的联系和区别.
最近作了一些实践,对它们的概念有了一个比较清楚地认识.
负载均衡:主要focus在多台服务器之间的控制,针对的是面对高并发的情况如何分摊请求,着重的是session — server的sticky.
集群     :主要focus在多台服务器之间的状态同步,针对的是多台服务器之间状态同步,着重的是session状态.
 
动手配置了一把基于tomcat的负载均衡,本来还想动手配置一把基于tomcat的集群,但是读了官网文档以后还是放弃了这个打算.
 
主要原因很简单,tomcat集群的本质就是基于多播的多台服务器之间的session拷贝.按照官网介绍,这样的解决方案只能适用于比较小的cluster,而对于比较大的cluster,session同步以及session sticky failure带来的问题可能造成集群很大的问题,所以不建议使用.
 
当然另外一个原因是一直很迷的memcached,基于libevent的缓存服务器实现.网上对它的测试报告很多,性能非常的好.通过它可以非常好地实现SNA(Share nothing architecture), 很多大型网站都是用它来解决session同步,缓存的问题.当然其中也有同步延时之类的问题.但是相对于cluster,这样的多线程同步之间的问题更加清晰可见,网上也有很多讨论可以参考.希望有机会能做一个压力测试.
 
参考:
 
 
 
 

 

基于Ubuntu的Tomcat 负载均衡配置

Ubuntu:7.10
Tomcat:6.0.16
apache:2.2
JK       :1.2.26
 
Tomcat的负载均衡已经不是什么新鲜话题了.
主要的问题是Ubuntu下的Apache2.2,JK的安装文件结构略有不同,导致一般基于Linux的JK安装教程不是完全通用.
 
文件安装
Ubuntu就是这么得轻松暇意
sudo apt-get install apache2 libapache2-mod-jk
 
文件结构
libapache2-mod-jk的配置文件在/etc/libapache2-mod-jk/work.properties
apache2的配置文件都在/etc/apache2下.
和一般的配置不同的是/etc/apache2/httpd.conf是空的.
ubuntu下的配置文件是通过/etc/apache2/apache2.conf以及两个文件夹mods-enabled,sites-enabled来实现的
apache2.conf默认如下配置:
 
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
 
Tomcat的配置
修改{CATALINA_HOME}/conf/server.xml,增加红色部分内容.注意"worker1"需要和apache2中的worker.properties标示一致.
<Engine name="Standalone" defaultHost="localhost" jvmRoute="worker1"
 
Apache2的配置
安装libapache2-mod-jk的时候已经自动添加了/etc/apache2/mods-enabled/jk.load,包含了Load Module的部分配置.
然后在apache2.conf中增加如下配置(按照我的猜测,更加标准的做法是在/etc/apache2/mods-enabled/下创建jk.conf进行配置)
JkWorkerFile /etc/libapache2-mod-jk/worker.properties
JkMount /*.jsp router
JkMount /*/servlet router
JkMount /jkmanager/* jkstatus #用于监测Load Balancer状态
 
然后修改/etc/libapache2-mod-jk/worker.properties

worker.list=router 
worker.worker1.type=ajp13 
worker.worker1.host=localhost 
worker.worker1.port=8009 
worker.worker1.lbfactor=1  
 
worker.worker2.type=ajp13 
worker.worker2.host=localhost 
worker.worker2.port=8010 
worker.worker2.lbfactor=1  
 
worker.router.type=lb 
worker.router.balance_workers=worker1,worker2 

 
#用于监测Load Balancer状态
worker.list=jkstatus 
worker.jkstatus.type=status
 
运行
启动Tomcat
sudo {CATALINA_HOME}/bin/catalina.sh start
启动Apache
sudo /etc/init.d/apache2 restart
 
另外关键的是JK1.2默认的是Session Sticky,如果需要修改清参考reference.

 

无觅相关文章插件,快速提升流量