1 Reply Latest reply on May 26, 2011 3:05 AM by jfclere

    Publish non-clustered applications

    okelet

      Hi

       

      I have successfully configured mod_cluster to register JBoss instances, and publish the applications. Our installation consists in many servers, each one with 1 JBoss server and 1 Apache, all configured with mod_cluster, so every JBoss register with every Apache. All Apaches are then balanced with a hardware balancer. JBoss instances have disabled the HTTP connector, and all queries from Apache are done with AJP. Now we need to access the administration applications of every instance of Apache (we can access directly to Apache). I have configured Apache by this way:

       

      # Cargar los módulos necesarios para que funcionen el clúster de JBoss
      LoadModule slotmem_module modules/mod_slotmem.so
      LoadModule manager_module modules/mod_manager.so
      LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
      LoadModule advertise_module modules/mod_advertise.so
      
      # Hacemos que Apache atienda cualquier petición por el puerto 80
      NameVirtualHost *:80
      
      # Hacemos que Apache atienda cualquier petición por el puerto 8880 para el registro de los servidores JBoss en el clúster.
      Listen 8880
      NameVirtualHost *:8880
      
      # Le indicamos al módulo de clúster que no cree automáticamente las entradas ProxyPass en los hosts virtuales, ya que las definiciones de los hosts
      # de este archivo no son reconocidas correctamente (sólo publica las aplicación en el host por el puerto 8880, y no por el puerto 80).
      CreateBalancers 1
      
      # Éste es el host por defecto. Si se recibe una petición que no puede atender ninguno de los hosts virtuales restantes, será este host virtual
      # el encargado de atender la petición.
      <VirtualHost *:80>
      
          LogLevel info
          ErrorLog /var/log/httpd/default-error.log
          CustomLog /var/log/httpd/default-access.log combined
      
          # Damos acceso por Apache a las aplicaciones publicadas por los servidores de JBoss a través del módulo de clúster
          # "mycluster" es el nombre del clúster creado por defecto por el módulo
          ProxyPass / balancer://mycluster/
      
          # Acceso a la herramienta de supervisión de mod_cluster
          <Location /mcm/>
              SetHandler mod_cluster-manager
          </Location>
      
          # Acceso a la consola de administración local de JBoss (no a través del clúster)
          <Location /admin-console>
              ProxyPass ajp://127.0.0.1:8009/admin-console
              ProxyPassReverse ajp://127.0.0.1:8009/admin-console
          </Location>
      
      </VirtualHost>
      
      
      # Éste es el host por el cual se registrarán los servidores de JBoss para formar parte del clúster.
      AllowDisplay On
      <VirtualHost *:8880>
      
          ErrorLog /var/log/httpd/cluster-error.log
          CustomLog /var/log/httpd/cluster-access.log combined
      
          # Publica información del módulo para que los servidores de JBoss se puedan registrar.
          ServerAdvertise On
      
          # Securización del acceso: debemos especificar todas las posibles IPs o rangos de los servidores de JBoss, de tal forma que sólo se
          # permita el acceso a este host desde los servidores de JBoss, y no desde los clientes finales.
          <Directory />
              Order deny,allow
              Deny from all
              Allow from 172.16.0.
          </Directory>
      
      </VirtualHost>
      

       

      So, according to the code, all aplications should be proxified to the cluster EXCEPT /admin-console, that should be proxified to the local JBoss, but when I try to access to the admin console, I always get a 503 Service Temporarily Unavailable response. I get this in the error when I try to access to /admin-console (debug log level in Apache):

       

      [Wed May 25 19:13:52 2011] [debug] mod_proxy_cluster.c(1444): proxy: byrequests balancer FAILED
      [Wed May 25 19:13:52 2011] [error] proxy: CLUSTER: (balancer://mycluster). All workers are in error state
      

       

      I don't know why it tries to forward the request through the balancer (the application admin-console is not published by the JBoss to mod_cluster, as it is in the excludedContexts). I have tried to specify

       

      ProxyPass /admin-console !
      

       

      in the definition of the virtual host, without success. I access correctly to the JBoss applications.

       

      Using:

       

      • Red Hat 6 32 and 64 bits
      • mod_cluster 1.1.2
      • JBoss 5.1.0
      • Apache 2.2.15

       

      Thanks in advance and regards.