我正在构建一个有多个前端和后端的haproxy配置文件。这将是几百行的长度,我宁愿将它分成单独的文件,为每个不同的网站,我想要负载均衡。
HAProxy是否提供从主haproxy.cfg文件链接到部分配置文件的功能?
发布于 2014-09-12 14:29:29
配置文件不能通过配置指令链接在一起。
但是,多次使用-f
开关,HAProxy可以从其命令行加载多个配置文件:
haproxy -f conf/http-defaults -f conf/http-listeners -f conf/tcp-defaults -f conf/tcp-listeners
如果您想灵活地控制配置文件的数量,您甚至可以像这样指定一个目录:-f /etc/haproxy
。然后这些文件将按其词法顺序使用,较新的文件将覆盖较旧的文件。有关示例,请参阅mailing list,如果提供了指向文档的链接。这些信息可以在管理指南中找到,而不是常规文档中。
发布于 2016-08-30 02:06:02
这是一个建立在@stephenmurdoch的答案基础上的解决方案,该答案涉及到对haproxy
可执行文件使用多个-f <conf file>
参数。
使用常用的CentOS 6.xRPM包含的/etc/init.d/haproxy
脚本,您可以像这样修改它:
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>.cfg
和haproxy_<Y>.cfg
等文件了。如果这些文件存在,上面的for循环将在一个扩充的daemon haproxy ...
行中包含这些文件,否则将只使用常用的haproxy.cfg
文件。
在haproxy_<...>.cfg
文件中,您需要确保在“顶层”haproxy.cfg
文件中定义了全局和默认值。其余的文件只需要有前端/后端就可以了。
发布于 2019-05-27 11:53:05
@Bapstie的回答是,目录可以作为配置文件传递给haproxy,其中的文件将按字母顺序加载。这是正确的。
但问题是,CentOS 'base/7/x86_64‘仓库中的haproxy包太旧了,所以它不支持它。
因此,您是否需要编写一个包装器来将-f <individual config file>
附加到命令,或者您需要安装最新版本的haproxy:
for package in centos-release-scl-rh rh-haproxy18-haproxy; do
yum install -y $package
done
并为haproxy服务创建一个插件配置:
[Service]
ExecStart=
ExecStart=/opt/rh/rh-haproxy18/root/sbin/haproxy -f /etc/haproxy-nutstore/ -p /run/haproxy.pid $OPTIONS
https://stackoverflow.com/questions/25775682
复制相似问题