Tomcat负载均衡器解决方案

Sot*_*lis 7 java tomcat load-balancing

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

Ste*_*fan 6

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

在您的网络服务器上:

1)安装apache2和modjk:

sudo apt-get install apache2 libapache2-mod-jk
sudo a2enmod jk
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

JkWorkersFile   /etc/apache2/workers.properties
JkLogFile       /var/log/apache2/mod_jk.log
JkShmFile       /tmp/jk-runtime-status
JkLogLevel      info
Run Code Online (Sandbox Code Playgroud)

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

JkMount /MyApp       balancer
JkMount /MyApp/*     balancer

JkMount /modjkstatus lbstats
Run Code Online (Sandbox Code Playgroud)

在您的Tomcat服务器上:

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

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

    <Engine jvmRoute="node1" ...
    
    Run Code Online (Sandbox Code Playgroud)
  4. 为最简单的配置添加"Cluster"元素

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
    
    Run Code Online (Sandbox Code Playgroud)

6)将应用程序部署到所有tomcats,并将可分发元素添加到web.xml.

<distributable/>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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