Pourquoi mon équilibreur de charge Lightsail échoue-t-il à la surveillance de l'état alors que le site Web fonctionne correctement ?

Date de la dernière mise à jour : 18/10/2021

J'utilise un équilibreur de charge Amazon Lightsail pour mon instance Amazon Lightsail avec une pile Bitnami. Pourquoi la surveillance de l'état de l'équilibreur de charge échoue-t-elle alors que le site Web fonctionne correctement ? Comment puis-je empêcher l'échec de la surveillance de l'état de l'équilibreur de charge ?

Brève description

L'équilibreur de charge Lightsail effectue la surveillance de l'état en vérifiant la réponse de l'URL http://ipaddress:80/healthcheckpath. La surveillance de l'état réussit si le code d'état de la réponse est200 OK. Cette vérification de réponse n'est pas personnalisable dans l'équilibreur de charge Lightsail. Si votre instance applique la redirection HTTPS, http://ipaddress:80/healthcheckpath renvoie le code d'état de réponse301 ou 302 au lieu de200 OK. Cela entraîne un échec de la surveillance de l'état.

Le même problème peut se produire sur les instances WordPress Multisites car ces instances redirigent l'URL http://ipaddress:80/healthcheckpath vers http://ipaddress.nip.io/healthcheckpath par défaut.

Résolution

Remarque : Les chemins d'accès aux fichiers dans les étapes de résolution suivantes peuvent varier selon que la pile Bitnami utilise des packages système Linux natifs (approche A) ou s'il s'agit d'une installation autonome (approche B). Pour identifier votre type d'installation Bitnami, exécutez la commande suivante :

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

Les étapes utilisées pour résoudre ce problème varient en fonction des éléments suivants :

  • La redirection est configurée à l'aide de plugins d'application WordPress, tels que Really Simple SSL.
  • La redirection est configurée en utilisant des règles de redirection de serveur Web.
  • Vous utilisez une instance de pile WordPress Multisite.

La redirection est configurée à l'aide de plugins d'application WordPress

Créez un fichier HTML dans la racine du document de votre site Web. Modifiez ensuite la configuration de la surveillance de l'état de l'équilibreur de charge pour ajouter ce fichier en tant que fichier de surveillance de l'état. Vous devez utiliser cette méthode car les redirections au niveau de l'application n'affectent généralement pas les fichiers HTML qui ne font pas partie de votre application à l'origine.

1.    Connectez-vous à votre instance Lightsail.

2.    Accédez à l'emplacement racine du document de votre site Web dans lequel vous avez stocké les fichiers de votre site Web.

Dans la pile Bitnami sous l'approche A, l'emplacement racine du document est /opt/bitnami/appname/ (par exemple, /opt/bitnami/wordpress).

Dans la pile Bitnami sous l'approche B, l'emplacement racine du document est /opt/bitnami/apps/appname/htdocs (par exemple, /opt/bitnami/apps/wordpress/htdocs).

Dans la pile Bitnami LAMP, l'emplacement racine du document est /opt/bitnami/apache2/htdocs.

3.    Créez un fichier HTML vide en le téléchargeant ou en exécutant la commande suivante :

touch health.html

4.    Accédez à la page d'accueil de Lightsail, puis sélectionnez Réseaux.

5.    Choisissez votre équilibreur de charge.

6.    Dans l'onglet Instances cibles, choisissez Personnaliser la surveillance de l'état.

7.    Saisissez le chemin d'accès health.html, puis choisissez Enregistrer.

8.    Assurez-vous que http://ipaddress:80/health.html renvoie la réponse 200OK à l'aide d'un vérificateur d'en-tête HTTP.

9.    Attendez quelques minutes, puis vérifiez que la surveillance de l'état est réussie.

La redirection est configurée en utilisant des règles de redirection du serveur Web

Ajoutez une règle d'exception pour le fichier de surveillance de l'état dans les règles de redirection du serveur Web afin que seuls les fichiers du site Web d'origine soient redirigés, et non le fichier de surveillance de l'état.

1.    Suivez les étapes 1 à 7 dans la section La redirection est configurée à l'aide de la section des plugins d'application WordPress.

2.    Ouvrez le fichier du serveur Web dans lequel vous avez ajouté des règles de redirection HTTPS, puis ajoutez la ligne suivante juste avant la ligne qui commence par RewriteRule :

RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ "

Voici des exemples de règles de redirection :

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html’ "
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

Effectuez la modification précédente des règles dans les emplacements suivants :

Pile Bitnami sous l'approche A :/opt/bitnami/apache2/conf/bitnami/bitnami.conf ainsi que tout fichier se terminant par le préfixe -vhost.conf dans le répertoire /opt/bitnami/apache2/conf/vhosts/.

Pile Bitnami sous l'approche B : /opt/bitnami/apache2/conf/bitnami/bitnami.conf.

3.    Redémarrez le service Web.

sudo /opt/bitnami/ctlscript.sh restart

4.    Assurez-vous que http://ipaddress:80/health.html renvoie la réponse 200OK à l'aide de ce vérificateur d'en-tête HTTP.

5.    Attendez quelques minutes, puis vérifiez que la surveillance de l'état est réussie.

Vous utilisez une instance de pile WordPress Multisite

WordPress Multisite redirige l'URL http://ipaddress:80/healthcheckpath vers http://ipaddress.nip.io/healthcheckpath par défaut. Pour résoudre ce problème, procédez comme suit :

1.    Suivez les étapes 1 à 7 dans la section La redirection est configurée à l'aide de la section des plugins d'application WordPress.

2.    Ouvrez le fichier /opt/bitnami/apache2/conf/vhosts/wordpress-vhost.conf et ajoutez la ligne suivante dans la section # BEGIN nip.io redirection :

RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html' "

Voici un exemple de règles avec la ligne ajoutée :

# BEGIN nip.io redirection
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(:[0-9]{1,5})?$
RewriteCond expr "! %{REQUEST_URI} -strmatch '*health.html'"
RewriteRule ^/?(.*) %{REQUEST_SCHEME}://%1.nip.io%2/$1 [L,R=302,NE]
# END nip.io redirection

3.    Redémarrez le service Web.

sudo /opt/bitnami/ctlscript.sh restart

4.    Assurez-vous que http://ipaddress:80/health.html renvoie la réponse 200OK à l'aide de ce vérificateur d'en-tête HTTP.

5.    Attendez quelques minutes, puis vérifiez que la surveillance de l'état est réussie.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?