I've updated mod_serf.
It now does:
- Fully Async Proxying when running on the Event MPM
- Dynamic Clustered Backends based on machines with mod_heartbeat running.
- New provider for providing a list of IPs to use, rather than the
mod_proxy interface of only working with known workers -- I think this
will make it more flexible in the long run.
- Provider interface uses tables to store configuration data, rather
than having to extend the mod_proxy core when writing extensions.
- Much simpler configuration than mod_proxy, using location blocks
(or locationMatch), rather than ProxyPass' hacking of URI stuff way
earlier.
Example configuration:
SerfCluster dynamiccluster heartbeat path=logs/hb.dat
SerfCluster statichosts static hosts=140.211.11.130,192.87.106.226
<Location /test>
SerfPass cluster://dynamiccluster
</Location>
<Location />
SerfPass cluster://statichosts preservehost=0
</Location>
There are still bugs, and lots of improvements that could be made,
like async streaming of request bodies, from the event thread, but
pretty quickly I think this could turn into a much more powerful
module than mod_proxy, at a fraction of the complication.
Thoughts :) ?
Thanks,
-Paul