Tomcat负载均衡器解决方案

时间:2012-03-10 19:01:07

标签: java tomcat load-balancing

我正在寻找一个与Tomcat一起使用的良好负载均衡器。我们的应用程序不会在会话上下文中存储任何内容,因此为同一用户重定向到同一服务器并不重要。我只是喜欢能够循环排队请求或基于每个服务器的个人负载排队的东西。我还希望能够将应用程序服务器添加到可用于处理请求的服务器,而无需重新启动负载均衡器。如果重要的话,我们在linux上运行应用程序。

1 个答案:

答案 0 :(得分:6)

如果您只需要Linux上的软件负载均衡器,请使用Apache Webserver2,Mod-Jk和Tomcat集群:

在您的网络服务器上:

1)安装apache2和modjk:

sudo apt-get install apache2 libapache2-mod-jk
sudo a2enmod jk

2)创建apache2可用的“workers.properties”文件。在某些情况下,会自动在/ etc / apache2目录中创建。该文件包含Tomcat服务器的lb配置,节点名称,ips和端口,即:

worker.list=balancer,lbstats

#node1
worker.node1.type=ajp13
worker.node1.host=NODE-IP
worker.node1.port=NODE-AJP-PORT
worker.node1.lbfactor=10

#more nodes here ... (change name in between)

#lb config
worker.balancer.type=lb
#turn off sticky session
worker.balancer.sticky_session=0

#add all defined node names to this list:
worker.balancer.balance_workers=node1

#lb status information (optional)
worker.lbstats.type=status

3)如果尚未自动创建,请在apache2配置文件中创建一个Mod-Jk部分。

JkWorkersFile   /etc/apache2/workers.properties
JkLogFile       /var/log/apache2/mod_jk.log
JkShmFile       /tmp/jk-runtime-status
JkLogLevel      info

4)将您的应用程序挂载到负载均衡器(apache2配置文件):

JkMount /MyApp       balancer
JkMount /MyApp/*     balancer

JkMount /modjkstatus lbstats

在Tomcat服务器上:

5)使用tarball包安装tomcat(比apt verison更好)。更改server.xml:

  1. 禁用http连接器。
  2. 启用AJP / 1.3连接器并设置您在此节点的workers.properties中定义的端口。
  3. 将具有正确节点名称的jvmRoute添加到“Engine”元素:

    <Engine jvmRoute="node1" ...
    
  4. 为最简单的配置添加“Cluster”元素

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
    
  5. 6)将应用程序部署到所有tomcats,并将可分发元素添加到web.xml。

    <distributable/>
    

    7)确保网络服务器可以访问tomcat服务器上的ajp端口,而其他任何人都无法访问。

    8)一个接一个地启动网络服务器和tomcats并检查日志(/var/log/apache2/mod_jk.log)。

    9)访问您的应用:http://mywebserver.com/MyApp

    10)检查(并拒绝访问)lb状态页面http://mywebserver.com/modjkstatus