You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Plüm, Rüdiger, VIS <ru...@vodafone.com> on 2006/01/31 11:43:27 UTC

AW: proxy failover/load balance

-----Ursprüngliche Nachricht-----
Von: Robby Pedrica 
Gesendet: Montag, 30. Januar 2006 09:27
Betreff: proxy failover/load balance


> wrt information provided by Mladen Turk, Jim Jagielski and Andreas Wieczorek:
> 
> I'm having issues when using mod_proxy/mod_proxy_balancer and it appears these have been alluded to on the dev mailing list:
> 
> 1. apache 220 doesn't appear to use the status=d value for a balancer member when loading ( status=disabled doesn't work as apache complains about the

This seems to be a bug in set_worker_param of mod_proxy.c. It should exit the for loop once it found a valid thing.

> syntax ); when starting with status=d, apache starts fine but balancer manager still indicates that host you set as disabled in config is actually 
> available

This seems to be a bug in init_balancer_members of mod_proxy_balancer.c which seems to overwrite the status of the balancer members with
PROXY_WORKER_INITIALIZED.

> 2. when manually disabling a member in the balancer manager, it comes back online automatically after about a minute or 2

What do you mean with online? Is it enabled again? If yes, this might be related to the bug above as init_balancer_members is called
by child_init which runs in the child_init hook. So I think everytime httpd creates a new child process this gets reseted.

Regards

Rüdiger

Re: AW: proxy failover/load balance

Posted by Jim Jagielski <ji...@jaguNET.com>.
I mean, of course, having status be simple flags +d+s
for example, rather than the whole word. The code looks
to be designed with that in mind.

On Feb 1, 2006, at 8:57 AM, Jim Jagielski wrote:

>
> Why the breaks? Certainly we still want to continue the
> for loop even if we see a valid setting. For example,
> to set a worker in DISABLED and STOPPED mode.
>
> On Jan 31, 2006, at 4:32 PM, Ruediger Pluem wrote:
>>
>> Index: modules/proxy/mod_proxy.c
>> ===================================================================
>> --- modules/proxy/mod_proxy.c	(Revision 371134)
>> +++ modules/proxy/mod_proxy.c	(Arbeitskopie)
>> @@ -200,18 +200,21 @@
>>                      worker->status |= PROXY_WORKER_DISABLED;
>>                  else
>>                      worker->status &= ~PROXY_WORKER_DISABLED;
>> +                break;
>>              }
>>              else if (*v == 'S' || *v == 's') {
>>                  if (mode)
>>                      worker->status |= PROXY_WORKER_STOPPED;
>>                  else
>>                      worker->status &= ~PROXY_WORKER_STOPPED;
>> +                break;
>>              }
>>              else if (*v == 'E' || *v == 'e') {
>>                  if (mode)
>>                      worker->status |= PROXY_WORKER_IN_ERROR;
>>                  else
>>                      worker->status &= ~PROXY_WORKER_IN_ERROR;
>> +                break;
>>              }
>>              else {
>>                  return "Unknow status parameter option";
>


Re: AW: proxy failover/load balance

Posted by Jim Jagielski <ji...@jaguNET.com>.
Why the breaks? Certainly we still want to continue the
for loop even if we see a valid setting. For example,
to set a worker in DISABLED and STOPPED mode.

On Jan 31, 2006, at 4:32 PM, Ruediger Pluem wrote:
>
> Index: modules/proxy/mod_proxy.c
> ===================================================================
> --- modules/proxy/mod_proxy.c	(Revision 371134)
> +++ modules/proxy/mod_proxy.c	(Arbeitskopie)
> @@ -200,18 +200,21 @@
>                      worker->status |= PROXY_WORKER_DISABLED;
>                  else
>                      worker->status &= ~PROXY_WORKER_DISABLED;
> +                break;
>              }
>              else if (*v == 'S' || *v == 's') {
>                  if (mode)
>                      worker->status |= PROXY_WORKER_STOPPED;
>                  else
>                      worker->status &= ~PROXY_WORKER_STOPPED;
> +                break;
>              }
>              else if (*v == 'E' || *v == 'e') {
>                  if (mode)
>                      worker->status |= PROXY_WORKER_IN_ERROR;
>                  else
>                      worker->status &= ~PROXY_WORKER_IN_ERROR;
> +                break;
>              }
>              else {
>                  return "Unknow status parameter option";


Re: AW: proxy failover/load balance

Posted by Ruediger Pluem <rp...@apache.org>.

On 01/31/2006 08:13 PM, Robby Pedrica wrote:
> Hi Rudiger
> 
> Thanks for the reply:
> 
> a. any idea on when a fix will be available or whether there are patches 
> available for these items?
> b. Yes, if you manually disable a member in balancer-manager, then it becomes 
> enabled ( OK ) after a minute or 2
> 
> Regards
> 
> Robby

Could you please give the attached patch a try and let me know the results.

Regards

Rüdiger