Solaris 服务状态和依赖性

Solaris 服务状态和依赖性

我正在为 MySQL 和依赖于 MySQL 服务的 WebLogic 服务创建服务清单。我希望他们所有人都使用管理模型“等待”(在前台运行进程)。我对这个设置有一些疑问。

首先,我如何决定服务的状态?例如,当我在使用服务之前创建 MySQL 脚本时,mysqld_safe在后台启动脚本后,我会 ping 它直到得到响应;我想在继续之前确保它已准备好。现在有了这项服务,它立即进入“在线”状态,尽管我不确定它是否真的准备好了。

如果这个问题没有好的解决方案,我将 MySQL DB ping 放在 WebLogic 脚本本身中,并在一定次数的尝试后以状态 1 退出。但是,该服务将不断重新启动。非零退出后如何强制服务进入维护模式?

最后,我得到了依赖项,只要 MySQL 服务在线,WebLogic 服务就不会启动,但我对此有两个问题:

  1. 如何让 WebLogic 服务在 MySQL 服务关闭时尝试启动它?
  2. 当WebLogic服务已经在线时,如何才能使其在MySQL服务出现故障时也被关闭?

答案1

1 - 在为 weblogic 服务配置 xml 清单时将 mysql 服务定义为依赖服务。这样只要没有报告mysql服务完全在线,你的weblogic就不会启动。这似乎合乎逻辑,因为您的 weblogic 应用程序将依赖于 mysql 服务可用性,因此当 mysql db 服务关闭时,它不会执行不必​​要的 db connect/sql 语句执行尝试。

2 - 由于依赖项服务进入脱机/降级状态,您的 weblogic 服务也将脱机并且不会运行。因此,weblogic 服务没有机会尝试使 mysql 服务重新上线,因为它本身正在进入维护模式。更重要的是,不能保证 weblogic 在此之后启动,因为 mysql 服务将进入维护/离线/降级模式,smf 会将 weblogic 服务标记为降级/离线,因此不能用于启动 mysql 服务。这可能是循环依赖的明显情况,应该通过使用第三个模块/cronjob/瞬态服务来处理这两个服务来解决。

现在很明显,主要依赖服务是 mysql,为了保证 weblogic 的可用性和干净的功能,它几乎一直在线运行,我建议使用第三个模块/脚本(甚至像 cronjob 那样)来监视状态mysql 服务作为首选优先级,然后是 weblogic 服务。它应该负责处理/执行 SMF 修复命令,以防任何服务出现故障。

答案2

更好地使用流形询问和配置服务来为您创建 xml 文件:http://code.google.com/p/manifold/

相关内容