Haproxy(Openshift)无法检查Rails 4根路径

时间:2014-04-25 10:11:39

标签: ruby-on-rails ruby openshift haproxy

我正在使用Openshift,Haproxy,Ruby on Rails和Postgresql作为后端。我已成功部署了所有内容,但Haproxy无法向我的rails应用程序的根路径发送HTTP请求。

应用根/日志/ haproxy.log

[ALERT] 114/053517 (469622) : proxy 'express' has no server available!    
[WARNING] server express/local-gear is DOWN, reason: Layer7 wrong status, code: 404

应用根/日志/ haproxy_ctld.log

ERROR -- : Could not connect to the application.  Check if the application is stopped.

应用根/日志/ ruby​​.log

"OPTIONS /products HTTP/1.0" 404 1351 "-" "-"

的routes.rb

  root :to => 'products#index'

haproxy.cfg

global  
   maxconn 4096  
   stats socket /var/lib/{ID}/haproxy//run/stats level admin

defaults  
   log   global  
   mode   http  
   option   httplog  
   option   dontlognull
   option http-server-close  
   retries   3  
   option redispatch  
   maxconn   128
   timeout http-request   10s
   timeout queue 1m
   timeout connect 10s
   timeout client 1m
   timeout server 1m
   timeout http-keep-alive 10s
   timeout check 10s

listen stats xxx.xxx.xxx.131:8080
  mode http
  stats enable
  stats uri /

listen express xxx.xxx.xxx.130:8080
  cookie GEAR insert indirect nocache
  option httpchk /

  balance leastconn
  server local-gear xxx.xxx.xxx.129:8080 check fall 2 rise 3 inter 200 cookie local-{APP_ID}

我删除了公共文件夹(Rails)中的index.html。但是,当我再次将index.html文件添加到公共文件夹时,一切正常,我可以访问我的应用程序:app_name-appdomain.rhcloud.com/products 这并不完美,因为我想在不向URL添加/产品的情况下访问它。

感谢您的帮助! 如果您需要有关设置的更多详细信息,请与我们联系

干杯!

1 个答案:

答案 0 :(得分:1)

所以你可以尝试解决这个问题,其中一个应该解决你的问题。

  1. 选项A:尝试将行option httpchk /更改为option httpchk GET / 如果这不起作用,请确保您的webroot中有index.html。如果您不喜欢这种方法或想要指向其他一些html文件(存在于Web根目录中),您可以将其修改为option httpchk some-other-file.html

  2. 选项B:只需注释这一行,但会影响haproxy健康检查。

  3. 选项C:将行修改为

  4.   

    选项httpchk OPTIONS * HTTP / 1.1 \ r \ nHost:\ www

    其中www是您的应用链接,例如,XXX-yyy.rhcloud.com

    4.另外一个观察结果是,haproxy可能无法检查Rails路径,因为haproxy.cfg最后一行的超时似乎相当少。尝试更改" 200" (2ms)到" 20000" (20S)。