Writing hooks for Perlbal
raistlin at e-raist.com
Fri Oct 6 20:05:22 UTC 2006
Alright, I have the plugin/callback being called. Looks like I just
needed to add "plugins = MyPlugin" (where MyPlugin is the package in
the Perlbal/Plugin directory).
The callback functionality looks useful for polling things and
reacting accordingly, I've implemented this, however I am curious how
to rewrite a request to a different backend server.
Ideally I'd like to be able to be able to:
Accept a request to a virtualhost
Verify that the backend server is up and running
if it's not then hold the request while I either:
a) bring the backend server up
b) rewrite the request to a different server
Any ideas how to redirect the request, POST data, etc to a different
> Take a look at registering a callback that perlbal will trigger
> every N seconds. AtomStream.pm has it being used. It's called
> 'Perlbal::Socket::register_callback'. You would be able to do
> whatever check(s) you want, and react accordingly (mark it as down
> somehow, reconfigure perlbal, etc.) And it wouldn't be doing it
> for every request.
> Just make sure you don't block. :)
> Raistlin Majere wrote:
>> I've installed and configured perlbal and have run into some
>> difficulties. I've setup perlbal to be a reverse proxy so that it
>> correctly proxies virtualhosts to the appropriate servers. (i.e.
>> vhost1.example.com, vhost2.example.com correctly reverse proxies
>> for vhost1.com and vhost2.com respectively) This is working
>> perfectly, and wasn't too difficult to configure.
>> However now I want to write some code that will:
>> First verify that the backend server is alive
>> Second that the backend server can answer requests on the port I'm
>> trying to talk to
>> And if it's NOT alive and able to respond to requests that I can
>> redirect requests to a different server, or execute some code to
>> bring the downed server up, before retrying.
>> I've tried to use the Perlbal::ClientProxy "start_proxy_request"
>> hook, however that seems to affect each and every request (i.e.
>> each html page, graphic, etc.)
>> I need to be able to check to see if the backend server is alive,
>> and if it's not, tell Perlbal: "Whoa hold your horeses" long
>> enough for me to bring a server up (I can do this with some
>> scripts I have), and then redirect the request to the new server.
>> Any help or advice would be greatly appreciated.
More information about the perlbal