首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以将一个大的HAProxy配置文件拆分为多个小文件吗?

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

Stack Overflow用户
提问于 2014-09-11 05:52:07
回答 4查看 30.6K关注 0票数 32

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

HAProxy是否提供从主haproxy.cfg文件链接到部分配置文件的功能?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-12 14:29:29

配置文件不能通过配置指令链接在一起。

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

代码语言:javascript
运行
复制
haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners 

如果您想灵活地控制配置文件的数量,您甚至可以像这样指定一个目录:-f /etc/haproxy。然后这些文件将按其词法顺序使用,较新的文件将覆盖较旧的文件。有关示例,请参阅mailing list,如果提供了指向文档的链接。这些信息可以在管理指南中找到,而不是常规文档中。

票数 42
EN

Stack Overflow用户

发布于 2016-08-30 02:06:02

这是一个建立在@stephenmurdoch的答案基础上的解决方案,该答案涉及到对haproxy可执行文件使用多个-f <conf file>参数。

使用常用的CentOS 6.xRPM包含的/etc/init.d/haproxy脚本,您可以像这样修改它:

代码语言:javascript
运行
复制
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
}

准备好上面的内容后,您就可以使用所需的名称创建haproxy_<X>.cfghaproxy_<Y>.cfg等文件了。如果这些文件存在,上面的for循环将在一个扩充的daemon haproxy ...行中包含这些文件,否则将只使用常用的haproxy.cfg文件。

haproxy_<...>.cfg文件中,您需要确保在“顶层”haproxy.cfg文件中定义了全局和默认值。其余的文件只需要有前端/后端就可以了。

票数 4
EN

Stack Overflow用户

发布于 2019-05-27 11:53:05

@Bapstie的回答是,目录可以作为配置文件传递给haproxy,其中的文件将按字母顺序加载。这是正确的。

但问题是,CentOS 'base/7/x86_64‘仓库中的haproxy包太旧了,所以它不支持它。

因此,您是否需要编写一个包装器来将-f <individual config file>附加到命令,或者您需要安装最新版本的haproxy:

代码语言:javascript
运行
复制
for package in centos-release-scl-rh rh-haproxy18-haproxy; do 
    yum install -y $package
done

并为haproxy服务创建一个插件配置:

代码语言:javascript
运行
复制
[Service]
ExecStart=
ExecStart=/opt/rh/rh-haproxy18/root/sbin/haproxy -f /etc/haproxy-nutstore/ -p /run/haproxy.pid $OPTIONS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25775682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档