Tomcat load balancer solutions

后端 未结 1 1545
一整个雨季
一整个雨季 2020-12-16 21:48

I\'m looking for a good load balancer to use with Tomcat. Our application doesn\'t store anything in the session context so it isn\'t important to redirect to same server fo

相关标签:
1条回答
  • 2020-12-16 22:01

    If all you need is a software load balancer on linux use Apache Webserver2, Mod-Jk and Tomcat Clustering:

    At your Webserver:

    1. Install apache2 and modjk:

      sudo apt-get install apache2 libapache2-mod-jk
      sudo a2enmod jk
      
    2. Create a workers.properties file available to your apache2. In some cases it's automatically created in your /etc/apache2 directory. This file is holding the lb config, node names, ips and ports of your Tomcat servers, i.e.:

      worker.list=balancer,lbstats
      
      #node1
      worker.node1.type=ajp13
      worker.node1.host=YOUR_TOMCAT-NODE-IP
      worker.node1.port=YOUR_TOMCAT-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 (node1, node2, ...):
      worker.balancer.balance_workers=node1
      
      #lb status information (optional)
      worker.lbstats.type=status
      
    3. Create a Mod-Jk section in your apache2 config file, if it has not been created automatically.

      JkWorkersFile   /etc/apache2/workers.properties
      JkLogFile       /var/log/apache2/mod_jk.log
      JkShmFile       /tmp/jk-runtime-status
      JkLogLevel      info
      
    4. Mount your application to the load balancer (apache2 config file):

      JkMount /My-Java-App-Name       balancer
      JkMount /My-Java-App-Name/*     balancer
      
      JkMount /modjkstatus lbstats
      

    At your Tomcat servers:

    1. Install tomcat (using the tarball package, imho, way better then the apt verison). Change server.xml:

      1. disable the http connectors in server.xml (by commenting them out).

      2. enable AJP/1.3 connector and set the port you defined in workers.properties for this node.

      3. add jvmRoute with the right node name to the "Engine" element:

        <Engine jvmRoute="node1" ...

      4. add a "Cluster" element for simplest configuration

          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
        
    2. Deploy your application to all tomcats and add a distributable element to your applications web.xml.

         <distributable/>
      
    3. Make sure the webserver can access the ajp ports on your tomcat servers and no one else can.

    4. Start the webserver and the tomcats one after another and check the logs (/var/log/apache2/mod_jk.log, too).

    5. Access your app: http://mywebserver.com/MyApp

    6. Check (and deny access to) the lb status page http://mywebserver.com/modjkstatus

    0 讨论(0)
提交回复
热议问题