You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Herb Burnswell <he...@gmail.com> on 2018/03/06 19:01:32 UTC

Re: [users@httpd] balancing best practices - mod_proxy_balancer

Igor,

Thank you for you're reply.  Yes, I have since learned that the application
recommends using AJP instead of HTTPD so I'm attempting to use mod_jk and
mod_proxy_ajp.  However, I'm running into some issues and have some
confusion with mod_jk so I'll start a new thread with my questions.

HB

On Tue, Feb 27, 2018 at 11:36 PM, Igor Cicimov <ic...@gmail.com> wrote:

> I always prefer mod_jk over mod_proxy, I find it superior in terms of
> features and performance.
>
>
> On 27 Feb 2018 5:10 am, "Herb Burnswell" <he...@gmail.com>
> wrote:
>
> Daniel -
>
> Thank you for your response.
>
> 1/2: Thanks for confirming only one balancer method can be used.  I will
> test to see which option makes the most sense.
>
> 3: Regarding my inquiry about potential better options, I was more
> referring to the idea of maybe using Tomcat as a proxy to Tomcat backend
> application.  I've read it can be done was wondering if the like to like
> might provide advantages.  I am personally not as familiar with Tomcat as I
> am with HTTPD and therefore would prefer using HTTPD if there are no
> significant reasons to use Tomcat --> Tomcat.
>
> 4:  The sticky sessions need makes sense.
>
> I have attempted to set up the sticky sessions configuration in HTTPD but
> unfortunately I must not have it set up properly.  It's probably best if I
> create a new thread for that issue and will do so.
>
> Thanks again for your guidance.
>
> HB
>
> On Fri, Feb 23, 2018 at 12:57 AM, Daniel Ferradal <df...@apache.org>
> wrote:
>
>> Hello,
>>
>> I'll try to answer point by point the best I can.
>>
>> 1º You can only use one balancer method, so choose the best strategy
>> for your case. There is plenty on the description for each in the docs
>> (TL to explain here).
>> 2º No, it does not, you choose one and use only one that suites you
>> best for a specific balancer.
>> 3º Inside httpd the only non-third party choice that I know is
>> mod_proxy_balancer, so yes, by all means use it. Unless you find a
>> more suitable product for your needs.
>> 4º That will precisely mean you need to use sticky sessions and define
>> how to properly handle them at the balancer level, why? because as
>> long as nodes are up and running you  want to deliver the session to
>> the specific node dealing with that session or session will be lost.
>> It is when that backend node is down that httpd should look for other
>> nodes to deliver the session. Afaik is called session persistence. Or
>> at least this is the usual way to balance with sessions dealt by a
>> backend cluster.
>>
>> About docs you can also visit:
>> http://httpd.apache.org/docs/2.4/howto/reverse_proxy.html
>> and mod_proxy itself: http://httpd.apache.org/docs/2.4/mod/mod_proxy.html
>>
>> Cheers!
>>
>> 2018-02-23 1:48 GMT+01:00 Herb Burnswell <he...@gmail.com>:
>> > All,
>> >
>> > I am looking for some guidance on using HTTPD as a proxy and load
>> balancer
>> > to a backend Tomcat application.  Specifically, I'm interested in how to
>> > best handle the balancing of requests.  The configuration would be very
>> much
>> > like the 'typical implementation' shown in this Reverse Proxy Guide:
>> > https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html  (I'm using
>> > version 2.4.6):
>> >
>> > +---------------------  +
>> > |     Firewall Public |
>> > +---------------------  +
>> > +-------------------------------------------+
>> > |      +------+   +-------+  +-------+      |
>> > |      | httpd|   | httpd  |   | httpd |      |
>> > |      |    1   |   |   2      |   |   3     |      |
>> > |      +------+   +-------+  +-------+      |
>> > +-------------------------------------------+
>> > +----------------------  +
>> > |     Firewall Private |
>> > +----------------------  +
>> > +---------------------------------------------+
>> > |    +--------+  +---------+  +--------+      |
>> > |    | tomcat|  |tomcat |   |tomcat |       |
>> > |    |   1       |  |    2      |   |   3       |      |
>> > |    +--------+  +---------+  +--------+      |
>> > +---------------------------------------------+
>> >
>> >
>> > We have this working fine with a vanity URL to a VIP on our public
>> firewall
>> > --> to the 3 httpd proxy load balancer pool --> to one of the 3 backend
>> > Tomcat server pool.  We want everything to run over SSL and the
>> currently
>> > working config on the httpd servers is basic:
>> >
>> > <VirtualHost _default_:443>
>> >
>> >         ServerName example.com
>> >
>> >         SSLEngine on
>> >         SSLProtocol all -SSLv2 -SSLv3
>> >         SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
>> >
>> >         SSLCertificateFile /etc/pki/tls/certs/ssl.crt
>> >
>> > # ------------------------------------------------
>> > # Proxy Load Balancer
>> > # ------------------------------------------------
>> >
>> > <Proxy balancer://mycluster>
>> >
>> >         BalancerMember https://app1.example.com:9009
>> >         BalancerMember https://app2.example.com:9009
>> >
>> > </Proxy>
>> >
>> > SSLProxyEngine on
>> > SSLProxyVerify none
>> > SSLProxyCheckPeerCN off
>> > SSLProxyCheckPeerName off
>> > SSLProxyCheckPeerExpire off
>> >
>> > ProxyPass / balancer://mycluster/
>> > ProxyPassReverse / balancer://mycluster/
>> >
>> > </VirtualHost>
>> >
>> >
>> > As mentioned, this works fine.  But now we need to dig into the request
>> > management.  I read here:
>> > https://httpd.apache.org/docs/2.4/mod/mod_proxy_balancer.html that the
>> > scheduler algorithm is provided by 'at least one of':
>> >
>> > mod_lbmethod_byrequests
>> > mod_lbmethod_bytraffic
>> > mod_lbmethod_bybusyness
>> > mod_lbmethod_heartbeat
>> >
>> > Questions:
>> >
>> > 1. Am I correct in reading 'at least one of' that multiple of these
>> > algorithms can be used together?  If so, is there a hierarchy between
>> them?
>> >
>> > 2. Does it make sense to use multiple algorithms?
>> >
>> > - It sounds like each could be desirable:
>> > mod_lbmethod_byrequests -> We do want to have an even distribution of
>> > request/sessions.
>> >
>> > mod_lbmethod_bytraffic -> Some requests/sessions could be more intensive
>> > than others.
>> >
>> > mod_lbmethod_bybusyness -> Sounds similar to byrequests?
>> >
>> > mod_lbmethod_heartbeat -> Definately need to backend to be listening but
>> > would be nice to distribute or overlook a server based upon response
>> time.
>> > Is that part of how this works?
>> >
>> > 3. Is using HTTPD mod_proxy_balancer the best way to handle what we are
>> > looking to do?  Or are there better options?
>> >
>> > 4. On the backend we plan on using Tomcat session clustering for high
>> > availability.  That being the case, would that mean that we would NOT
>> want
>> > to use sticky sessions at the HTTPD level in case a backend Tomcat node
>> goes
>> > offline and the session is picked up on one of the other nodes?
>> >
>> > Sorry if I've confused anything here, any guidance is greatly
>> appreciated.
>> > I'm happy to read any documentation directed to..
>> >
>> > Thanks in advance,
>> >
>> > HB
>> >
>>
>>
>>
>> --
>> Daniel Ferradal
>> HTTPD Docs. I translate to Spanish.
>> #httpd help at Freenode
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>>
>>
>
>