Puis-je diviser un grand fichier de configuration HAProxy en plusieurs fichiers plus petits?
je suis en train de construire un fichier de configuration haproxy qui a plusieurs interfaces front et backends. Il va y avoir plusieurs centaines de lignes et je préférerais le diviser en fichiers séparés pour chacun des différents sites Web que je veux mettre en équilibre.
est-ce que HAProxy offre la possibilité de créer un lien vers des fichiers de configuration partiels à partir de haproxy principal.fichier cfg?
4 réponses
les fichiers de Configuration ne peuvent pas être reliés entre eux à partir d'une directive de configuration.
cependant HAProxy peut charger plusieurs fichiers de configuration à partir de sa ligne de commande, en utilisant le -f
passer plusieurs fois:
haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners
Si vous voulez être flexible avec la quantité de fichiers de configuration, vous pouvez même spécifier un répertoire comme ceci: -f /etc/haproxy
. Les fichiers seront alors utilisés dans leur ordre lexical, les fichiers plus récents supplantant les fichiers plus anciens.
Voir le liste de diffusion pour un exemple, si fournit des liens vers la documentation. Cette information se trouve dans le guide de gestion et non dans les documents réguliers.
suis Tombé sur cette réponseauteur création de scripts pour imiter nginx désactiver la fonctionnalité activer les sites. Dans l'init haproxy.d démarrage il utilise la boucle script pour construire la concaténation des commandes haproxy-F.
/ etc / init.d / haproxy:
EXTRAOPTS=`for FILE in \`find /etc/haproxy/sites-enabled -type l | sort
-n\`; do CONFIGS="$CONFIGS -f $FILE"; done; echo $CONFIGS`
haensite
script:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "You must be a root user" 2>&1
exit 1
fi
if [ $# -lt 1 ]; then
echo "Invalid number of arguments"
exit 1
fi
echo "Enabling ..."
cd /etc/haproxy/sites-enabled
ln -s ../sites-available/ ./
echo "To activate the new configuration, you need to run:"
echo " /etc/init.d/haproxy restart"
hadissite
script:
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "You must be a root user" 2>&1
exit 1
fi
if [ $# -lt 1 ]; then
echo "Invalid number of arguments"
exit 1
fi
echo "Disabling ..."
rm -f /etc/haproxy/sites-enabled/
echo "To activate the new configuration, you need to run:"
echo " /etc/init.d/haproxy restart"
il s'agissait d'une solution construite à partir de la réponse de @stephenmurdoch qui impliquait l'utilisation de multiples -f <conf file>
arguments haproxy
exécutable.
en utilisant les CentOS de stock 6.x TR / min inclus /etc/init.d/haproxy
script, vous pouvez le modifier comme suit:
start() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
echo -n $"Starting $prog: "
# start it up here, usually something like "daemon $exec"
#daemon $exec -D -f $cfgfile -f /etc/haproxy/haproxy_ds.cfg -f /etc/haproxy/haproxy_es.cfg -f /etc/haproxy/haproxy_stats.cfg -p $pidfile $OPTIONS
daemon $exec -D -f $cfgfile $(for i in /etc/haproxy/haproxy_*.cfg;do echo -n "-f $i ";done) -p $pidfile $OPTIONS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
avec ce qui précède en place, vous pouvez alors créer des fichiers tels que haproxy_<X>.cfg
et haproxy_<Y>.cfg
utilisez les noms que vous voulez. Le ci-dessus pour boucle d'inclure ces fichiers dans un augmentée daemon haproxy ...
ligne si ces fichiers sont présents, sinon le stock haproxy.cfg
fichier sera utilisé uniquement.
dans les haproxy_<...>.cfg
fichiers vous devez vous assurer que votre global et par défaut sont définis dans le "toplevel" haproxy.cfg
fichier. Le reste des fichiers simplement besoin d'avoir frontend/backend et rien de plus.
vous pouvez suivre cette simple étape.
- Insérer une ligne de script (
cat /etc/$BASENAME/conf.d/*.cfg > $CFG
)/etc/init.d/haproxy
Voici la position où vous devez insérer la ligneCFG=/etc/$BASENAME/$BASENAME.cfg cat /etc/$BASENAME/conf.d/*.cfg > $CFG [ -f $CFG ] || exit 1
- recharger la config de daemon avec
systemctl daemon-reload
- directory
mkdir /etc/haproxy/conf.d
- Déplacer par défaut haproxy.cfg à conf.d comme mondial.cfg
mv /etc/haproxy/haproxy.cfg /etc/haproxy/conf.d/global.cfg
- créer votre autre .fichier cfg dans conf.d répertoire
- redémarrez simplement votre service haproxy
systemctl restart haproxy
- NOTE:
/etc/haproxy/haproxy.cfg
sera automatiquement créé à partir de tous les fichiers de conf.d/