在haproxy.cfg中导入配置文件

在haproxy.cfg中导入配置文件

我有近 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

您可以按照这个简单的步骤操作。

  1. 插入一行脚本(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
  2. 使用以下命令重新加载守护进程配置systemctl daemon-reload
  3. 创建目录mkdir /etc/haproxy/conf.d
  4. 将默认的 haproxy.cfg 移至 conf.d 作为 global.cfgmv /etc/haproxy/haproxy.cfg /etc/haproxy/conf.d/global.cfg
  5. 在 conf.d 目录中创建另一个 .cfg 文件
  6. 只需重新启动 haproxy 服务systemctl restart haproxy
  7. 注意:/etc/haproxy/haproxy.cfg将自动从 conf.d/ 中的所有文件创建

相关内容