使用 Ansible 检查作业是否正在同一网络中的另一台服务器上运行

使用 Ansible 检查作业是否正在同一网络中的另一台服务器上运行

在私有网络上,我有两台服务器,我们称它们为 server01 和 server02。它们在同一个网络中。

第二台服务器是反弹服务器,即如果 server01 不再处于活动状态,则第二台服务器必须确保接管并运行某些作业,尤其是在使用 Ansible 时。

在我的 server01 上,我有这个 ansible:

---
- hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - name: Ensure to run script bash every minutes
      cron:
        name: "Launch Indicators job"
        minute: "*/1"
        job: "bash /root/indicators/indicator_job.sh && docker-compose up"

这个 ansible playbook 确保运行一个 bash 脚本和一个 docker 镜像。

现在,我想知道的是如何使用 ansible 检查此作业是否在 server01 上每分钟运行一次,如果不是,则以相同的方式在 server02 上运行它。使用 Ansible 不是检查“健康“下面我将描述在 ansible playbook 下运行的作业。我只是想确保能够检查此作业的状态,如果没有运行,则在第二台服务器上启动相同的作业。需要说明的是,我无法使用另一台服务器或机器。我必须使用 server01 和 server02 才能实现这一点。

答案1

我会使用专用的作业调度软件. 其中一些是开源的。

答案2

您可以考虑一个简单的主动/备用解决方案,例如:keepalived。对于每分钟的健康检查进程状态,您应该使用脚本(健康检查条件和操作)+ crontab(每分钟运行一次的计划作业)。

相关内容