阅 读 文 章

应用部署为Solaris 10 SMF服务

[来源:网上转载 () | 作者:网友() | 时间:2007-07-07 | 浏览:人次 ]

myapp.xml必须符合/usr/share/lib/xml/dtd/service_bundle.dtd.1规范,其意理解如下:

1. <service_bundle>标签用以告知SMF如何处理myapp.xml文件。本例中myapp.xml是一个manifest文件用以定义SMF服务,所以type赋为“manifest”。同时需要给service_bundle一个名字,一般命名规范是以服务所在安装包名为前缀,所以本例将name赋为“mypackage:myapp”。其实name只要不与系统中已有的相重就可以了,当然对于企业级应用服务应该有一个合适的名字。

2. <service>标签主要定义SMF服务的名称,由于myapp只是一个简单应用,所以name赋为 “application/myapp”。如果myapp是网络服务,则根据命名规范名字应以“network/”开头加myapp,即 “network/myapp”,请参考/var/svc/manifest/下的目录结构以此类推。type当然应赋为“service”。至于 version,根据情况设定,缺省取1。

3. 根据需要SMF服务可以为同一个服务启动多个实例(instance)。比如,在系统中同一种数据库平台可以启动多个服务实例,分别服务于不同的应用;或者同一种WEB服务平台启动多个服务实例,在不同的端口提供不同WEB应用服务等。在SMF框架中只需定义一个SMF service及属性,在同一个service下定义不同的instance和特定属性即可。service下已定义的属性适用于所有instance,但任何一个instance也可以根据需要特定某个或某几个属性。比如增加属性或覆盖service同名属性定义。由于本例非常简单,只需一个服务一个实例就行了,所以采用标签<single_instance/>,所有属性全部采用service中的属性即可。

4. 由于希望myapp服务在系统boot时自动启动,所以将<create_default_instance>标签中enable置为“true”。

5. <dependency>是manifest文件中最难定义的部分,它定义了此服务所依赖的其他资源,包括服务、文件系统等。一个SMF服务根据需要可以定义多个<dependency>,每个<dependency>具有自己的标识名name、grouping、 restart_on、type,以及所依赖的各资源的service_fmri。其中name只是个标识,不相重有意义即可。grouping取值定义了所列其他服务与本资源的依存关系,取值“require_all”是指当所列其他资源全部启动和可用后才能满足本服务启动的要求。restart_on 规定了当所依赖的其他资源发生何种情况时需要重启本服务,取值“none”是指只要本服务处于运行状态就行了,不必考虑所依赖的其他资源的状态是否改变。 type指向依赖资源的类型,比如“service”指服务,“path”指文件系统等。service_fmri指其他服务的FMRI(Fault Management Resource Idengifier)。本例仅需在/tmp目录下生成日志文件,而“milestone/multi-user”所指的运行状态完全可以满足要求,所以 service_fmri设为“svc:/milestone/multi-user”。

有关milestone的概念请参看Solaris Service Management Facility - Quickstart Guide

6. manifest文件必须定义启动和停止服务的方法,<exec_method>标签即用于此目的。原先利用 /etc/init.d/myapp.sh加合适的参数即可启动和停止myapp,现仍可利用。不过myapp.sh需作小小改动,改动方法请参看下节启停方法客户化。对于启动和停止,分别需要定义两个method,它们的type当然都为“method”,其中一个name设为为“start”, exec表示执行什么动作以完成这个start方法,其动作设为“/export/home/smfdemo/myapp.sh start”。另一个name设为“stop”,由于原脚本是使用pkill命令杀掉myapp进程,所以这里可以直接将“:kill”赋给exec,表示SMF可直接杀掉myapp服务相关的所有进程。timeout_seconds定义了完成启动和停止服务操作所需的最长时间,如果在这个时间内未能完成相应操作,SMF会认为服务存在问题,因为会将服务置为maintenance状态,由人工进行排错。本例中,timeout_seconds设为60 秒足矣。

论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 服务 部署 应用 SMF 可以 myapp 启动 文件 exit 方法

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.