ruby - 为什么使用Parallel gem运行 “knife solo cook”会给出端口错误?

标签 ruby sockets parallel-processing chef-infra knife-solo

我们正在尝试在远程计算机上运行“刀独奏”命令。当我们在每台计算机上依次执行命令时,它不会打ic。
我们试图通过使用Parallel gem来并行化它,如下所示:

Parallel.each(machines, in_threads => machines.size) do |machine|
   knife solo cook machine.user + ":" + machine.ip <options>
end
这样做,恰好首先运行的线程将按预期执行。但是,其他线程不会执行并因错误而停止:“EADDRINUSE:地址已在使用中-127.0.0.1:8889的bind(2)”
我们在调用knife solo cook进行调查的位置处放置了一个netstat命令,发现第一个线程已在端口8889上打开了一个监听套接字。
我们确实打开了任何套接字,也没有发现任何迹象表明knife或Net:SSH(由knife使用)正在执行此操作。
有谁知道谁在打开这个 socket ?还是是否有任何配置文件?
谢谢!
编辑:忘了提一下,在调用knife solo prepare之前,我们对cook进行了同样的操作,效果很好。
另外,所有远程机器都已正确设置了厨师独奏。

最佳答案

同意nick,您将必须编写一种机制来监听多个端口,或者根据需要生成端口。

您也可以引用tomcat的用例,我们可以为multipe构建生成tomcat的多个实例,它使用某种机制来做到这一点。一个很好的用例来了解它。

关于ruby - 为什么使用Parallel gem运行 “knife solo cook”会给出端口错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24083204/

相关文章:

ruby-on-rails - Rails attr_accessor 和 attr_writer

ruby - 屏幕抓取 HTML 头部内容?

java - 如何通过java套接字发送Json对象?

sockets - Twisted上的IPv6链路本地多播

python - tfidf 上的 scikit-learn NearestNeighbors .kneighbors() 给出 ValueError : UPDATEIFCOPY base is read-only

python - 如何使用 dask 高效地并行化时间序列预测?

ruby - 从 Ruby 执行 PowerShell

sockets - 如何模拟 “no route to host”错误?

matlab - 如何在具有 2 台计算机的本地网络中在 matlab 中设置并行计算?

ruby - 运行 Docker 时无法运行 ruby​​ 命令