Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-31 Thread Jim Jagielski


On May 28, 2006, at 4:59 PM, Ruediger Pluem wrote:


3. Currently connections are not checked if they are healthy  
*before* a request is send
   (something like mod_jk's connect_timeout, prepost_timeout). I  
think this would be nice to have,
   but I guess it is not easy to do this in a protocol independent  
way. So this might be only

   subject to implementation in mod_proxy_ajp.



I guess it depend on what we mean by healthy... We could
ping the socket and make sure there's a response at the network
stack layer, which would be protocol agnostic. Or, each
proxy module would need to implement some protocol specific
ping/pong test.

4. There is no match for mod_jk's recovery_options currently.  
Furthermore I think some research
   needs to be done about mod_proxy's current behaviour in this  
situation. I guess this is important

   to prevent things being twice in your basket :-).



+1.

Of course, there is a growing school of thought that questions
whether the whole AJP stuff itself is worthwhile... just
proxy HTTP and be done with it. :)

Anyway, I've done some testing and mod_proxy_ajp works at
least as well as mod_jk...


Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-31 Thread Graham Leggett
On Wed, May 31, 2006 3:47 pm, Jim Jagielski wrote:

 Of course, there is a growing school of thought that questions
 whether the whole AJP stuff itself is worthwhile... just
 proxy HTTP and be done with it. :)

This was a question raised way back when before the ajp work started, the
question was whether mod_jk or mod_proxy_http was faster. It turned out
mod_jk was faster, and so we have mod_proxy_ajp, but that was in the days
before mod_proxy_http had a connection pool and load balancing.

It would be interesting to benchmark http and ajp again to see what the
difference is today with the connection pool enabled on both.

Regards,
Graham
--




Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-31 Thread Mladen Turk

Jim Jagielski wrote:


I guess it depend on what we mean by healthy... We could
ping the socket and make sure there's a response at the network
stack layer, which would be protocol agnostic. Or, each
proxy module would need to implement some protocol specific
ping/pong test.



Right, the cping/cpong is a missing feature.
I didn't implement it initially because it existed only
for ajp protocol, so a common mechanism should be used
perhaps a socket liveness test on ftp/http and standard
cping/cpong messages on ajp.



Of course, there is a growing school of thought that questions
whether the whole AJP stuff itself is worthwhile... just
proxy HTTP and be done with it. :)



If some day we implement the http-ng and web-mux then
ajp will be obsolete. Until that it performs much faster
when compared to http (with some limitations).
We have some protocol enhancements on the schedule, like
programmable message size, graceful shutdown, client
break notification, and local headers, that will preserve
backward compatibility with AJP/1.3.


Anyway, I've done some testing and mod_proxy_ajp works at
least as well as mod_jk...



Same here :)
The balancer misses few features from mod_jk that would
be great to have, like hot standby and a new bybussines
lb method.


Regards,
Mladen.



Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-31 Thread Jim Jagielski


On May 31, 2006, at 9:59 AM, Graham Leggett wrote:


On Wed, May 31, 2006 3:47 pm, Jim Jagielski wrote:


Of course, there is a growing school of thought that questions
whether the whole AJP stuff itself is worthwhile... just
proxy HTTP and be done with it. :)


This was a question raised way back when before the ajp work  
started, the
question was whether mod_jk or mod_proxy_http was faster. It turned  
out
mod_jk was faster, and so we have mod_proxy_ajp, but that was in  
the days

before mod_proxy_http had a connection pool and load balancing.

It would be interesting to benchmark http and ajp again to see what  
the

difference is today with the connection pool enabled on both.



AJP had 2 things going for it, IIRC:

   1. It was binary, so there was the transmission savings
   2. Tomcat could handle AJP faster and more efficiently than
  HTTP (the AJP endpoints were quicker than the HTTP
  endpoint implementations)

#2 has been the most changing, and is, at least IMO, not
a real factor nowadays. #1 is still nice, plus, of
course, not being holden to HTTP, there's stuff that
can be added at the protocol level to make
the WebServer-Tomcat interaction more efficient
(so maybe that's reason #3 :) ).


Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-31 Thread Jim Jagielski


On May 31, 2006, at 10:07 AM, Mladen Turk wrote:


Jim Jagielski wrote:

I guess it depend on what we mean by healthy... We could
ping the socket and make sure there's a response at the network
stack layer, which would be protocol agnostic. Or, each
proxy module would need to implement some protocol specific
ping/pong test.



Right, the cping/cpong is a missing feature.
I didn't implement it initially because it existed only
for ajp protocol, so a common mechanism should be used
perhaps a socket liveness test on ftp/http and standard
cping/cpong messages on ajp.



As we (hopefully) add more protocols into the proxy
framework, we will run into more and more cases
where there are some things that simply can't be
generic enough to avoid protocol specific items...
I'm looking at some sort of provider interface
for that.



The balancer misses few features from mod_jk that would
be great to have, like hot standby and a new bybussines
lb method.



These are expected to be added in soonish :)


AW: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-29 Thread andreas.wieczorek
There have been threads about failover/hotstandby being differently in mod_jk / 
mod_proxy_balancer  mod_proxy_ajp:
Status=d was not working in the same way like in mod_jk (worker with status=d 
are not used when the other worker of the balancer fails)

Ruediger's last words as far as I know (Feb 28, 2006) concerning this were (see 
http://www.nabble.com/mod_proxy_balancer+-+failover+%28hot+standby%29-t1200150.html#a3166923)

I hope (and hoped) to get some feedback by other developers on this issue to 
clarify the definition of 'disabled'. 
Once this is done we can go into the details about how to implement this. 

I assume the status=d behavior still is a difference between mod_jk and 
mod_proxy_balacer / _ajp ...?

Regards,
Andreas

-Ursprüngliche Nachricht-
Von: Ruediger Pluem [mailto:[EMAIL PROTECTED] 
Gesendet: 28.05.2006 23:00
An: dev@httpd.apache.org
Betreff: Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?




On 05/28/2006 03:18 PM, Jeff Trawick wrote:
 On 5/27/06, Ruediger Pluem  wrote:
 


 On 05/27/2006 03:58 PM, Jeff Trawick wrote:

 
  Are there still fundamental pieces missing from mod_proxy_ajp +
  mod_proxy_balancer which have to be resolved before mod_proxy_ajp is
  the natural solution for anybody on Apache = 2.2?

 Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do
 not know if this is regarded as fundamental piece.

Other things I noticed that are different:

1. mod_jk's recycle_timeout and cache_timeout are not exactly matched by 
mod_proxy's
   smax and ttl. But from my current personal point of view this does not 
matter.

2. mod_proxy_ajp does miss mod_jk's secret options. Again not critical from my 
point of view.

3. Currently connections are not checked if they are healthy *before* a request 
is send
   (something like mod_jk's connect_timeout, prepost_timeout). I think this 
would be nice to have,
   but I guess it is not easy to do this in a protocol independent way. So this 
might be only
   subject to implementation in mod_proxy_ajp.

4. There is no match for mod_jk's recovery_options currently. Furthermore I 
think some research
   needs to be done about mod_proxy's current behaviour in this situation. I 
guess this is important
   to prevent things being twice in your basket :-).


  Isn't pass-through of client SSL connection information another
  problem with mod_proxy?  (servlets can't access cipher or client
  certificate)

 AFAIK not with mod_proxy_ajp. It seems to pass all these information
 to Tomcat.
 
 
 oops, I meant ... problem with using generic HTTP support with
 mod_proxy -- mod_proxy_http; I agree, the functional problem doesn't

I do not know if there is any standard in passing such information to the 
backend
via HTTP, but I think you can pick up all SSL information that is available as 
env
variables and add them as request headers to the backend request via 
mod_headers.
Is this a sufficient solution for the problem?

Regarding mod_proxy_http the following TODO's come up to my mind:

1. Currently we cannot handle keepalive connections to SSL backends.
2. There are some problems if the backend closes a keepalive connection by 
itself
   due to a timeout. See also:

  http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL 
PROTECTED]
  http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL 
PROTECTED]

  and PR3770 (http://issues.apache.org/bugzilla/show_bug.cgi?id=37770).


Regards

Rüdiger


Dieses Dokument ist vertraulich und ausschliesslich fuer den Adressaten 
bestimmt. Falls Sie diese E-Mail versehentlich bekommen haben, informieren Sie 
uns bitte unverzueglich und loeschen Sie diese Nachricht von Ihrem Computer. 
Jegliche Art von Reproduktion, Verbreitung, Vervielfaeltigung, Modifikation, 
Verteilung und/oder Publikation dieser E-Mail Nachricht ist untersagt. 
Die in dieser E-Mail enthaltenen Angaben und Erklaerungen sind unverbindlich. 
Haftungsansprueche des Empfaengers jeglicher Art werden ausgeschlossen. Die GZS 
schliesst ausser fuer den Fall von Vorsatz oder grober Fahrlaessigkeit die 
Haftung fuer jeglichen Verlust oder Schaeden durch virenbefallene Software oder 
E-Mails aus.
---
This message contains confidential information and is intended only for the 
named individual. If you are not the named addressee, you should not 
disseminate, distribute or copy this e-mail. Please notify the sender 
immediately by e-mail if you have received this message in error and delete 
this e-message from your system.
No reliance may be placed on this message without written confirmation of its 
contents from an authorized representative. GZS accepts no liability for loss 
or damage caused by software viruses except in case of gross negligence or 
willful behaviour.



Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-28 Thread Jeff Trawick

On 5/27/06, Ruediger Pluem [EMAIL PROTECTED] wrote:



On 05/27/2006 03:58 PM, Jeff Trawick wrote:


 Are there still fundamental pieces missing from mod_proxy_ajp +
 mod_proxy_balancer which have to be resolved before mod_proxy_ajp is
 the natural solution for anybody on Apache = 2.2?

Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do
not know if this is regarded as fundamental piece.


shrug


 Isn't pass-through of client SSL connection information another
 problem with mod_proxy?  (servlets can't access cipher or client
 certificate)

AFAIK not with mod_proxy_ajp. It seems to pass all these information to Tomcat.


oops, I meant ... problem with using generic HTTP support with
mod_proxy -- mod_proxy_http; I agree, the functional problem doesn't
apply to mod_proxy_ajp


Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-28 Thread Ruediger Pluem


On 05/28/2006 03:18 PM, Jeff Trawick wrote:
 On 5/27/06, Ruediger Pluem  wrote:
 


 On 05/27/2006 03:58 PM, Jeff Trawick wrote:

 
  Are there still fundamental pieces missing from mod_proxy_ajp +
  mod_proxy_balancer which have to be resolved before mod_proxy_ajp is
  the natural solution for anybody on Apache = 2.2?

 Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do
 not know if this is regarded as fundamental piece.

Other things I noticed that are different:

1. mod_jk's recycle_timeout and cache_timeout are not exactly matched by 
mod_proxy's
   smax and ttl. But from my current personal point of view this does not 
matter.

2. mod_proxy_ajp does miss mod_jk's secret options. Again not critical from my 
point of view.

3. Currently connections are not checked if they are healthy *before* a request 
is send
   (something like mod_jk's connect_timeout, prepost_timeout). I think this 
would be nice to have,
   but I guess it is not easy to do this in a protocol independent way. So this 
might be only
   subject to implementation in mod_proxy_ajp.

4. There is no match for mod_jk's recovery_options currently. Furthermore I 
think some research
   needs to be done about mod_proxy's current behaviour in this situation. I 
guess this is important
   to prevent things being twice in your basket :-).


  Isn't pass-through of client SSL connection information another
  problem with mod_proxy?  (servlets can't access cipher or client
  certificate)

 AFAIK not with mod_proxy_ajp. It seems to pass all these information
 to Tomcat.
 
 
 oops, I meant ... problem with using generic HTTP support with
 mod_proxy -- mod_proxy_http; I agree, the functional problem doesn't

I do not know if there is any standard in passing such information to the 
backend
via HTTP, but I think you can pick up all SSL information that is available as 
env
variables and add them as request headers to the backend request via 
mod_headers.
Is this a sufficient solution for the problem?

Regarding mod_proxy_http the following TODO's come up to my mind:

1. Currently we cannot handle keepalive connections to SSL backends.
2. There are some problems if the backend closes a keepalive connection by 
itself
   due to a timeout. See also:

  http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL 
PROTECTED]
  http://mail-archives.apache.org/mod_mbox/httpd-dev/200602.mbox/[EMAIL 
PROTECTED]

  and PR3770 (http://issues.apache.org/bugzilla/show_bug.cgi?id=37770).


Regards

Rüdiger



conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-27 Thread Jeff Trawick

(ignore issues of support for particular versions of Apache)

google pretends to know a lot about this general question, but it
seems to be in discussions between general users with the same
curiosity and there is little or no developer input.  OTOH, there is a
great indication that Tomcat connector FAQ and httpd documentation
could help a lot of people by presenting the same conclusion, whatever
that happens to be ;)

Are there key design issues which will make one better than the other
assuming each has enough developer attention to fix code bugs?

Are there still fundamental pieces missing from mod_proxy_ajp +
mod_proxy_balancer which have to be resolved before mod_proxy_ajp is
the natural solution for anybody on Apache = 2.2?

When should somebody use mod_proxy_http [+ mod_proxy_balancer] instead
of one of these solutions?

The Tomcat connectors FAQ says this:

---snip
#  mod_jk is great and should be used for production. It is getting
fixes as needed (which is now rare).
# mod_proxy. A cheap way to proxy without the hassles of configuring
JK. This solution lacks sticky session load balancing. If you don't
need some of the features of jk, jk2 - this is a very simple
alternative.
# mod_proxy_ajp. With apache 2.2, mod_proxy was rewritten to support
load balancing as well as a new transport called mod_proxy_ajp. This
module is distributed with the Apache http server, not the Tomcat
server.
---snip---

Isn't pass-through of client SSL connection information another
problem with mod_proxy?  (servlets can't access cipher or client
certificate)


Re: conclusions to FAQs on mod_proxy_ajp vs. mod_jk?

2006-05-27 Thread Ruediger Pluem


On 05/27/2006 03:58 PM, Jeff Trawick wrote:

 
 Are there still fundamental pieces missing from mod_proxy_ajp +
 mod_proxy_balancer which have to be resolved before mod_proxy_ajp is
 the natural solution for anybody on Apache = 2.2?

Currently mod_proxy_balancer lacks the domain feature of mod_jk, but I do
not know if this is regarded as fundamental piece.

 
 Isn't pass-through of client SSL connection information another
 problem with mod_proxy?  (servlets can't access cipher or client
 certificate)

AFAIK not with mod_proxy_ajp. It seems to pass all these information to Tomcat.

Regards

Rüdiger