我有不同的进程必须按顺序运行,但它们位于两台不同的服务器上。简而言之,我想做的是: 1. 在服务器 A 上运行进程 1 2. 在服务器 B 上运行进程 2 3. 在服务器 A 上运行进程 3
但是在第一个过程完成之前,第二个过程无法开始。
两台服务器具有 SSH 连接。我想使用 cron 启动全局进程。但我不想用 crontab 启动它们,并且它们之间的等待时间很长,只是为了确保在启动第二个之前完成第一个。以另一种方式,如何从本地脚本在远程服务器上启动一个进程,等待远程脚本完成后再继续下一行?
这是工作流软件的一个共同特点。
我想你可以自己动手,但你必须考虑如果第二台主机不可用时该怎么办,如果下一个间隔出现时初始 cronjob 仍在运行时该怎么办,等等。它不是当多部分/多主机进程的一部分发生故障时,您需要流控制、分支和其他逻辑的时间太长了。
袖手旁观的最明显答案(并且可能充满了它自己的错误)是通过附加到原始 cronjob 的 ssh 命令附加第二阶段的启动。
您可能必须在主机之间设置 ssh 密钥以允许从初始主机自动登录。
第二种选择是以某种方式在主机之间传递状态信息,例如第二个定期拾取的原始主机上的标志文件等。我通常认为这不太理想,因为它涉及轮询,但您似乎并不这里需要一个企业级的解决方案,否则这将被发布在 serverfault 上。
您可能需要类似RPC的东西,其中每台机器只是简单地告诉另一台它完成了一项任务并且应该运行下一项。您还可以将主脚本放在一台机器上,包含在另一台机器上运行命令的部分,有点“内联”。
ssh
将在远程机器上运行命令;以最简单的形式: