运行多个远程服务器 shell 并等待结果的中央服务器 shell

运行多个远程服务器 shell 并等待结果的中央服务器 shell

我制作了一个服务器控制外壳,其工作原理如下

  1. 在中央服务器上运行 master shell。
  2. 主 shell 异步调用备用服务器上的远程 shell。
  3. 每个备用服务器 shell 都会写入 '服务器 xxx 完成' 在中央服务器上的同一结果文件上。
  4. 同时,Master Shell 定期读取结果文件,直到每个服务器都写入 '完毕'。
  5. 然后,Maste shell 切换负载平衡。

但我不认为在文件上写入并循环解析它不是理想的通信方式。

我的 shell 最大的问题是,如果任何远程 shell 无法写入,主 shell 将永远等待完毕'无论出于什么原因。


环境电压

系统是 Centos7,master shell 运行在bash. Master 运行每个重新启动的服务器 shell tomcat,并等待完全启动。如果特定端口已启动,远程 shell 会修改主 shell 通过ssh命令读取的结果文件。但我不喜欢服务器如何通过awk和交换信息grep。我想应该有更好的方法。


问题

  1. 在主 shell 在后台执行多个远程 shell 的情况下,交换结果数据的最佳方式是什么?

  2. 在上面的工作流程中,如何使主 shell 仅在步骤 #4 成功时才运行步骤 #5,而不使其无限期等待?我想避免普通服务器必须重新启动。


编辑

Master Shell 执行远程 shell 后,它会使用服务器名称运行 while 循环。

结果文件看起来像这样,

server1 RUNNING
server2 RUNNING
server3 RUNNING

掌握 shell greps server1, server2,server3并检查状态是否为RUNNING,FAILEDDONE

如果它 grep DONE,shell 会将该服务器从循环中删除。

远程 shell 只是在 tomcat 正常启动时awk RUNNING进行。DONE

相关内容