CentOS 9下Nginx配置Presto双上游负载均衡故障排查
问题排查与解决:Presto Coordinators Nginx负载均衡失效
以下是针对CentOS 9 + Nginx 1.22.1环境下Presto Coordinators负载均衡失效的排查步骤与解决方案:
1. 验证Nginx上游块与Server块配置
首先确认presto_coordinators上游配置无语法错误,且已正确关联到对应的Server块:
- 上游块示例配置(确保负载均衡策略、节点信息正确):
upstream presto_coordinators { least_conn; # 可替换为round-robin、ip_hash等策略 server 192.168.33.10:8080 max_fails=3 fail_timeout=30s; # 添加其他Coordinator节点(如果有) } - Server块需正确引用上游:
server { listen 8086; # 自定义Coordinator负载均衡端口 location / { proxy_pass http://presto_coordinators; # 必须保留的代理头,避免Presto识别异常 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } - 执行配置校验与重载:
nginx -t && systemctl reload nginx
2. 检查Presto Coordinator监听地址
确认Coordinator节点的8080端口监听在可被Nginx访问的地址上:
- 在Coordinator节点执行端口监听检查:
确保输出中监听地址为netstat -tulpn | grep 80800.0.0.0:8080或192.168.33.10:8080,而非127.0.0.1:8080(仅本地可访问)。 - 若监听地址错误,修改
config.properties添加:
重启Presto服务生效。http-server.http.address=192.168.33.10
3. 排查Discovery服务的影响
注意到你的Coordinator配置中discovery.uri指向Resource Manager的负载均衡端口http://localhost:8085:
- 如果客户端是通过Discovery服务获取Coordinator地址,而非直接访问Nginx的Coordinator负载均衡端口,那么Nginx的负载均衡不会生效。需确保客户端直接连接Nginx的Coordinator LB端口,或调整Discovery服务配置,让其返回Nginx LB的地址。
4. 网络与权限排查
- 连通性测试:在Nginx节点执行,确认能访问Coordinator节点的8080端口:
curl -I http://192.168.33.10:8080/v1/info - 防火墙配置:检查CentOS 9防火墙是否开放8080端口:
若未开放,添加规则并重载:firewall-cmd --list-allfirewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload - SELinux影响:若SELinux处于Enforcing状态,临时关闭测试:
若测试正常,配置SELinux允许Nginx网络连接:setenforce 0setsebool -P httpd_can_network_connect on
5. Nginx日志定位问题
查看Nginx日志获取具体报错信息:
- 错误日志路径:
/var/log/nginx/error.log - 访问日志路径:
/var/log/nginx/access.log
搜索presto_coordinators相关请求,排查是否存在连接超时、拒绝连接等异常,根据日志信息精准定位问题。
内容的提问来源于stack exchange,提问作者codemaster1101
相关产品推荐
相关产品推荐

