前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HAProxy匹配泛解析域名排错过程分享

HAProxy匹配泛解析域名排错过程分享

作者头像
星哥玩云
发布2022-07-04 12:59:57
5K0
发布2022-07-04 12:59:57
举报
文章被收录于专栏:开源部署

一 故障描述 HAProxy已经搭建完毕,现在需要把以后缀为game.linuxidc.com的域名转发到后端的Nginx虚拟机主机上,所以关键在于怎么使用HAProxy匹配game.linuxidc.com。在HAProxy的配置文件中设置将HTTP请求转发到后端Nginx主机的80端口,通过88端口检测Nginx和PHP-FPM的监控状态。

通过设置HAProxy ACL规则 acl game_url      hdr_end(host) -i  game.linuxidc.com

然后reload HAProxy后,通过浏览器访问始终报404错误

如在浏览器访问router-taiwan.game.linuxidc.com/index.php,通过在后端Nginx的log日志上查看对应域名的日志输出没有任何显示,只有Nginx默认的访问日志有日志。说明这个域名HAProxy根本没有转发过来。于是怀疑是HAProxy的ACL规则写错了。

二 排错过程 1.查HAProxy ACL匹配规则的资料,怀疑是ACL规则设置有问题 将acl一栏注释掉,不设置特定acl规则,设置默认转发

1  default_backend game_pool

这样所有的域名请求都会默认转发到game_pool指定的Nginx主机,再查看Nginx访问日志,仍然没有特定域名的范围日志,而只有Nginx的默认访问日志。所以排除是ACL转发规则的问题。

2.检查HAProxy对后端Nginx主机的监控检查机制。 在HAProxy中设置的是通过检测后端Nginx主机的php-fpm_status的状态来判断后端Nginx主机上的Nginx和PHP-FPM的健康状态的。因为只判断Nginx或只判断PHP-FPM是不能判断后端Nginx主机可用的。 nginx_php-fpm_status.conf

server {             listen      88;             location /nginx_status {                      stub_status on;             access_log off; #            allow 127.0.0.1; #            allow 10.4.1.125; #            deny all;                                   }                              location /php-fpm_status {             fastcgi_pass 127.0.0.1:9000;             fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;             include fastcgi_params;                                     }           }

# curl 192.168.100.63:88/php-fpm_status pool:                www process manager:      dynamic start time:          11/Feb/2015:16:00:27 +0800 start since:          2703 accepted conn:        1367 listen queue:        0 max listen queue:    0 listen queue len:    128 idle processes:      19 active processes:    1 total processes:      20 max active processes: 1 max children reached: 0 slow requests:        0

在HAProxy中设置有

option httpchk  GET /php-fpm_status  server  linuxidc-taiwan-game1  192.168.100.63:80    check  maxconn 2000

这里发现了问题,由于设置HAProxy是通过请求/php-fpm_status去判断健康状态的,但是这个URL需要使用88端口访问,这里使用check参数默认会根据192.168.100.63:80设置的80端口去检测。

重新设置检测端口为88 server  linuxidc-taiwan-game1  192.168.100.63:80    check port 88  maxconn 2000

然后reload一下HAProxy,通过浏览器访问router-taiwan.linuxidc.com/index.php就可以正常访问了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档