一尘不染

Tomcat负载平衡器解决方案

tomcat

我正在寻找与Tomcat搭配使用的良好负载平衡器。我们的应用程序不在会话上下文中存储任何内容,因此对于同一用户重定向到同一服务器并不重要。我只是想要一些可以按轮循样式或根据每个服务器的单独负载将请求排队的东西。我还希望能够将应用程序服务器添加到可用于处理请求的服务器中,而不必重新启动负载平衡器。如果重要的话,我们将在Linux上运行该应用程序。


阅读 200

收藏
2020-06-16

共1个答案

一尘不染

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

在您的Web服务器上:

1)安装apache2和modjk:

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

2)创建一个可用于您的apache2的“ workers.properties”文件。在某些情况下,ist会在/ 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版本更好)。更改server.xml:

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

    <Engine jvmRoute="node1" ...
    
  4. 添加“集群”元素以进行最简单的配置

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
    

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

<distributable/>

7)确保Web服务器可以访问您的tomcat服务器上的ajp端口,并且没有其他人可以访问。

8)依次启动Web服务器和tomcat,并检查日志(/var/log/apache2/mod_jk.log也是)。

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

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

2020-06-16