7 Replies Latest reply on Oct 29, 2007 12:44 PM by brian.stansberry

    Load Balancing?

    brucespringfield

      Is there load balancing support in JBoss?

      Couldn't find the directory JBOSS_HOME/docs/examples/varia/loadbalancer/ in JBoss 4.2.1.GA :

      http://wiki.jboss.org/wiki/Wiki.jsp?page=HTTPLoadbalancer

        • 1. Re: Load Balancing?
          brian.stansberry

          That service was discontinued in 4.0.4. Suggest you use mod_jk: http://wiki.jboss.org/wiki/Wiki.jsp?page=UsingMod_jk1.2WithJBoss . It's possible the internal loadbalancer service from 4.0.3.SP1 will work in 4.2.1; I don't know.

          • 2. Re: Load Balancing?
            brucespringfield

            Could mod_proxy_blancer also be used?

            • 3. Re: Load Balancing?
              brian.stansberry

              Yes, although at this point mod_jk remains the preferred solution.

              • 4. Re: Load Balancing?
                brucespringfield

                 

                "bstansberry@jboss.com" wrote:
                Yes, although at this point mod_jk remains the preferred solution.


                Thanks very much for your comment!! Yes, mod_jk seems to work better with JBoss.

                Is it possible to create a cluster of jboss clusters with load balancing using mod_jk?

                I created a cluster of jboss servers with load balancing using mod_jk. But now, I want to createa a cluster the clusters with load balancing. Can I do this with mod_jk? And if so, then would the workers or nodes for the load balancer be the apache servers that act as load balancers in the individual clusters? Can I designate the apache servers as nodes?

                • 5. Re: Load Balancing?
                  brucespringfield

                   

                  "BruceSpringfield" wrote:
                  But now, I want to createa a cluster the clusters with load balancing.


                  That should be :

                  But now, I want to create a cluster of clusters with load balancing.

                  It would be nice if we could edit our posts :)

                  • 6. Re: Load Balancing?
                    brian.stansberry

                    I can edit my posts; I don't know if that comes with admin powers or something?

                    Anyway, AIUI, you're talking about some sort of front-end load balancer that balances calls to a series of Apache/mod_jk boxes, each of which manages a subset of AS instances, balancing to those. Any session replication only occurs within that subset. Correct?

                    Question here, is do the mod_jk instances know about all the AS instances, or just a subset? I.e., say you have 100 AS instances and 10 mod_jk; does each mod_jk only know about 10 AS instances, or 100?

                    If each mod_jk only knows about 10, you have a problem. If for whatever reason a session becomes unstuck on the front-end load balancer (say mod_jk #1 fails, or there's a flaw in the sticky session handling on the front end), then a request could go to any of the mod_jk instances. If that mod_jk doesn't know how to reach the subset of AS' that have the sessions, the session is lost.

                    So, each mod_jk has to know about all AS instances.

                    Next issue is how to ensure that if there is a failover at the AS level that the AS instance mod_jk picks is in the same subset as the original AS. Has to be in the same subset or the failover AS won't have a copy of the session.

                    To do that, you can use mod_jk's 'domain clustering' feature. (Only do the following with mod_jk 1.2.19 or later; before that the session stickiness didn't work right.)

                    Say you have 4 workers in workers.properties, named node1 ... node4. You want to group them into 2 groups, group1 and group2. On the AS nodes, the sessions are only replicated within those groups.

                    In workers.properties, add:

                    worker.node1.domain=group1
                    worker.node2.domain=group2
                    worker.node3.domain=group3
                    worker.node4.domain=group4

                    In the server.xml file on both node1 and node2, set the jvmRoute="group1" instead of "node1" and "node2". On node3 and node4 use "group2".

                    If you use this, mod_jk will ensure your session stays within the set of "groupX" nodes if a failover occurs.

                    • 7. Re: Load Balancing?
                      brian.stansberry

                      Need to review before hitting submit. Following is non-sensical:

                      "bstansberry@jboss.com" wrote:

                      In workers.properties, add:

                      worker.node1.domain=group1
                      worker.node2.domain=group2
                      worker.node3.domain=group3
                      worker.node4.domain=group4


                      Should be:

                      worker.node1.domain=group1
                      worker.node2.domain=group1
                      worker.node3.domain=group2
                      worker.node4.domain=group2