【问题标题】:Net::SSH connection fails from inside resque jobNet::SSH 连接从 resque 作业内部失败
【发布时间】:2011-04-15 23:40:13
【问题描述】:

我有一个设置创建 EC2 实例的应用程序 - 我有一个 resque 任务,它将在服务器启动并运行后(通过 ssh)配置:

    Net::SSH.start(server.dns_name, 'root', :keys => ['~/.ssh/testkey.pem'], :paranoid => false, :verbose => :debug) do |ssh|
         result = ssh.exec!("ls -l")
         puts result
    end

我收到一个错误:

*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>

如果我从 irb 或我的 rails 应用程序运行它,它的连接就很好。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails net-ssh resque


    【解决方案1】:

    这是一个时间问题 - EC2 实例在接受 ssh 请求之前“启动”。我在 20 秒内再次重试了错误(最多 5 次)。现在工作。

      begin
         Net::SSH.start(server.dns_name.to_s, 'root', :keys => ['/Users/stevebrewer/.ssh/testkey.pem'], :paranoid => false) do |ssh|
           result = ssh.exec!("ls -la")
           puts result
         end
      rescue
         if(retries < 5)
           Resque.enqueue_at(20.seconds.from_now, ServerBuilder, server_id, retries + 1)
         end
      end
    

    【讨论】:

    • ServerBuilder、server_id 是 AWS 特定的吗?我认为如果它更通用,答案会更好。除此之外,竖起大拇指!
    猜你喜欢
    • 1970-01-01
    • 2011-11-11
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多