Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

what reverse proxy server will direct traffic to healthy servers whose health is based on a result string??

ideally i'd like something like dnsmadeeasy or ultradns - lol - but for reverse proxy

i have looked at pound, delegate, ha proxy, squid, varnish, nginx, apache, and cherokee but can't see that they will work - they only test for HTTP result code

scenario

client request www.aaa.com

www.aaa.com is a reverse proxy

reverse proxy looks at "test.php" on server 1.aaa.com, 2.aaa.com and 3.aaa.com for result string "OK"

if the server is "OK" then proxy requests to them

help!

share|improve this question
    
Why wouldn't you just have them return an error code that indicates a server problem (like 500) if they're not ok, which can indicate to the proxy to use a different node? The extra health check request seems like unnecessary overhead. –  Shane Madden Jun 8 '12 at 3:41
    
how do you get the proxy server to test a file? the http server running on the node is up - but a database is down. can these proxy servers test host.aaa.com/status.php - where status.php is <php if(some test fails) header("HTTP/1.0 500 database down") else header("HTTP/1.0 200 database ok")?> –  joshua paul Jun 8 '12 at 4:13

1 Answer 1

up vote 1 down vote accepted

I think you will find that Vanish can do this
https://www.varnish-cache.org/

It can do Load Balancing so based on this it should be able to do what you are after, I am sure Squid could do it but Vanish is a better reverse proxy in my view
https://www.varnish-cache.org/trac/wiki/LoadBalancing

Hope this helps.

share|improve this answer
    
yes - Varnish Backend Polling How to configure polling ¶ Polling is configured by adding a {{.probe}} member to the backend definition in VCL, for instance: backend b0 { .host = "phk.freebsd.dk"; .probe = { .url = "/probe.cgi"; .timeout = 34 ms; .interval = 1s; .window = 10; .threshold = 8; } } –  joshua paul Jun 8 '12 at 4:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.