设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> 操作系统 >> Solaris 10 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Solaris到Linux应用的移…
支持64位应用 苹果推出M…
Netware的应用层协议
Novell推出可替代微软的…
虚拟化技术对应用软件安…
OS X真正PC安装版应用问…
64位应用程序的开发
Windows系统进程应用知识…
注册表照相机Regsnap应用…
Windows 2000活动目录应…
  应用部署为Solaris 10 SMF服务         ★★★★★
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28 #!/sbin/sh

###############################################################################

# /export/home/smfdemo/myapp.sh #

###############################################################################

. /lib/svc/share/smf_include.sh

RUN_OK=0

CONFIG_ERROR=1

FATAL_ERROR=2

case "$1" in

'start')

/export/home/hunter/smf/myapp_smf

if [ $? -eq $CONFIG_ERROR ]; then

exit $SMF_EXIT_ERR_CONFIG

fi

if [ $? -eq $FATAL_ERROR ]; then

exit $SMF_EXIT_ERR_FATAL

fi

;;

*)

echo "Usage: $0 start"

;;

esac

exit $SMF_EXIT_OK

部署我的应用为SMF服务

管理和修改SMF服务分别需要solaris.smf.manage和solaris.smf.modify权限,具体请参看 smf_security(5)。缺省只有root有此权限,可使用root部署SMF服务。如果使用普通用户账号,则需要root将solaris.smf.manage和 solaris.smf.modify权限赋予相关用户。方法是在/etc/user_attr文件中加入授权记录。比如为用户hunter加入SMF管理和修改权限,则/etc/user_attr显示如下,其中粗斜体部分为hunter所需的权限。

# cat /etc/user_attr

#

# Copyright (c) 2003 by Sun Microsystems, Inc. All rights reserved.

#

# /etc/user_attr

#

# user attributes. see user_attr(4)

#

#pragma ident "@(#)user_attr 1.1 03/07/09 SMI"

#

adm::::profiles=Log Management

lp::::profiles=Printer Management

root::::auths=solaris.*,solaris.grant;profiles=Web Console Management,All;lock_after_retries=no

hunter::::auths=solaris.smf.manage,solaris.smf.modify

假设本例中开发目录和所有文件都位于/export/home/smfdemo目录下,则将本例部署为SMF服务的步骤如下:

1. 使用svccfg(1M)命令检查myapp.xml文件是否符合XML规范。如果没问题则不会有任何输出,否则根据出错提示修改myapp.xml。

# /usr/sbin/svccfg validate /export/home/smfdemo/myapp.xml

2. 使用svcs(1)命令看是否已存在名为myapp的服务。如有则必须修改在myapp.xml中定义的服务名,否则继续。

# /usr/bin/svcs application/myapp

3. 使用svccfg(1M)命令加载myapp.xml所定义的服务并自动启动服务。

# /usr/sbin/svccfg import /export/home/smfdemo/myapp.xml

4. 使用svcs(1)命令查看myapp服务状态。如状态为online,则说明部署已成功且已运行,否则参看出错原因以及SMF日志以确定问题所在,然后重复上文中相关的步骤后再试。

# /usr/bin/svcs -xv application/myapp

至此,我的应用myapp已经成功部署为SMF。

其他操作

myapp成为SMF服务后可以使用以下命令进行管理。

1. 要禁用myapp服务,请使用/usr/sbin/svcadm disable application/myapp。

2. 要再次启用myapp服务,请使用/usr/sbin/svcadm enable application/myapp。

3. 要重启myapp服务,请使用/usr/sbin/svcadm restart application/myapp。

4. 当myapp服务出现配置错误或其他原因致使myapp的状态为maintenance时,在解决错误原因后,可使用/usr/sbin/svcadm clear application/myapp清除maintenance状态。

5. 当需要对myapp进行维护时,可将其状态改为maintenance状态,方法是/usr/sbin/svcadm mark application/myapp。

6. 可使用svccfg(1M)命令对myapp进行配置管理。具体方法请参看svccfg(1M)使用说明。

总结

Solaris 10操作系统是Sun公司最新的下一代操作系统,包含了600多项革新技术,SMF技术就是其中之一。通过使用SMF技术,系统中所有的服务可以在一个统一而强大的平台中进行配置和管理。同时,它也是预测性自愈技术的组成部分,可以自我侦测各服务的运行状态,尽可能地减少服务下线的机率。另外,利用SMF 技术系统管理员可以降低系统维护难度,减少人为出错机会。让我们把自已的应用尽早地部署到SMF框架中去吧。

参考资料

1. Predictive Self-Healing at BigAdmin System Administration Portal

2. SMF System Administration Guide

3. Solaris 10操作系统/usr/share/lib/xml/dtd/service_bundle.dtd文件

4. Solaris 10操作系统上,以下man页面:

  • netadm(1M)
  • inetconv(1M)
  • inetd(1M)
  • kernel(1M)
  • smf(5)
  • smf_bootstrap(5)
  • smf_method(5)
  • svc.startd(1M)
  • svcadm(1M)
  • svccfg(1M)
  • svcprop(1)
  • svcs(1)
(责任编辑:铭铭

上一页  [1] [2] 

应用部署为Solaris 10 SMF服务
 

设为“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秒足矣。

事实上还有许多标签项目可以设定,但对于本例不是必要的,所以可省略不设。有关manifest文件编写更详细信息,请参看Solaris Service Management Facility - Service Developer Introduction。

启停方法客户化

SMF框架中svcs(1)命令非常有用,它不但可以列出系统中所有的服务资源及状态,还可以提供那些未正常启动的服务的出错原因、影响范围和可能的恢复方法等。比如,它可以报告说某个服务因为配置不正确而未正常启动,或者某服务遇到致使错误请参SMF的某个日志文件等。SMF之所以能够提供这些信息是由于启动和停止方法提供了相关的信息。SMF要求所有启动和停止方法必须返回一组特定的值,具体值可以参看Solaris 10操作系统/lib/svc/share/smf_include.sh文件尾部。

本例中,表2所示的/etc/init.d/myapp.sh可能返回3种值,$CONFIG_ERROR、$FATAL_ERROR和$RUN_OK。现目标是要替换原返回值为相应的SMF返回值,如果没有相应的SMF返回值,则替换为最合适的SMF返回值,使服务非正常退出时,SMF能够报告可令人接受的错误原因。本例修改方法如下:

1. 首先,将表2所示的/etc/init.d/myapp.sh文件拷贝到开发目录下,比如/export/home/smfdemo目录下。后面步骤中所有修改都改在拷贝内。

2. 通过增加“. /lib/svc/share/smf_include.sh”到myapp.sh头部,将SMF所需的各返回变量和过程包含到myapp.sh脚本。

3. 替换“exit $CONFIG_ERROR”为“exit $SMF_EXIT_ERR_CONFIG”,因为$SMF_EXIT_ERR_CONFIG与原退出码$CONFIG_ERROR退出原因最相近。

4. 替换“exit $FATAL_ERROR”为“exit $SMF_EXIT_ERR_FATAL”,因为$SMF_EXIT_ERR_FATAL与原退出码$FATAL_ERROR退出原因最相近。

5. 替换“exit $RUN_OK”为“exit $SMF_EXIT_OK”,因为$SMF_EXIT_OK与原退出码$RUN_OK退出原因最相近。

6. 删除stop case及其操作。因为stop方法已在myapp.xml中另行处理,不再需要myapp.sh了。

7. 修改default case中的echo,以反映正确的usage。

修改后的myapp.sh如表4所示。至此,所有前期准备工作都已完成,下面就可以进行部署了。

表4.

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2006-10-13
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:admin    责任编辑:admin 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持