Comprobación de estado de AMS Dispatcher
<- Anterior: Archivos de solo lectura
Cuando tiene una línea de base de AMS instalada en Dispatcher, viene con algunas regalías. Una de estas características es un conjunto de secuencias de comandos de comprobación de estado.
AEM Estos scripts permiten al equilibrador de carga que se encuentra delante de la pila de la saber qué patas están en buen estado y mantenerlas en servicio.
Comprobación del estado del equilibrador de carga básico
AEM Cuando el tráfico de los clientes llega a través de Internet para llegar a su instancia de, pasará a través de un equilibrador de carga
Cada solicitud que llegue a través del equilibrador de carga se redondeará a cada instancia. El equilibrador de carga tiene un mecanismo de comprobación de estado integrado para asegurarse de que envía tráfico a un host en buen estado.
La comprobación predeterminada suele ser un puerto para ver si los servidores a los que se dirige el equilibrador de carga están escuchando cuando se enciende el tráfico del puerto (es decir, TCP 80 y 443)
AEM
Note:
Mientras que esto funciona, no tiene un indicador real de si la está en buen estado. Solo prueba si Dispatcher (servidor web Apache) está en funcionamiento.
AMS Health Check
AEM Para evitar el envío de tráfico a un distribuidor en buen estado que se encuentra frente a una instancia de no saludable, AMS creó algunos extras que evalúan el estado de la pierna y no solo la Dispatcher.
La comprobación de estado consta de los siguientes elementos
- 1
Load balancer
- 1
Apache web server
- 3
Apache *VirtualHost* config files
- 5
CGI-Bin scripts
- 1
AEM instance
- 1
AEM package
Cubriremos para qué está configurada cada pieza y su importancia
AEM Paquete de
AEM Para indicar si está funcionando, necesita que haga una compilación básica de la página y sirva a la página. Adobe Managed Services ha creado un paquete básico que contiene la página de prueba. La página prueba que el repositorio está activo y que los recursos y la plantilla de página se pueden procesar.
Esta es la página. Muestra el ID del repositorio de la instalación
Note:
: nos aseguramos de que la página no se pueda almacenar en caché. No comprobaría el estado real si cada vez que devuelve una página en caché.
AEM Este es el punto final de peso ligero que podemos probar para ver que el está funcionando.
Configuración del equilibrador de carga
Configuramos los equilibradores de carga para que apunten a un extremo CGI-BIN en lugar de utilizar una comprobación de puerto.
Hosts virtuales de comprobación de estado de Apache
Host virtual CGI-BIN (/etc/httpd/conf.d/available_vhosts/ams_health.vhost)
Este es el archivo de configuración de Apache <VirtualHost>
que permite ejecutar los archivos CGI-Bin.
Listen 81
<VirtualHost *:81>
ServerName "health"
...SNIP...
ScriptAlias /health/ "/var/www/cgi-bin/health/"
</VirtualHost>
Note:
archivos cgi-bin son scripts que se pueden ejecutar. Este puede ser un vector de ataque vulnerable y los scripts que utiliza AMS no son de acceso público y solo están disponibles para que los pruebe el equilibrador de carga.
Hosts virtuales de mantenimiento incorrecto
/etc/httpd/conf.d/available_vhosts/000_unhealthy_author.vhost
/etc/httpd/conf.d/available_vhosts/000_unhealthy_publish.vhost
Estos archivos se denominan 000_
como prefijo a propósito. Se configura intencionadamente para utilizar el mismo nombre de dominio que el sitio activo. AEM La intención es que este archivo se habilite cuando la comprobación de estado detecte un problema con uno de los backends de la interfaz de usuario de la interfaz de usuario de la interfaz de usuario de la interfaz de usuario de la interfaz de usuario. A continuación, ofrezca una página de error en lugar de solo un código de respuesta HTTP 503 sin página. Robará tráfico del archivo .vhost
normal porque se ha cargado antes que ese archivo .vhost
mientras se comparte el mismo archivo ServerName
o ServerAlias
. Esto hace que las páginas destinadas a un dominio en particular vayan al vhost en mal estado en lugar del predeterminado por el que fluye su tráfico normal.
Cuando se ejecutan los scripts de comprobación de estado, cierran la sesión de su estado actual. Una vez por minuto, se ejecuta un trabajo de comando en el servidor que busca entradas que no están en buen estado en el registro. AEM Si detecta que la instancia del autor no está en buen estado, habilitará el enlace simbólico:
Entrada de registro:
# grep "ERROR\|publish" /var/log/lb/health_check.log
E, [2022-11-23T20:13:54.984379 #26794] ERROR -- : AUTHOR -- Exception caught: Connection refused - connect(2)
I, [2022-11-23T20:13:54.984403 #26794] INFO -- : [checkpublish]-author:0-publish:1-[checkpublish]
Cron recoge el error y reacciona:
# grep symlink /var/log/lb/health_check_reload.log
I, [2022-11-23T20:34:19.213179 #2275] INFO -- : ADDING VHOST symlink /etc/httpd/conf.d/available_vhosts/000_unhealthy_author.vhost => /etc/httpd/conf.d/enabled_vhosts/000_unhealthy_author.vhost
Puede controlar si los sitios publicados o de autor pueden tener este error al cargar la página configurando la configuración del modo de recarga en /var/www/cgi-bin/health_check.conf
# grep RELOAD_MODE /var/www/cgi-bin/health_check.conf
RELOAD_MODE='author'
Opciones válidas:
-
autor
- Esta es la opción predeterminada.
- Esto creará una página de mantenimiento para el autor cuando no esté en buen estado
-
publicación
- Esta opción creará una página de mantenimiento para el editor cuando no esté en buen estado
-
todo
- Esta opción creará una página de mantenimiento para el autor, el editor o ambos si no están en buen estado
-
ninguno
- Esta opción omite esta característica de la comprobación de estado
Al observar la configuración de VirtualHost
para estos, verá que cargan el mismo documento como una página de error para cada solicitud que llega cuando está habilitada:
<VirtualHost *:80>
ServerName unhealthyauthor
ServerAlias ${AUTHOR_DEFAULT_HOSTNAME}
ErrorDocument 503 /error.html
DocumentRoot /mnt/var/www/default
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/mnt/var/www/default">
AllowOverride None
Require all granted
</Directory>
<IfModule mod_headers.c>
Header always add X-Dispatcher ${DISP_ID}
Header always add X-Vhost "unhealthy-author"
</IfModule>
<IfModule mod_rewrite.c>
ReWriteEngine on
RewriteCond %{REQUEST_URI} !^/error.html$
RewriteRule ^/* /error.html [R=503,L,NC]
</IfModule>
</VirtualHost>
El código de respuesta sigue siendo HTTP 503
# curl -I https://we-retail.com/
HTTP/1.1 503 Service Unavailable
X-Dispatcher: dispatcher1useast1
X-Vhost: unhealthy-author
En lugar de una página en blanco, obtendrán esta página.
Scripts CGI-Bin
Hay 5 scripts diferentes que su CSE puede configurar en la configuración del equilibrador de carga para cambiar el comportamiento o los criterios a la hora de extraer un Dispatcher del equilibrador de carga.
/bin/checkauthor
AEM Cuando se use este script, comprobará y registrará todas las instancias a las que se enfrente, pero solo devolverá un error si la instancia de author
que se está usando no está en buen estado de salud.
AEM AEM
Note:
Tenga en cuenta que si la instancia de publicación no estaba en buen estado, Dispatcher permanecería en servicio para permitir que el tráfico fluya a la instancia de creación de la instancia de la
/bin/checkpublish (predeterminado)
AEM Cuando se use este script, comprobará y registrará todas las instancias a las que se enfrente, pero solo devolverá un error si la instancia de publish
que se está usando no está en buen estado de salud.
AEM AEM
Note:
Tenga en cuenta que si la instancia de la instancia de creación no estaba en buen estado, Dispatcher permanecería en servicio para permitir que el tráfico fluya a la instancia de publicación de la instancia de la
/bin/checkEither
AEM Cuando se use, este script comprobará y registrará todas las instancias a las que se enfrente, pero solo devolverá un error si la instancia de author
o publisher
no está en buen estado de conservación.
AEM AEM
Note:
Tenga en cuenta que si la instancia de publicación o de la instancia de creación de la de publicación no se encuentra en buen estado, Dispatcher se retirará del servicio. Lo que significa que si uno de ellos estaba en buen estado, tampoco recibiría tráfico
/bin/checkboth
AEM Cuando se use, este script comprobará y registrará todas las instancias a las que se enfrente, pero solo devolverá un error si la instancia de author
y la instancia de publisher
no están en buen estado de conservación.
AEM AEM
Note:
Tenga en cuenta que si la instancia de publicación o de creación de la instancia de de publicación no se encuentra en buen estado, Dispatcher no se retirará del servicio. Lo que significa que si uno de ellos no estaba en buen estado, seguiría recibiendo tráfico y daría errores a las personas que solicitaban recursos.
/bin/healthy
AEM Cuando se use, esta secuencia de comandos comprobará y registrará cualquier instancia que esté delante, pero devolverá un estado saludable independientemente de si se devuelve o no un error o no un error.
AEM
Note:
: este script se usa cuando la comprobación de estado no funciona como se desea y permite que una anulación mantenga instancias de en el equilibrador de carga.