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

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

二 排错过程
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_root$fastcgi_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

HAproxy 的详细介绍:请点这里
HAproxy 的下载地址:请点这里

相关推荐