我正在寻找一种可帮助管理各种系统之间依赖关系的工具。我所说的系统是指硬件(主机)以及软件系统,例如主机 X 上的服务 A 依赖于主机 Y 上的服务 B 才能运行。目标是能够知道当我拔掉电源时哪些系统停止工作。我最感兴趣的是管理服务依赖关系,但应该以简化的方式包括网络。
我认为规则系统如下(包含许多针对标准服务的预定义规则等):
- 主机 X 上的服务 A 需要访问主机 Y 上的服务 B
- 主机 Y 上的服务 B 是标准服务 (SMTP)
- 服务 SMTP 侦听 TCP 端口 25
- ...
理想情况下,我可以“虚拟地”拔掉邮件服务器的插头,依赖管理系统会告诉我这会产生什么影响。
请注意,我正在寻找一种或多或少简单但仍然可行方法。我不我想编写自己的模拟软件,我不希望这个系统管理低级依赖关系(例如软件模块/库依赖关系)。
这样的系统存在吗?如果存在,那么这些系统叫什么?你知道哪些实现方式?
编辑:请指出那些可以解决更大问题但提供类似内容的解决方案。也许我只是在这里思维受限,你可以帮助我跳出思维定式。
答案1
听起来你描述的是一个正确实施的 CMDB(配置管理数据库),它不仅仅是一个资产登记册 - 它应该能够显示系统和系统组件之间的依赖关系。它们往往很昂贵,通常作为 ITIL 管理套件的一部分出售。
当然,这只是一张图(在计算机科学意义上),所以我确信你可以用一堆文本文件和一些 Unix CLI 工具做同样的事情。问题在于当事情发生变化时如何保持更新,这就是为什么在理想情况下,你有一个发现工具来填充它,并将其与你的变更管理流程联系起来。
答案2
这可能不是一个实用的建议,而且我不知道如何管理,可能需要一些编码......
无论如何,make
这是一个依赖管理器,尽管针对不同的用途。但编译单元和服务器只是资源……因此,您只需使用文件名来建模资源即可。如果文件存在,则资源已启动,否则资源已关闭。运行make
将告诉您受影响的内容……例如,像这样的 Makefile 可以解决问题(这是针对 GNU 的make
):
%::
touch $@
resource_A: resource_B resource_C
resource_B: resource_C resource_D
您可以省略没有依赖关系的资源。
那么你将得到以下结果:
$ rm resource_D
$ make
touch resource_D
touch resource_B
touch resource_A
并且您知道哪些资源受到了影响。