对于我的生活,我无法弄清楚如何使这个工作正常。
问题类似于其他人的问题,例如: 如何滚动重新启动群集的mongrels
然而,我们使用Nginx / Passenger而不是Mongrel。
问题是,如果我们使用这个标准在部署:重启任务:
乘客Nginx模块失败
Passenger / Ruby内存使用在Ubuntu上失控
如何在单个IP(Apache + Passenger)上部署多个rails应用程序?
Rails应用程序和乘客的Nginx子域失败
task :restart,:roles => [:app],:except => {:no_release => true} do run "cd #{deploy_to}/current && touch tmp/restart.txt" end
它触及每个Web服务器上的restart.txt文件,但是目前服务请求的任何乘客实例都需要在新的产生之前完成。 这会造成严重的延迟,并导致我们的应用在2分钟内不可用,而一切都恢复正常。
部署代码
在服务器1上重新启动Nginx-passenger
等待60秒
去服务器2(重复步骤3 – 5)
要做到这一点,我尝试了这个:
task :restart,:except => {:no_release => true} do servers = find_servers_for_task(current_task) servers.map do |s| run "cd #{deploy_to}/current && echo '' > public/lb.txt",:host => s.host run %Q{rvmsudo /etc/init.d/Nginx-passenger restart > /dev/null},:host => s.host sleep 60 run "cd #{deploy_to}/current && echo 'ok' > public/lb.txt",:host => s.host end end
然而,这在部署过程中几乎可行,似乎是通过服务器angular色中列出的每个服务器运行一次服务器循环。 我们目前有6个应用程序服务器,所以循环运行6次,每个服务器重新启动Nginx-passenger 6次。
我只需要这个循环来运行一次。
我知道最终乘客似乎会重新开始滚动,但似乎还不存在。
如果有帮助,我们正在使用Capistrano 2.x和Rails 3
任何帮助将是伟大的。
谢谢。
502坏网关/导轨4 / Nginx /乘客4.0.49 /
REST API:使用Apache http web / content服务器Sinatra Passenger应用程序服务器
AWS ELB不断在redirect的位置标题中显示私有IP
Phusion Passenger目前没有提供任何应用程序
run "cd #{deploy_to}/current && echo 'ok' > public/lb.txt",:host => s.host
实际上应该是:
run "cd #{deploy_to}/current && echo 'ok' > public/lb.txt",:hosts => s.host
我碰到了这个具有滚动重启功能的gem capify-ec2。 在github上的capify-ec2。
我即将安装并试用。
“这个特性允许你一次一个地将代码部署到实例中,而不是同时部署,这对于更复杂的应用程序是有用的,在部署后可能需要更长的时间来启动,Capistrano将执行一个完整的部署(包括任何自定义钩子)一个实例,可选地对该实例执行HTTP健康检查,然后在部署成功的情况下继续下一个实例。
部署后,将显示状态报告,指示部署成功,失败或未开始的实例。 如果出现一些故障,可能需要手动采取进一步措施。 例如,如果从ELB中删除实例(请参阅下面的'使用Elastic Load Balancers'部分),并且部署失败,则出于安全原因,实例将不会重新注册到ELB。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。