我们正在尝试在远程机器上运行刀独奏烹饪命令。当我们在每台机器上按顺序执行命令时,它可以毫无问题地工作。我们尝试使用这样的Parallel gem 来并行化它:
Parallel.each(machines, in_threads => machines.size) do |machine|
knife solo cook machine.user + ":" + machine.ip <options>
end
这样做,恰好首先运行的线程按预期执行。但是,其他线程不执行并停止并出现错误:“EADDRINUSE:地址已在使用中 - bind(2) for 127.0.0.1:8889”
我们在调用knife solo cook
调查的同一个地方输入了一个 netstat 命令,发现第一个线程在 8889 端口上打开了一个 Listen 套接字。我们确实打开了任何套接字,也没有发现任何迹象表明刀或 Net:SSH(由刀使用)正在执行此操作。
有谁知道谁在打开这个套接字?或者是否有任何配置文件?
谢谢!
编辑:忘了提,我们knife solo prepare
在打电话之前做同样的事情cook
,效果很好。此外,远程机器都正确设置了厨师独奏。