VM配置环境下Internal Load Balancer无法正常工作问题咨询
内部负载均衡器(ILB)无法正常工作的排查与修复
核心配置矛盾分析
你的配置存在几个关键问题,直接导致ILB无法按预期分发流量:
- 负载均衡规则监听443端口,但后端VM的Apache服务运行在80端口,且健康探测针对80端口。LB会将443的流量转发到后端443端口,而后端无对应服务,自然无响应。
- 配置了针对80端口的Inbound NAT规则,这会和负载均衡规则的端口冲突,干扰流量分发逻辑。
1. 修正负载均衡规则的端口映射
根据你的需求(通过80端口访问并轮询VM),调整负载均衡规则:
- 进入ILB的负载均衡规则页面,编辑现有规则
- 将后端端口从443修改为80,保持前端端口为80
- 确认规则关联了正确的后端池和健康探测
如果需要通过443访问,需在VM上为Apache配置SSL证书(生成自签证书或部署正式证书),并确保后端VM的443端口有服务监听,再保持LB规则的前后端端口为443。
2. 删除冲突的Inbound NAT规则
Inbound NAT规则用于将前端端口映射到单个VM的端口(比如SSH访问),不是负载均衡的配置。你配置的80端口NAT规则会抢占LB的80端口流量,导致无法分发到后端池:
- 删除针对80端口的Inbound NAT规则,仅保留必要的规则(比如22端口用于单VM的SSH访问)
3. 验证后端VM的健康状态
如果后端VM的健康探测失败,LB不会将流量分发到该VM:
- 查看ILB后端池页面,确认两台VM的健康状态为健康
- 若状态异常,执行以下排查:
- 在VM上运行
sudo netstat -tulpn | grep 80,确认Apache在0.0.0.0:80监听 - 检查VM的NSG,确保允许来自ILB探测源(VNet地址段或ILB前端IP)的TCP 80流量
- 检查Ubuntu本地防火墙:执行
sudo ufw status,若开启则运行sudo ufw allow 80/tcp开放端口
- 在VM上运行
4. 确认访问客户端的位置
内部LB仅允许同一VNet内、对等VNet内,或通过VPN/Express Route连接的资源访问。若你从VNet外部的浏览器直接访问ILB前端IP,必然无法连接:
- 在同一VNet内的另一台VM(或VPN连接的本地机器)上,用
curl <ILB前端IP>或浏览器访问,测试是否返回页面
5. 配置轮询模式的负载均衡
默认ILB使用5元组哈希会话亲和性,同一客户端可能被固定分发到同一VM。若需要交替显示VM1和VM2:
- 编辑负载均衡规则,将会话亲和性设置为无,LB会按轮询方式分发流量(前提是两台VM都处于健康状态)
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

