我可以将大型HAProxy配置文件拆分为多个较小的文件吗?

ste*_*och 27 haproxy

我正在构建一个具有多个前端和后端的haproxy配置文件.这将是几百行,我宁愿将其拆分为我想要负载均衡的每个不同网站的单独文件.

HAProxy是否能够链接到主haproxy.cfg文件中的部分配置文件?

小智 32

配置文件无法从配置指令链接在一起.

但是,HAProxy可以使用-f交换机多次从其命令行加载多个配置文件:

haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners 
Run Code Online (Sandbox Code Playgroud)

如果您希望灵活配置大量的配置文件,您甚至可以指定如下目录:-f /etc/haproxy.然后,文件将按其词法顺序使用,较新的文件将覆盖较旧的文件.如果提供了文档的链接,请参阅邮件列表中的示例.此信息可以在管理指南中找到,而不是常规文档.

  • haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners (2认同)

elp*_*dev 8

偶然发现这个答案,作者创建了模仿nginx禁用启用网站功能的脚本.在haproxy init.d启动时,他使用脚本循环来构建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`
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

hadissite 脚本:

#!/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"
Run Code Online (Sandbox Code Playgroud)