Return-Path: Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: (qmail 3910 invoked from network); 4 Oct 2007 16:01:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Oct 2007 16:01:39 -0000 Received: (qmail 73353 invoked by uid 500); 4 Oct 2007 16:01:25 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 72973 invoked by uid 500); 4 Oct 2007 16:01:24 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 72962 invoked by uid 99); 4 Oct 2007 16:01:24 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Oct 2007 09:01:24 -0700 X-ASF-Spam-Status: No, hits=-4.0 required=10.0 tests=RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [64.236.240.74] (HELO atlmail3.turner.com) (64.236.240.74) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Oct 2007 16:01:23 +0000 Received: from atlbh01.turner.com ([10.188.157.231]) by atlmail3.turner.com with ESMTP; 04 Oct 2007 12:00:58 -0400 X-IronPort-AV: i="4.21,230,1188792000"; d="scan'208"; a="273498340:sNHT1264812236" Received: from ATLMSG13.turner.com ([10.188.170.53]) by ATLBH01.turner.com with Microsoft SMTPSVC(6.0.3790.211); Thu, 4 Oct 2007 12:00:58 -0400 Received: from 10.188.174.6 ([10.188.174.6]) by ATLMSG13.turner.com ([10.188.170.53]) via Exchange Front-End Server atlwebaccess.turner.com ([10.188.157.195]) with Microsoft Exchange Server HTTP-DAV ; Thu, 4 Oct 2007 16:00:57 +0000 User-Agent: Microsoft-Entourage/11.3.6.070618 Date: Thu, 04 Oct 2007 12:00:57 -0400 Subject: Re: proxy health checks [was: Proxying OPTIONS *] From: "Akins, Brian" To: "dev@httpd.apache.org" Message-ID: Thread-Topic: proxy health checks [was: Proxying OPTIONS *] Thread-Index: AcgFvxotqmT1LOyvShyoTGBmXRwOkAA4KXFY In-Reply-To: <47039374.6010807@kippdata.de> Mime-version: 1.0 Content-type: text/plain; charset="US-ASCII" Content-transfer-encoding: 7bit X-OriginalArrivalTime: 04 Oct 2007 16:00:58.0186 (UTC) FILETIME=[C0A7FAA0:01C8069F] X-Virus-Checked: Checked by ClamAV on apache.org In "our" proxy, we launch an external helper app the does active health checking of the origin servers. This is a HEAD request on a configurable (per origin "pool") uri (ie, http://host:port/url/blah). When an origin passes/fails a given number of checks it is marked up/down. For example, when an origin passes 2 health checks in a row, it is marked up; when it fails 3 in a row, it is marked down. We check each backend every x seconds (x usually equal to 5). The proxy module and the health checker are linked via a simple array in shared memory. The health checker marks the index of each origin as 1 (up) or 0 (down). I have been contemplating writing a balancer module that implements this, but haven't had the time. With this method, we don't have to check every time, as we assume if the origin is up in the health checker that it is up. This works several million times a day for us :) (Also, we do "true" connection pooling to the origins, but that's another story...) -- Brian Akins Chief Operations Engineer Turner Digital Media Technologies