最近在学习微软的System Management Server(简称SMS),从其安装、配置和使用上了解其进行系统管理的思路,希望能够加以模仿和借鉴。
因为不在乎产品的稳定,所以下载的是最新的SMS v4 Beta 1,这样可以了解其最新的思路。其介绍称,为了配合微软的Dynamic System Intiative(DSI)战略,SMS v4的正式名称应该是System Center Configuration Manager 2007。
SMS的功能主要有:
SMS主要有几个组成部分
SMS Client
SMS Client是安装在客户机上的。分为有两种,Advanced Client和Legacy Client,后者主要是为了兼容旧的系统。
客户端的组件
在客户端的组件表里,我们可以看到所有已经安装的组件。
SMS Inventory Agent,负责软硬件资产的收集。
SMS Remote Tools Agent,负责远程管理。
SMS Software Metering Agent,负责软件的审计。
...
为了降低系统资源的占用,所有组件都是可以单独启用和禁止,并在SMS Site Server上统一配置。这就讲到了SMS的重点----
基于策略的管理
策略就是对要进行的决定和动作的一种计划。
A policy is a plan of action to guide decisions and actions. The term may apply to government, private sector organizations and groups, and individuals. The policy process includes the identification of different alternatives, such as programs or spending priorities, and choosing among them on the basis of the impact they will have. Policies in short can be understood as political, management, financial, and administrative mechanisms arranged to reach explicit goals.
http://en.wikipedia.org/wiki/Policy
策略定义保存在SMS Site Server上,SMS Client会定时(默认是60分钟)去获取和更新自己的策略定义,然后在本地执行。
策略的执行其实就是一种配置的过程,所以SMS才会改名为Configuration Manager。
相对于以前的主动控制式的管理(姑且这么称呼),基于策略的管理有以下特点。
基于策略的管理,其实也是微软传统的系统管理方式。在微软的网络环境里,Active Directory就是负责保存所有的策略/配置信息,然后每台计算机根据这些策略进行配置执行。配置管理在MOF和ITIL里是占有重要的一席之地的,以后有时间我们再探讨。
SMS的策略分为两种,一种是Machine Policy,是针对机器的,不管当前的登录用户是谁。而另一种是User Policy,是针对用户的,不同的用户登录,其对应的策略可能是不一样的。
基于策略的管理,其关注点是结果,即最后要达到的目标。首先设定一个目标(或者说Baseline),然后定义一个策略来强制,这样就可以保证所有的机器最后都达到我们设定的要求(如果不是,至少我们能知道谁没有达到)。主动控制式的管理,关注的是单个的操作过程,其结果是无法保证的。而且即便这次操作成功了,你怎么能保证以后不会发生变化?
基于策略的管理,客户端需要一个策略执行引擎,这会占用一定的资源。而为了减轻服务器的压力,SMS Client默认60分钟才会更新一次策略,所以其及时性不是很强。
Agent
前面说了客户端的组件,其实就是不同的Agent,分别执行不同的管理任务,符合"Manager-Agent"的管理模型(简单点解释就是Manager发出指令,Agent接收并执行,最后返回结果)。对于Agent的配置,是通过策略来完成的,Agent之间基本没有什么联系。所以要增加新的管理功能,只要增加新的Agent就可以了!关于这一点,我们也可以从服务器上针对不同Agent的EndPoint可以看得出来。所谓的EndPoint就是接收Agent提交数据的入口,不同的Agent有不同的入口(EndPoint),Agent和EndPoint是配对使用的。理论上,对Agent与其EndPoint之间的通讯方式是没有要求的。
SMS Site Server
在继续之前,我们有必要先解释几个概念
SMS Component
SMS是由很多组件构成的,客户端和服务端均是如此。我们可以分别对其进行控制,就像在控制面板里管理服务一样。但是,不是每个组件都会出现在系统的控制面板里的,所以大多数你只能通过SMS Administrator Console来进行查看和管理。
比如我们就可以在Console的Component Status里看到以下的组件:
SMS_EXECUTIVE,负责运行其它组件。
SMS_MP_CONTROL_MANAGER,提供Management Point的功能。
SMS_NETWORK_DISCOVERY,提供网络自动发现客户端的功能。
...
SMS站点的层次关系
SMS分为主站点(Primary Site)和次站点(Secondary Site)两种类型。主要区别是,前者带有Site Database,而后者没有。
主站点下面可以连接多个下级(Child)的主站点和次站点,而次站点不允许有任何的下级站点(Child Site)。
所有的下级站点都要把自己获得的客户端的资产信息和SMS的状态信息上报给上级站点(Parent Site),如此反复直至最顶级的站点(Central Site)。所以,每一个主站点的Site Database里都会包含所有下级站点的状态信息和客户端的信息,而Central Site将拥有整个站点树的客户端的信息。
要对一个SMS Client进行管理,你需要用SMS Administrator Console连接到任何SMS Client所在的站点(如果是主站点的话),或者任何一个上级站点。
从SMS站点关系来看,站点之间的通讯量是很大的,特别是在站点树的顶端。为此,SMS提供了一个叫做Sender的组件来完成站点之间可靠的数据交换。Sender的类型有
我们可以看到,Sender甚至不必建立一条物理的网络连接。所以,Sender的数据交换不是实时的,而是按照一定的时间周期来进行的。
采用级联的站点管理之后,SMS就可以支持客户端漫游了。客户端不管在什么地方上网,都可以接受管理,包括软件分发。关于漫游的机制,因为比较复杂,我们留待以后再探讨。
待续:
Collection and Query
Hardware and Software Inventory
Software Distribution
Reporting
...
参考资料:
Systems Management Server 2003 Concepts, Planning, and Deployment Guide
MSDN TechNet的文章,对SMS2003进行了完整的了解。
Windows服务器中文站
上面有很多SMS的安装和配置介绍文章,并配有大量的ScreenShot,可以让你有很直观的认识。
SMS SDK(v3/4)
关于内部的运行机制,看SDK无疑是最好的途径。