我有近 200 行 ACL 配置haprox.cfg
,还包含 150 个后端。为了消除这种配置复杂性,我想将此配置捆绑在单独的文件中,并将导入这些文件haprox.cfg
。这在 haproxy 中可行吗?
答案1
据我所知,HAproxy 没有与 apache 类似的东西Include & IncludeOptional
指令。
-f <config-file>
除了通过重复命令行开关启动 HAproxy 之外,没有对多个配置文件的本机支持。请参阅此主题。
你可以编写一些脚本来将多个子部分合并为一个更大的文件,类似于这种方法虽然我可能会走这条路,并修改初始化脚本自动附加其他配置文件(未经测试):
# Load additional configuration snippets from /etc/haproxy.d/*.cfg
OPTIONS=""
for file in /etc/haproxy.d/*.cfg ; do test -f $file && OPTIONS="$OPTIONS -f $file" ; done
start() {
/usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors found in configuration file, check it with '$BASENAME check'."
return 1
fi
echo -n "Starting $BASENAME: "
daemon /usr/sbin/$BASENAME -D -f /etc/$BASENAME/$BASENAME.cfg $OPTIONS -p /var/run/$BASENAME.pid
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
return $RETVAL
}
答案2
我看到版本 1.7.5-2 2017/05/17 有以下帮助:
-f <configuration file|dir>
Specify configuration file or directory path. If the argument is a directory the files (and only files) it contains
are added in lexical order (using LC_COLLATE=C) ; only non hidden files with ".cfg" extension are added.
因此,在我的例子中,编辑/etc/default/haproxy
它包含
CONFIG="/etc/haproxy/"
使我能够放入更多.cfg 文件,/etc/haproxy
并且所有文件都被读取和配置。
答案3
您可以按照这个简单的步骤操作。
- 插入一行脚本(
cat /etc/$BASENAME/conf.d/*.cfg > $CFG
)在/etc/init.d/haproxy
这里是必须插入行的位置
CFG=/etc/$BASENAME/$BASENAME.cfg cat /etc/$BASENAME/conf.d/*.cfg > $CFG [ -f $CFG ] || exit 1
- 使用以下命令重新加载守护进程配置
systemctl daemon-reload
- 创建目录
mkdir /etc/haproxy/conf.d
- 将默认的 haproxy.cfg 移至 conf.d 作为 global.cfg
mv /etc/haproxy/haproxy.cfg /etc/haproxy/conf.d/global.cfg
- 在 conf.d 目录中创建另一个 .cfg 文件
- 只需重新启动 haproxy 服务
systemctl restart haproxy
- 注意:
/etc/haproxy/haproxy.cfg
将自动从 conf.d/ 中的所有文件创建