我们使用 systemd 在生产环境中运行各种服务。(呃……)
我们正在构建一个匹配的“灾难恢复”站点,该站点将安装相同的应用程序——使用相同的 systemd-units 以在发生灾难时启动其各种组件。
这种 DR 环境是“热的”,准备在短时间内接管(越短越好)——从而成为生产本身。然后,当“灾难”解决后,另一个环境将成为 DR。
我的问题是,如何让这些 systemd-services 准备好启动,但直到某个条件变为真才真正启动?
为了得出结论,特定站点当前是主要站点(生产),命令 ( amIthePrimary
) 需要运行并以 0 退出代码退出。检查既简单又快速——可以每分钟执行一次。但是,因为它需要运行命令,所以 systemd 没有Condition
提供它。
我是否将该命令放入每个单元的 ExecPre
中,或者这会成为一个嘈杂的错误,不必要地惹恼管理员?我是否将其与所有其他服务一起放入一个独立的单元中Require
?
另外,一旦条件为真——服务启动——我如何继续检查它,所以它们都将关闭,它是否应该再次变为假?