Solaris 10的SMF机制向系统管理员提供了统一的服务管理平台,利用它可方便地对所辖服务进行配置和管理,还可以在必要的时候自动重启服务。SMF的配置功能不但可让系统管理员在服务下线的状态下通过svccfg(1M)配置服务属性,还可以在服务联机的状态下结合使用svCADm refresh命令,动态配置和启用最新属性。另外,SMF还提供编程接口API(包含在libscf.so库中),利用它可以取代用户的配置文件以及相应的配置读取解析逻辑,享受专业级配置工具svccfg(1M)带来的便利。本文将结合一个例子讲述如何在应用程序中使用libscf.so所提供的部分API实现SMF服务refresh方法。
服务配置概述
对于大部分服务类应用而言,为了适应运行环境的多变性,一般都会在服务程序中编写配置读取模块,在服务启动时通过读取配置来决定如何提供服务。比如,一个典型的网络服务可能在服务启动时通过读取配置文件决定网络服务端口、服务日志路径等。配置的存在形式有多种,比如配置文件、数据库记录,甚至简单到使用操作系统环境变量等。无论配置采用何种形式存在,为了能获取配置值,服务程序需要自行实现相应的配置读取和解析逻辑。
除了在服务启动时需要读取配置外,有些行业领域要求服务应用可在服务运行过程中具有动态采用新配置的功能。这就要求开发人员编写更复杂的逻辑以保证服务进程在运行过程中可在适当的时机,重新读取配置并采用新配置,同时又必须保证新配置的采用过程不会导致服务进程不稳定甚至崩溃。动态读取配置的时机可有多种方式,较简单的方法比如,通过向服务进程发送某个特定信号,服务进程接到信号后重新读取配置,然后根据新配置设置服务环境并继续提供服务。
SMF框架对服务配置的支持
标签: