[mod_cluster-issues] [JBoss JIRA] (MODCLUSTER-309) mod_proxy_cluster not checking all available balancers (but only the first one) for an available route

Michal Babacek (JIRA) issues at jboss.org
Thu Mar 13 09:50:12 EDT 2014


     [ https://issues.jboss.org/browse/MODCLUSTER-309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michal Babacek closed MODCLUSTER-309.
-------------------------------------


    
> mod_proxy_cluster not checking all available balancers (but only the first one) for an available route
> ------------------------------------------------------------------------------------------------------
>
>                 Key: MODCLUSTER-309
>                 URL: https://issues.jboss.org/browse/MODCLUSTER-309
>             Project: mod_cluster
>          Issue Type: Bug
>    Affects Versions: 1.2.1.Final
>         Environment: RedHat EL 6.2, httpd-2.2.15-15.el6
>            Reporter: Simone Gotti
>            Assignee: Jean-Frederic Clere
>             Fix For: 1.2.2.Final
>
>
> I have an environment with two or more balancers.
> I want all the balancers to be available for all the virtualhosts (and maybe filter them using UseAlias). So I'm not configuring any ProxyPass directive but let mod_cluster create the balancers.
> During a simple test I noticed that session stickiness was not working for some requests.
> Enabling debug I noticed that mod_proxy_cluster:get_route_balancer failed to find a route so the worker was recalculated:
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2617): proxy_cluster_trans for 0 (null) (null) uri: /context01/jsp01.jsp args: (null) unparsed_uri: /context01/jsp01.jsp
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2441): cluster: balancer://balancer01 Found value 7tTdLpqWIZjDLcyBrn25tCc9.eb5376bd-c45b-38d1-97e0-c16b97f471d1 for stickysession JSESSIONID|jsessionid
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2441): cluster: balancer://balancer01 Found value 7tTdLpqWIZjDLcyBrn25tCc9.eb5376bd-c45b-38d1-97e0-c16b97f471d1 for stickysession JSESSIONID|jsessionid
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2675): proxy_cluster_trans using balancer02 uri: proxy:balancer://balancer02/context01/jsp01.jsp
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2708): proxy_cluster_canon url: //balancer02/context01/jsp01.jsp
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(3140): proxy_cluster_pre_request: url balancer://balancer02/context01/jsp01.jsp
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(2880): cluster:No route found
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(1854): proxy: Entering byrequests for CLUSTER (balancer://balancer02)
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(1972): proxy: byrequests balancer DONE (ajp://192.168.122.22:8359)
> [Tue May 15 16:39:46 2012] [debug] mod_proxy_cluster.c(3368): proxy_cluster_pre_request: balancer (balancer://balancer02) worker (ajp://192.168.122.22:8359) rewritten to ajp://192.168.122.22:8359/context01/jsp01.jsp
> Looking at the code looks like mod_cluster checks only the first balancer and, if it does not find any valid route it will give up without retrying the other available balancers.
> With this patch it's now checking all the available balancers:
> {noformat} 
> Index: mod_proxy_cluster/mod_proxy_cluster.c
> ===================================================================
> --- mod_proxy_cluster/mod_proxy_cluster.c	(revision 838)
> +++ mod_proxy_cluster/mod_proxy_cluster.c	(working copy)
> @@ -2453,7 +2453,7 @@
>                  /* Nice we have a route, but make sure we have to serve it */
>                  int *nodes = find_node_context_host(r, balancer, route, use_alias, vhost_table, context_table);
>                  if (nodes == NULL)
> -                    return NULL; /* we can't serve context/host for the request */
> +                    continue; /* we can't serve context/host for the request with this balancer*/
>              }
>              if (route && *route) {
>                  char *domain = NULL;
> {noformat} 
> and this is the log after this possible fix:
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2617): proxy_cluster_trans for 0 (null) (null) uri: /context01/ args: (null) unparsed_uri: /context01/
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2441): cluster: balancer://balancer02 Found value Frjih6gBZzDUg+RFgeUvKJfy.9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3 for stickysession JSESSIONID|jsessionid
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2441): cluster: balancer://balancer01 Found value Frjih6gBZzDUg+RFgeUvKJfy.9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3 for stickysession JSESSIONID|jsessionid
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2461): cluster: Found route 9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2377): find_nodedomain: finding node for 9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3: balancer01
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2470): cluster: Found balancer balancer01 for 9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2675): proxy_cluster_trans using balancer01 uri: proxy:balancer://balancer01/context01/
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2708): proxy_cluster_canon url: //balancer01/context01/
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(3140): proxy_cluster_pre_request: url balancer://balancer01/context01/
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(2876): cluster: Using route 9cedb7e1-5c20-3da7-bd17-9d0bc99b49d3
> [Tue May 15 16:38:36 2012] [debug] mod_proxy_cluster.c(3368): proxy_cluster_pre_request: balancer (balancer://balancer01) worker (ajp://192.168.122.22:8259) rewritten to ajp://192.168.122.22:8259/context01/

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the mod_cluster-issues mailing list