You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Rainer Jung <ra...@kippdata.de> on 2017/11/19 11:49:12 UTC

Serf support in trunk

While testing the 2.5.0 alpha candidate I noticed, that our optional use 
of serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):

- the serf API we use was only present in serf until version 0.3.1 
(February 2010)

- in May 2010 it was changed inside serf and httpd does not support this 
newer API

- serf currently is now at version 1.3.9 (August 2016) providing stable 
APIs. There is still some basic maintenance activity in the serf 
project, for instance for supporting newer scons build tool versions or 
support for OpenSSL 1.1.0.

I do not actually know what the serf support adds to httpd, it seems 
mostly some "SerfCluster" feature for mod_proxy. There's no docs and 
some comments in the code indicate the impl is not complete. SVN logs 
point to the same direction.

Paul Querna wrote in his 2009 svn commit log message:

Work in Progress.

=====================
Add Clustered proxying support to mod_serf, by using the heartbeats system.

No preconfiguration of cluster members is needed.

Just a config like this:
     SerfCluster sweet heartbeat file=/var/cache/apache/hb.dat
     SerfCluster sour heartbeat file=/var/cache/apache/cluster2.dat
     <Location "/">
       SerfPass cluster://sweet
     </Location>
     <Location "/different_cluster">
       SerfPass cluster://sour
     </Location>

The location of all possible destination servers is provided by a new 
providers interface, that includes configuration checking of the 
arguments to the SerfCluster command, solving one of the worst problems 
with the mod_proxy load balancer subsystem.
===================

I suggest we pull the serf dependent code if we can no find a maintainer 
for it. Any comments? Anyone interested in actually updating it and 
making it work?

Regards,

Rainer

RE: Serf support in trunk

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Rainer Jung [mailto:rainer.jung@kippdata.de]
> Sent: maandag 20 november 2017 14:33
> To: dev@httpd.apache.org; Bert Huijben <be...@qqmail.nl>
> Cc: dev@serf.apache.org
> Subject: Re: Serf support in trunk


> > I have no idea why some things were duplicated for different http
> engines...
> > As httpd user I don't see why I want to use different configurations for
> > different engines, except for one knob that chooses the engine.
> >
> > Mod_pagespeed (another serf consumer) is also trying to become an ASF
> > project... Not sure if there would be any interest in that project.
> 
> I don't know whether mod_pagespeed also uses an outdated serf.

They use a slightly patched Serf 1.3.x, but with 1.4 they should be able to move to the normal release. Last time I checked the requested features were implemented in our public api.

	Bert
> 
> Regards,
> 
> Rainer


RE: Serf support in trunk

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Rainer Jung [mailto:rainer.jung@kippdata.de]
> Sent: maandag 20 november 2017 14:33
> To: dev@httpd.apache.org; Bert Huijben <be...@qqmail.nl>
> Cc: dev@serf.apache.org
> Subject: Re: Serf support in trunk


> > I have no idea why some things were duplicated for different http
> engines...
> > As httpd user I don't see why I want to use different configurations for
> > different engines, except for one knob that chooses the engine.
> >
> > Mod_pagespeed (another serf consumer) is also trying to become an ASF
> > project... Not sure if there would be any interest in that project.
> 
> I don't know whether mod_pagespeed also uses an outdated serf.

They use a slightly patched Serf 1.3.x, but with 1.4 they should be able to move to the normal release. Last time I checked the requested features were implemented in our public api.

	Bert
> 
> Regards,
> 
> Rainer


Re: Serf support in trunk

Posted by Rainer Jung <ra...@kippdata.de>.
Hi Bert,

Am 20.11.2017 um 13:23 schrieb Bert Huijben:
> 
> 
>> -----Original Message-----
>> From: Stefan Eissing [mailto:stefan.eissing@greenbytes.de]
>> Sent: maandag 20 november 2017 11:40
>> To: dev@httpd.apache.org
>> Subject: Re: Serf support in trunk
>>
>> +1 for pulling it unless someone steps forward.
>>
>>> Am 19.11.2017 um 12:49 schrieb Rainer Jung <ra...@kippdata.de>:
>>>
>>> While testing the 2.5.0 alpha candidate I noticed, that our optional use
> of
>> serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
>>>
>>> - the serf API we use was only present in serf until version 0.3.1
> (February
>> 2010)
> 
> What serf api are we talking about?
> 
> There shouldn't have been any changes to the public api withing 1.3.x... but
> then around 1.3.0 the project wasn't an ASF project yet.

Not 1.3 but 0.3 to 0.4 (yes, very old times), We are at 0.3 compat, not 
at 0.4 and not even at 1.0.

The change was:

0.3.1:

typedef serf_bucket_t * (*serf_connection_setup_t)(apr_socket_t *skt,
                                                    void *setup_baton,
                                                    apr_pool_t *pool);


0.4.0:

typedef apr_status_t (*serf_connection_setup_t)(apr_socket_t *skt,
                                               serf_bucket_t **read_bkt,
                                               serf_bucket_t **write_bkt,
                                               void *setup_baton,
                                               apr_pool_t *pool);

 From the Changelog (not sure it is that change):

Serf 0.4.0 [2010-05-13, r1353]
...
   Improvements and fixes to SSL support, including connection setup changes
...

Our breaking httpd file is modules/proxy/mod_serf.c:

... This uses the old style arguments ...
static serf_bucket_t* conn_setup(apr_socket_t *sock,
                                  void *setup_baton,
                                  apr_pool_t *pool)
... and is included here as a callback for a serf call ...
     conn = serf_connection_create(serfme, address,
                                   conn_setup, baton,
                                   closed_connection, baton,
                                   pool);
...

>>> - in May 2010 it was changed inside serf and httpd does not support this
>> newer API
>>>
>>> - serf currently is now at version 1.3.9 (August 2016) providing stable
> APIs.
>> There is still some basic maintenance activity in the serf project, for
> instance
>> for supporting newer scons build tool versions or support for OpenSSL
> 1.1.0.
>>>
>>> I do not actually know what the serf support adds to httpd, it seems
>> mostly some "SerfCluster" feature for mod_proxy. There's no docs and some
>> comments in the code indicate the impl is not complete. SVN logs point to
>> the same direction.
> 
> I have no idea why some things were duplicated for different http engines...
> As httpd user I don't see why I want to use different configurations for
> different engines, except for one knob that chooses the engine.
> 
> Mod_pagespeed (another serf consumer) is also trying to become an ASF
> project... Not sure if there would be any interest in that project.

I don't know whether mod_pagespeed also uses an outdated serf.

Regards,

Rainer

Re: Serf support in trunk

Posted by Rainer Jung <ra...@kippdata.de>.
Hi Bert,

Am 20.11.2017 um 13:23 schrieb Bert Huijben:
> 
> 
>> -----Original Message-----
>> From: Stefan Eissing [mailto:stefan.eissing@greenbytes.de]
>> Sent: maandag 20 november 2017 11:40
>> To: dev@httpd.apache.org
>> Subject: Re: Serf support in trunk
>>
>> +1 for pulling it unless someone steps forward.
>>
>>> Am 19.11.2017 um 12:49 schrieb Rainer Jung <ra...@kippdata.de>:
>>>
>>> While testing the 2.5.0 alpha candidate I noticed, that our optional use
> of
>> serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
>>>
>>> - the serf API we use was only present in serf until version 0.3.1
> (February
>> 2010)
> 
> What serf api are we talking about?
> 
> There shouldn't have been any changes to the public api withing 1.3.x... but
> then around 1.3.0 the project wasn't an ASF project yet.

Not 1.3 but 0.3 to 0.4 (yes, very old times), We are at 0.3 compat, not 
at 0.4 and not even at 1.0.

The change was:

0.3.1:

typedef serf_bucket_t * (*serf_connection_setup_t)(apr_socket_t *skt,
                                                    void *setup_baton,
                                                    apr_pool_t *pool);


0.4.0:

typedef apr_status_t (*serf_connection_setup_t)(apr_socket_t *skt,
                                               serf_bucket_t **read_bkt,
                                               serf_bucket_t **write_bkt,
                                               void *setup_baton,
                                               apr_pool_t *pool);

 From the Changelog (not sure it is that change):

Serf 0.4.0 [2010-05-13, r1353]
...
   Improvements and fixes to SSL support, including connection setup changes
...

Our breaking httpd file is modules/proxy/mod_serf.c:

... This uses the old style arguments ...
static serf_bucket_t* conn_setup(apr_socket_t *sock,
                                  void *setup_baton,
                                  apr_pool_t *pool)
... and is included here as a callback for a serf call ...
     conn = serf_connection_create(serfme, address,
                                   conn_setup, baton,
                                   closed_connection, baton,
                                   pool);
...

>>> - in May 2010 it was changed inside serf and httpd does not support this
>> newer API
>>>
>>> - serf currently is now at version 1.3.9 (August 2016) providing stable
> APIs.
>> There is still some basic maintenance activity in the serf project, for
> instance
>> for supporting newer scons build tool versions or support for OpenSSL
> 1.1.0.
>>>
>>> I do not actually know what the serf support adds to httpd, it seems
>> mostly some "SerfCluster" feature for mod_proxy. There's no docs and some
>> comments in the code indicate the impl is not complete. SVN logs point to
>> the same direction.
> 
> I have no idea why some things were duplicated for different http engines...
> As httpd user I don't see why I want to use different configurations for
> different engines, except for one knob that chooses the engine.
> 
> Mod_pagespeed (another serf consumer) is also trying to become an ASF
> project... Not sure if there would be any interest in that project.

I don't know whether mod_pagespeed also uses an outdated serf.

Regards,

Rainer

RE: Serf support in trunk

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Stefan Eissing [mailto:stefan.eissing@greenbytes.de]
> Sent: maandag 20 november 2017 11:40
> To: dev@httpd.apache.org
> Subject: Re: Serf support in trunk
> 
> +1 for pulling it unless someone steps forward.
> 
> > Am 19.11.2017 um 12:49 schrieb Rainer Jung <ra...@kippdata.de>:
> >
> > While testing the 2.5.0 alpha candidate I noticed, that our optional use
of
> serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
> >
> > - the serf API we use was only present in serf until version 0.3.1
(February
> 2010)

What serf api are we talking about?

There shouldn't have been any changes to the public api withing 1.3.x... but
then around 1.3.0 the project wasn't an ASF project yet.

> > - in May 2010 it was changed inside serf and httpd does not support this
> newer API
> >
> > - serf currently is now at version 1.3.9 (August 2016) providing stable
APIs.
> There is still some basic maintenance activity in the serf project, for
instance
> for supporting newer scons build tool versions or support for OpenSSL
1.1.0.
> >
> > I do not actually know what the serf support adds to httpd, it seems
> mostly some "SerfCluster" feature for mod_proxy. There's no docs and some
> comments in the code indicate the impl is not complete. SVN logs point to
> the same direction.

I have no idea why some things were duplicated for different http engines...
As httpd user I don't see why I want to use different configurations for
different engines, except for one knob that chooses the engine.

Mod_pagespeed (another serf consumer) is also trying to become an ASF
project... Not sure if there would be any interest in that project.

	Bert


RE: Serf support in trunk

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Stefan Eissing [mailto:stefan.eissing@greenbytes.de]
> Sent: maandag 20 november 2017 11:40
> To: dev@httpd.apache.org
> Subject: Re: Serf support in trunk
> 
> +1 for pulling it unless someone steps forward.
> 
> > Am 19.11.2017 um 12:49 schrieb Rainer Jung <ra...@kippdata.de>:
> >
> > While testing the 2.5.0 alpha candidate I noticed, that our optional use
of
> serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
> >
> > - the serf API we use was only present in serf until version 0.3.1
(February
> 2010)

What serf api are we talking about?

There shouldn't have been any changes to the public api withing 1.3.x... but
then around 1.3.0 the project wasn't an ASF project yet.

> > - in May 2010 it was changed inside serf and httpd does not support this
> newer API
> >
> > - serf currently is now at version 1.3.9 (August 2016) providing stable
APIs.
> There is still some basic maintenance activity in the serf project, for
instance
> for supporting newer scons build tool versions or support for OpenSSL
1.1.0.
> >
> > I do not actually know what the serf support adds to httpd, it seems
> mostly some "SerfCluster" feature for mod_proxy. There's no docs and some
> comments in the code indicate the impl is not complete. SVN logs point to
> the same direction.

I have no idea why some things were duplicated for different http engines...
As httpd user I don't see why I want to use different configurations for
different engines, except for one knob that chooses the engine.

Mod_pagespeed (another serf consumer) is also trying to become an ASF
project... Not sure if there would be any interest in that project.

	Bert


Re: Serf support in trunk

Posted by Stefan Eissing <st...@greenbytes.de>.
+1 for pulling it unless someone steps forward.

> Am 19.11.2017 um 12:49 schrieb Rainer Jung <ra...@kippdata.de>:
> 
> While testing the 2.5.0 alpha candidate I noticed, that our optional use of serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
> 
> - the serf API we use was only present in serf until version 0.3.1 (February 2010)
> 
> - in May 2010 it was changed inside serf and httpd does not support this newer API
> 
> - serf currently is now at version 1.3.9 (August 2016) providing stable APIs. There is still some basic maintenance activity in the serf project, for instance for supporting newer scons build tool versions or support for OpenSSL 1.1.0.
> 
> I do not actually know what the serf support adds to httpd, it seems mostly some "SerfCluster" feature for mod_proxy. There's no docs and some comments in the code indicate the impl is not complete. SVN logs point to the same direction.
> 
> Paul Querna wrote in his 2009 svn commit log message:
> 
> Work in Progress.
> 
> =====================
> Add Clustered proxying support to mod_serf, by using the heartbeats system.
> 
> No preconfiguration of cluster members is needed.
> 
> Just a config like this:
>    SerfCluster sweet heartbeat file=/var/cache/apache/hb.dat
>    SerfCluster sour heartbeat file=/var/cache/apache/cluster2.dat
>    <Location "/">
>      SerfPass cluster://sweet
>    </Location>
>    <Location "/different_cluster">
>      SerfPass cluster://sour
>    </Location>
> 
> The location of all possible destination servers is provided by a new providers interface, that includes configuration checking of the arguments to the SerfCluster command, solving one of the worst problems with the mod_proxy load balancer subsystem.
> ===================
> 
> I suggest we pull the serf dependent code if we can no find a maintainer for it. Any comments? Anyone interested in actually updating it and making it work?
> 
> Regards,
> 
> Rainer


Re: Serf support in trunk

Posted by Paul Querna <pa...@querna.org>.
As the author, I'm fine with it being removed.  I don't think updating
it would be particularly hard, but I don't have personal interest in
improving mod_proxy with serf at this time.

On Sun, Nov 19, 2017 at 3:49 AM, Rainer Jung <ra...@kippdata.de> wrote:
> While testing the 2.5.0 alpha candidate I noticed, that our optional use of
> serf in mod_proxy and mpm_event is pretty outdated (so unmaintained):
>
> - the serf API we use was only present in serf until version 0.3.1 (February
> 2010)
>
> - in May 2010 it was changed inside serf and httpd does not support this
> newer API
>
> - serf currently is now at version 1.3.9 (August 2016) providing stable
> APIs. There is still some basic maintenance activity in the serf project,
> for instance for supporting newer scons build tool versions or support for
> OpenSSL 1.1.0.
>
> I do not actually know what the serf support adds to httpd, it seems mostly
> some "SerfCluster" feature for mod_proxy. There's no docs and some comments
> in the code indicate the impl is not complete. SVN logs point to the same
> direction.
>
> Paul Querna wrote in his 2009 svn commit log message:
>
> Work in Progress.
>
> =====================
> Add Clustered proxying support to mod_serf, by using the heartbeats system.
>
> No preconfiguration of cluster members is needed.
>
> Just a config like this:
>     SerfCluster sweet heartbeat file=/var/cache/apache/hb.dat
>     SerfCluster sour heartbeat file=/var/cache/apache/cluster2.dat
>     <Location "/">
>       SerfPass cluster://sweet
>     </Location>
>     <Location "/different_cluster">
>       SerfPass cluster://sour
>     </Location>
>
> The location of all possible destination servers is provided by a new
> providers interface, that includes configuration checking of the arguments
> to the SerfCluster command, solving one of the worst problems with the
> mod_proxy load balancer subsystem.
> ===================
>
> I suggest we pull the serf dependent code if we can no find a maintainer for
> it. Any comments? Anyone interested in actually updating it and making it
> work?
>
> Regards,
>
> Rainer