在私有网络上,我有两台服务器,我们称它们为 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(每分钟运行一次的计划作业)。