2 votes

Comment utiliser HAProxy avec des variables d'environnement lorsqu'il est exécuté en tant que service ?

Je suis nouveau sous Linux et j'essaie de configurer HAProxy avec des variables d'environnement. J'utilise Debian 8 (Jessie) et HAProxy 1.5.8 que j'ai installé à l'aide de la commande apt-get conformément à https://haproxy.debian.net/#?distribution=Debian&release=jessie&version=1.5

Sans variables d'environnement, la configuration fonctionne parfaitement.

J'ai suivi les instructions de cette réponse (en définissant la variable d'environnement de /etc/init.d/haproxy ) pour faire fonctionner les variables d'environnement, mais j'obtiens toujours la réponse 503 - Service Unavailable.

J'ai ensuite consulté /etc/init.d/haproxy et j'ai pensé que ces deux lignes modifiaient peut-être l'étendue des variables disponibles

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

Je les ai donc supprimées.

Je peux alors démarrer HAProxy en utilisant sudo /etc/init.d/haproxy start et ma configuration fonctionne comme prévu, mais lorsque j'essaie d'exécuter le programme sudo service haproxy start Je reçois toujours le message 503 - Service Unavailable.

Il me semble que cette question contient la réponse que je cherche, mais je n'ai pas été en mesure de traduire les réponses de ce site dans mon domaine.

C'est dans cette partie du fichier haproxy.cfg que j'utilise les variables d'environnement :

backend backend1
    server EnvVar ${SERVER_IP}:86 maxconn 512

J'ai également consulté d'autres questions ici sans trouver de solution à mon problème.

Comment définir une variable d'environnement pour qu'elle puisse être lue par haproxy lorsque haproxy est exécuté en tant que service ?

1voto

Johan Gov Points 141

J'ai fini par comprendre.

En /lib/systemd/system/haproxy.service il y a une ligne comme celle-ci

EnvironmentFile=-/etc/default/haproxy

J'ai regardé dans /etc/default/haproxy et voici à quoi cela ressemble :

# Defaults file for HAProxy
#
# This is sourced by both, the initscript and the systemd unit file, so do not
# treat it as a shell script fragment.

# Change the config file location if needed
#CONFIG="/etc/haproxy/haproxy.cfg"

# Add extra flags here, see haproxy(1) for a few options
#EXTRAOPTS="-de -m 16"

J'ai ajouté ma variable d'environnement à cet endroit et j'ai annulé le reste de mes modifications. Le système fonctionne à la fois lorsqu'il est exécuté en tant que service et lorsqu'il est exécuté directement en utilisant la commande /etc/init.d/haproxy .

Voici la ligne que j'ai ajoutée :

SERVER_IP=165.88.76.44

0voto

Cette réponse est correcte et fonctionne correctement sur haproxy 1.7 - 1.8

Voici un simple script pour améliorer l'utilisation de plusieurs fichiers haproxy :

cd /etc/sysconfig

for i in haproxy_*; do 
   echo $i; 
   echo "MY_SERVER=$(hostname -i)" >> $i   
done

Maintenant, dans les paramètres de Haproxy :

...
backend lochttps

   server server_name ${MY_SERVER}:60441 check ssl verify none id 1
...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X