首页 文章

Tomcat负载均衡器解决方案

提问于
浏览
7

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

1 回答

  • 6

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

    在您的网络服务器上:

    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:

    • 禁用http连接器 .

    • 启用AJP / 1.3连接器并设置您在workers.illperties中为此节点定义的端口 .

    • 将具有正确节点名称的jvmRoute添加到“Engine”元素:

    <Engine jvmRoute="node1" ...
    
    • 添加“Cluster”元素以进行最简单的配置
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
    

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

    <distributable/>
    

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

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

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

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

相关问题