español - haproxy documentation
¿Puedo dividir un archivo de configuración grande de HAProxy en varios archivos más pequeños? (4)
Encontré esta respuesta donde el author creó guiones para imitar la funcionalidad de habilitación de sitios de nginx enable. En el inicio de haproxy init.d, utiliza un bucle de script para construir la concatenación de los comandos 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`
guión haensite
:
#!/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 $1..."
cd /etc/haproxy/sites-enabled
ln -s ../sites-available/$1 ./
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 $1..."
rm -f /etc/haproxy/sites-enabled/$1
echo "To activate the new configuration, you need to run:"
echo " /etc/init.d/haproxy restart"
Estoy creando un archivo de configuración de haproxy que tiene varios front y backends. Tendrá varios cientos de líneas y prefiero dividirlo en archivos separados para cada uno de los diferentes sitios web en los que quiero cargar el equilibrio.
¿HAProxy ofrece la posibilidad de vincular a archivos de configuración parciales del archivo principal haproxy.cfg?
Esta fue una solución basada en la respuesta de @ stephenmurdoch que involucró el uso de múltiples argumentos -f <conf file>
para el ejecutable de haproxy
.
Usando la secuencia de comandos incluida /etc/init.d/haproxy
CentOS 6.x RPM, puede corregirlo así:
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
}
Con lo anterior en su lugar, puede crear archivos como haproxy_<X>.cfg
y haproxy_<Y>.cfg
utilizando los nombres que desee. El bucle for anterior incluirá estos archivos en una línea de daemon haproxy ...
aumentada daemon haproxy ...
si estos archivos están presentes, de lo contrario, el archivo haproxy.cfg
se usará únicamente.
Dentro de los archivos haproxy_<...>.cfg
, debe asegurarse de que sus valores globales y predeterminados estén definidos en el archivo haproxy.cfg
"nivel haproxy.cfg
". El resto de los archivos simplemente necesitan tener frontend / backends y nada más.
Los archivos de configuración no se pueden vincular desde una directiva de configuración.
Sin embargo, HAProxy puede cargar múltiples archivos de configuración desde su línea de comando, usando el interruptor -f
varias veces:
haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners
Si desea ser flexible con la cantidad de archivos de configuración, incluso puede especificar un directorio como este: -f /etc/haproxy
. Los archivos se utilizarán en su orden léxico, y los archivos más nuevos anularán los archivos más antiguos. Consulte la lista de correo para ver un ejemplo, si proporciona enlaces a la documentación. Esta información se puede encontrar en la guía de administración, no en los documentos regulares.
Puedes seguir este sencillo paso.
- Inserte una secuencia de comandos de línea (
cat /etc/$BASENAME/conf.d/*.cfg > $CFG
) en/etc/init.d/haproxy
Aquí está la posición donde debes insertar la línea.
CFG=/etc/$BASENAME/$BASENAME.cfg cat /etc/$BASENAME/conf.d/*.cfg > $CFG [ -f $CFG ] || exit 1
- Recargar la configuración del daemon con
systemctl daemon-reload
- Hacer directorio
mkdir /etc/haproxy/conf.d
- Mueva el haproxy.cfg predeterminado a conf.d como global.cfg
mv /etc/haproxy/haproxy.cfg /etc/haproxy/conf.d/global.cfg
- Cree su otro archivo .cfg en el directorio conf.d
- Simplemente reinicie su servicio haproxy
systemctl restart haproxy
- NOTA:
/etc/haproxy/haproxy.cfg
creará automáticamente desde todos los archivos en conf.d /