微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nginx与Capistrano滚动重启Rails应用程序

对于我的生活,我无法弄清楚如何使这个工作正常。

问题类似于其他人的问题,例如: 如何滚动重新启动群集的mongrels

然而,我们使用Nginx / Passenger而不是Mongrel

问题是,如果我们使用这个标准在部署:重启任务:

乘客Nginx模块失败

Passenger / Ruby内存使用在Ubuntu上失控

如何在单个IP(Apache + Passenger)上部署多个rails应用程序?

在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,从负载平衡器中删除

在服务器1上重新启动Nginx-passenger

等待60秒

将服务器1添加负载平衡器

去服务器2(重复步骤3 – 5)

要做到这一点,我尝试了这个:

(lb.txt是负载均衡器查找的文件

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目前没有提供任何应用程序

Passenger + Nginx显示自定义500页面

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] 举报,一经查实,本站将立刻删除。

相关推荐