Wiki [Tuto/HowTo] Nextcloud - Health Check avec HaProxy

0
6
oct.
2018

Introduction

Pour des raisons d'efficacité et d'optimisation, il est déconseillé d'utiliser l'index.php ou status.php afin de faire les Health Check de HaProxy ou tout autre frontend.
Ici nous allons utiliser un script dédié dont le but est de tester "l'état de santé" des machines tout en consommant le moins de ressources possible.
Les variables permettant de configurer le script peuvent, et il est conseillé de le faire, être rangée directement dans le fichier config.php de nextcloud.

Rappel : En cas de mise à jours Nextcloud râlent s'il détecte des fichiers qui ne sont pas d'origine. Lors d'une update pensez donc a déplacer le fichiers ailleurs puis a le ré-insérer une fois la mise à jours terminée.

Mise en place

Ajoutez le script suivant à la racine de votre installation de Nextcloud.

cd /var/www/html/nextcloud/
wget https://gitlab.com/voxdemonix/cluster/raw/master/HealthCheck/nextcloud/HealthCheck.php

Ou si vous préférez la version minimisée (moins consommatrice de ressources et plus rapide mais illisible pour un humain).

cd /var/www/html/nextcloud/
wget https://gitlab.com/voxdemonix/cluster/raw/master/HealthCheck/nextcloud/HealthCheck.min.php -O HealthCheck.php

Accordez dessus les bonnes permissions.

chown www-data:www-data ./HealthCheck.php

Adaptez puis ajoutez dans votre fichier de configuration HaProxy ( /etc/haproxy/haproxy.cfg ), les lignes suivantes à votre backend qui gère votre cloud.

        http-check expect status 204
        option httpchk GET http://www.my_cloud.com/HealthCheck.php HTTP/1.0

Exemple :

backend nextcloud_cluster
        mode http
        balance leastconn
        http-request add-header X-Forwarded-Proto https if { ssl_fc }
        option forwardfor
        http-check expect status 204
        option httpchk GET http://www.my_cloud.com/HealthCheck.php HTTP/1.0
        cookie SERVERID insert indirect nocache
        default-server inter 10s fastinter 500 fall 2 rise 2
                # force https
       acl http      ssl_fc,not
       http-request redirect scheme https if http

    server Machine1 Machine1:80 weight 1 check cookie Machine1
    server Machine2 Machine2:80 weight 1 check cookie Machine2

Maintenant éditez vos fichiers de configuration vhost pour apache2

nano /etc/apache2/sites-enabled/vhost-www.my-cloud.com.conf

Ajoutez les lignes suivante en adaptant éventuellement le path vers votre fichier log.

SetEnvIf Request_URI HealthCheck.php dontlog
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.