小编joe*_*ney的帖子

EC2自动缩放不会在服务器上放置名称(标记)

我在EC2上创建了一个自动缩放组,它工作得很好.服务器根据负载向上和向下扩展.我想在管理方面获得更多信息,并且想知道是否有办法让自动缩放组动态地将名称添加到它启动的实例中.我指的是使用key = Name和value = autogeneratedid添加标签.

例如,如果我有一个名为test-group的自动缩放组,则服务器将使用以下名称启动:

test-group-1
test-group-2
test-group-3
...
Run Code Online (Sandbox Code Playgroud)

我想在EC2管理控制台中找到它们进行枚举,但是现在它们只是显示为"空"名称(Tag key = Name未在实例上明确设置).

有任何想法吗?

amazon-ec2 amazon-web-services autoscaling

14
推荐指数
1
解决办法
7173
查看次数

如何优雅地重启delayed_job消费者?

我想知道在新代码推送后优雅地重启delayed_job消费者的最佳方法是什么?我正在使用capistrano推送代码,我知道有重启的命令,但是如果当前正在运行的作业,该命令要么挂起(我的部署需要永久),要么强行退出当前正在运行的作业,我会丢失数据.

理想情况下,我希望我的部署发生如下:

  1. 现有的delayed_job使用者使用版本1代码运行
  2. 我运行cap deploy并将第2版代码推送到新服务器
  3. 在部署期间,我们触摸文件以告知delayed_job在处理完当前作业时重新启动.这可以通过一系列不同的方式来完成,但我认为它与乘客如何优雅地重新启动类似
  4. 现有的delayed_job使用者继续使用版本1代码完成当前作业
  5. 当前作业完成,delayed_job消费者发现它需要在继续处理作业之前重新启动
  6. delayed_job使用者自动重启,现在运行版本2代码
  7. delayed_job使用者继续处理作业,现在运行在版本2代码上

我试图通过检查代码的当前版本来插入一些代码以在作业运行之前重新启动,但每次我这样做时,它就会死掉并且实际上不会重新启动任何东西.示例代码如下:

def before(job)
  # check to make sure that the version of code here is the right version of code
  live_git_hash = LIVE_REVISION
  local_git_hash = LOCAL_REVISION

  if live_git_hash != local_git_hash
    # get environment to reload in
    environment = Rails.env # production, development, staging

    # restart the delayed job system
    %x("export RAILS_ENV=#{environment} && ./script/delayed_job restart")
  end
end
Run Code Online (Sandbox Code Playgroud)

它检测到它很好但它在shell调用时死亡.有任何想法吗?

谢谢!

capistrano ruby-on-rails delayed-job

7
推荐指数
1
解决办法
2959
查看次数