两台Web服务器负载均衡场景下haproxy.cfg配置语法咨询
问题解答
1. 权重配置是否符合需求
不符合。
Haproxy的roundrobin算法会按照后端服务器权重占总权重的比例分配流量:当前配置两台服务器权重总和为70+30=100,流量分配比例为70%:30%,和你要求的70:20(对应比例约77.8%:22.2%)不匹配。
如果要达到你的需求,只需把第二台服务器的weight值改为20即可,修改后配置如下:
server {{ server2Name }} {{ server2IP }} check weight 20
2. {{ Port }}变量是否需要手动指定
你的配置是基于Ansible角色的模板语法,变量取值规则如下:
- 你已经在
vars/main.yml中定义了Port取hostvars['node1']['ansible_port']的值,如果你提前在Ansible inventory清单中给node1节点配置了ansible_port=80,就不需要额外手动指定。 - 如果inventory中没有配置对应的
ansible_port参数,你可以选择两种方式修改:一是在inventory中给node1补充ansible_port=80变量,二是直接把vars/main.yml中的Port值改为固定值Port: 80。
3. 80端口的配置范围
需根据业务链路区分:
- 负载均衡前端必须配置80端口:也就是
frontend main段的bind参数需绑定80,才能接收外部发向负载均衡80端口的业务请求。 - 后端是否需要配置80,取决于两台Web服务器的服务端口:如果Web服务器自身是用80端口提供HTTP服务,你需要在backend app的server配置行补充端口标识,示例如下:
server {{ server1Name }} {{ server1IP }}:80 check weight 70 server {{ server2Name }} {{ server2IP }}:80 check weight 20
如果Web服务器用的是其他端口(比如8080),就替换为对应的端口即可。
- 管理服务器不需要配置80端口,它仅负责执行Ansible部署任务,不处理业务流量。
额外注意:你当前提供的backend配置中,server行没有指定后端端口,属于不完整配置,运行会报错,请务必补充对应端口。
内容的提问来源于stack exchange,提问作者Futurex
相关产品推荐
相关产品推荐

