Cómo ajustar mediante programación la directiva desactivar en la configuración del equilibrador de carga mod_jk?

StackOverflow https://stackoverflow.com/questions/766891

  •  12-09-2019
  •  | 
  •  

Pregunta

Tenemos una configuración donde tenemos una httpd (apache) con mod_jk hablando en una instalación de balance de carga a tres servidores Tomcat. Tenemos que reciclar cada instancia de Tomcat envery tres horas. Así tomcat1 se reiniciará a 1, y tomcat2 a las 2 y ... hasta tomcat1 recicla de nuevo a 4.

Queremos configurar una secuencia de comandos o un tipo de programa para desactivar el nodo trabajador que está pasando por un recylce para minimizar los errores de sesión en el usuario mediante nuestra aplicación.

Cualquier sugerencia.

¿Fue útil?

Solución 3

Chris gracias o su respuesta. Estoy seguro de que funcionará, pero quería provocar el cambio en tiempo de ejecución, aunque el reinicio sencillo es muy similar. Pude cumplir mi tarea de describir de la siguiente manera.

En el archivo httpd.conf se debe añadir las siguientes líneas para que el jkmanager para el módulo mod_jk.

<Location /jkmanager/>
JkMount jkstatus
order deny,allow
allow from <your ip address>
allow from 127.0.0.1
deny from all
</Location>

<IfModule mod_jk.c>
...
JkMount  /jkmanager/* jkstatus
...
</IfModule>

Los cambios en los "workers.properties" archivo son:

 worker.list=router,tomcat1,tomcat2,...,tomcatn,jkstatus
 worker.jkstatus.type=status

Después se realizan estos cambios, que son capaces de ver el jkmanager escribiendo su URL seguido de / jkmanager / al final. Usted debe obtener algo similar a la siguiente imagen.

jkmanager pantalla

Con el fin de desactivar los trabajadores en tiempo de ejecución sólo ejecute los siguientes URL contra la jkmanger. Incluso se puede leer el estado en un formato XML.

Para desactivar tomcat1 simplemente pulse:

http://your.web.server/jkmanager/?cmd=update&w=router&opt=256&from=list&att=vwa&val0=1&val1=0&val2=0  

Para habilitar tomcat1 espalda golpeó:

http://your.web.server/jkmanager/?cmd=update&w=router&opt=256&from=list&att=vwa&val0=0&val1=0&val2=0

He publicado un artículo completo en mi blog que explica la configuración en caso de que alguien necesita saber.

Cloud Computing Blog

Otros consejos

mod_jk relee workers.properties en una "apachectl gracia", por lo que si sus workers.properties se ve así:

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1, tomcat2, tomcat3

... 

Se podía escribir un script que reemplaza a la lista balanced_workers con las que desee, y luego de Apache elegante

Actualizar aquí es un script para hacer precisamente eso, que me armó de algunos bits que tenía por ahí. No se recomienda usar en la producción, pero podría darle algunas ideas para su propia versión.

#!/bin/bash

# set some paths
WORKERS_PROPERTIES="./workers.properties"
APACHECTL="/usr/sbin/apache2ctl"

# what does the loadbalancer config line look like?
WORKER_LINE_START="worker.loadbalancer.balanced_workers="
# full list of workers
ALL_WORKERS="tomcat1 tomcat2 tomcat3"

# first command line arg is the worker to remove. 
remove=$1

# build up the new line listing the active workers
worker_line=$WORKER_LINE_START
sep=""
for worker in $ALL_WORKERS
do
  if [ ${remove} != ${worker} ]
  then
     worker_line="${worker_line}$sep $worker"
     sep=","
  fi
done

# sed hackery to replace the current line with the one we just built.
# needs gnu sed (or another one that supports in-place editing)
sed -i.bak "s/^$WORKER_LINE_START.*$/$worker_line/" $WORKERS_PROPERTIES

# restart apache
$APACHECTL graceful

gkiragiannis, que respuesta fue interesante, pero no parece funcionar para mí. Sólo quería desactivar uno de mis subworkers a la vez.

Vamos a suponer que estamos trabajando con el equilibrador de carga 'agente-lb'.

Para ver el estado del trabajador usando esta URL:

server-name/jkmanager/?cmd=list&w=agent-lb

Para desactivar el uso trabajador sub 'agente-n1' esta url:

server-name/jkmanager/?cmd=update&w=agent-lb&sw=agent-n1&vwa=1

Para garantizar que el trabajador se espera desactivado para la redirección a la página de estado del trabajador, y buscar en el campo 'Ley' para el trabajador secundario, 'agente-n1'

Para habilitar el uso trabajador sub 'agente-n1' esta url:

server-name/jkmanager/?cmd=update&w=agent-lb&sw=agent-n1&vwa=0
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top