Uploaded image for project: 'mod_cluster'
  1. mod_cluster
  2. MODCLUSTER-365

Reset MCMPs are sent to all available proxies

    XMLWordPrintable

    Details

    • Steps to Reproduce:
      Hide

      To reproduce:
      1. Create 1 JBoss instance with a simple helloworld application just to have a context available to the mod_cluster.
      2. Put this as modcluster configuration:
      <subsystem xmlns="urn:jboss:domain:modcluster:1.1">
      <mod-cluster-config advertise="false" connector="ajp" proxy-list="apache1:port,apache2:port" balancer="application-balancer" sticky-session-remove="true" auto-enable-contexts="false">
      <dynamic-load-provider>
      <load-metric type="busyness"/>
      </dynamic-load-provider>
      </mod-cluster-config>
      </subsystem>

      3. Configure 2 apache instances to have the node connect to.

      <VirtualHost apache1:port>
      <Directory />
      Order allow,deny
      Allow from all
      </Directory>

      <Location /mod_cluster-manager>
      SetHandler mod_cluster-manager
      Order deny,allow
      Deny from all
      Allow from 10.
      </Location>

      KeepAliveTimeout 60
      MaxKeepAliveRequests 0
      EnableMCPMReceive
      CreateBalancers 0
      ManagerBalancerName application-balancer

      ServerAdvertise Off
      </VirtualHost>

      4. Enable the contexts on each apache using the mod_cluster-manager.
      5. Restart one of the apache instances. When JBoss reconnects to it, it will put that node as "disabled" on both apache instances.

      Show
      To reproduce: 1. Create 1 JBoss instance with a simple helloworld application just to have a context available to the mod_cluster. 2. Put this as modcluster configuration: <subsystem xmlns="urn:jboss:domain:modcluster:1.1"> <mod-cluster-config advertise="false" connector="ajp" proxy-list="apache1:port,apache2:port" balancer="application-balancer" sticky-session-remove="true" auto-enable-contexts="false"> <dynamic-load-provider> <load-metric type="busyness"/> </dynamic-load-provider> </mod-cluster-config> </subsystem> 3. Configure 2 apache instances to have the node connect to. <VirtualHost apache1:port> <Directory /> Order allow,deny Allow from all </Directory> <Location /mod_cluster-manager> SetHandler mod_cluster-manager Order deny,allow Deny from all Allow from 10. </Location> KeepAliveTimeout 60 MaxKeepAliveRequests 0 EnableMCPMReceive CreateBalancers 0 ManagerBalancerName application-balancer ServerAdvertise Off </VirtualHost> 4. Enable the contexts on each apache using the mod_cluster-manager. 5. Restart one of the apache instances. When JBoss reconnects to it, it will put that node as "disabled" on both apache instances.

      Description

      Consider a JBoss server with multiple httpd servers defined in its proxy-list. If one of those httpd servers goes down and then comes back up, then reset MCMPs (CONFIG, ENABLE-APP) would be sent to the restarted httpd proxy but needlessly to all other proxies as well. This is because DefaultMCMPHandler.status just calls sendRequests, which will send to all proxies by design.

      This has negative implications if auto-enable-contexts is set to false and can break desired behavior. Reproducer steps detail the issue introduced in that scenario.

        Attachments

          Activity

            People

            Assignee:
            jfclere Jean-Frederic Clere
            Reporter:
            aogburn Aaron Ogburn
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: