摘要:
由系统管理员管理的结构化计算机环境和只有一台或几台孤立计算机组成的计算机环境的主要区别是什么呢――服务!这种只有几台孤立计算机的典型环境是家庭和那些很小的非技术性的办公室,而典型的结构化计算机环境则是由技术人员操作大量的计算机,通过共享方便的通信。优化的资源等服务来互相联结论文网在一起。当一台家用电脑通过互联网或通过ISP连接到因特网上,他就是使用了ISP或其他人提供的服务才进入网络的。
由系统管理员管理的结构化计算机环境和只有一台或几台孤立计算机组成的计算机环境的主要区别是什么呢――服务!这种只有几台孤立计算机的典型环境是家庭和那些很小的非技术性的办公室,而典型的结构化计算机环境则是由技术人员操作大量的计算机,通过共享方便的通信。优化的资源等服务来互相联结在一起。当一台家用电脑通过互联网或通过ISP连接到因特网上,他就是使用了ISP或其他人提供的服务才进入网络的。办公室环境也能提供同样甚至更多的服务。
典型的办公室环境包含很多服务,主要有DNS。电子邮件。认证服务。联网以及打印等等。这些服务非常重要,一旦没有了这些服务会对你产生很大的影响。其它典型的服务还包括各种远程接入方法。网络证书服务。软件仓库。备份服务。连接因特网。DHCP。文件服务等等。如此多的服务确实令人厌倦,但这也证明了系统管理员团队所创造并维护的服务是如此之多。你给用户的每一个技术支持都包含了系统管理员团队提供的服务在里面。
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性。服务的标准化。以及对服务的监控。维护。技术支持等。只有在这几个方面都符合要求的服务才是真正的服务。
系统管理员的主要职责之一就是为用户提供他们所需要的服务,这是一项持续性的工作。随着技术的进步和用户工作的开展,用户的要求也会越来越高,结果系统管理员就必须花费大量的时间来设计并创建新的服务,创建的新服务的质量决定了以后系统管理员们对它们提供技术支持时所花费时间和精力的多少,同时也决定了用户的满意程度。
一。服务的基本问题
创建一个稳定。可靠的服务是一个系统管理员的重要工作。在进行这项工作时系统管理员必须考虑许多基本要素,其中最重要的就是在设计和开发的各个阶段都要考虑到用户的需求。要和用户进行交流,去发现用户对服务的要求和预期,然后把其它的要求如管理要求等列一个清单,这样的清单只能让系统管理员团队的人看到。在这样一个过程中“是什么“比“怎么样“更重要,否则在具体执行时很容易就会陷入泥潭而失去目标。
服务应该建立在服务器级的机器上而且机器应该放在合适的环境中,作为服务器的机器应当具备适当的可靠性和性能。服务和服务所依赖的机器应该受到监控,一旦发生故障就发出警报或产生故障记录清单。
大多数服务都依赖其它服务,通过进一步理解服务是如何进行的,会使你洞悉这个服务所依赖的其它的服务。例如,几乎所有的服务都依靠域名服务(DNS)。要给一个服务配置机器名或域名,要靠DNS;要想在日志文件中包含所使用服务或服务访问过的主机名,要用到DNS;如果你进入一台主机通过它的服务联系别的机器,也要用到DNS。同样,几乎所有的服务都依靠网络,其实网络也是一种服务。DNS是依靠网络的,所以所有依赖DNS的服务也依靠网络。有一些服务是依靠email的(而email是依赖DNS和网络的),还有别的服务依靠访问其它计算机上的共享文件,也有许多服务也依靠身份认证和授权服务来对人们进行区分,特别是在那些认证机制而又具有不同级别服务权限的环境中。某些服务如DNS的故障,会引起所有依赖DNS的其它服务的一连串的失败。所以在构建一个服务时,了解它所依赖的其它服务是非常重要的。
作为服务一部分的机器和软件应当依赖那些建立在相同或更高标准上的主机和软件,一个服务的可靠性和它所依赖的服务链中最薄弱环节的可靠性是相当的。一个服务不应该无故的去依赖那些不是服务一部分的主机。
为了可靠性和安全性,对服务器的访问权限应当进行限制,只有系统管理员才能具有访问权限。使用机器的人和机器上运行的程序越多,发生内存溢出或突然出现其它故障。服务中断的机会就越大。用户使用计算机时总喜欢多装点东西,这样他们就能方便的存取自己需要的数据和使用其它的服务。但是服务器应该是尽可能的简单,简单化可以让机器更加可靠,发生问题时更容易调试。服务器在满足服务运转正常的前提下应当安装最少的东西,只有系统管理员们具有安装权限,而且系统管理员们登录服务器时应该也只是为了维护。从安全的角度来看,服务器比普通的台式机更敏感。入侵者一旦获得了服务器的管理员权限,他所能做的破坏比获得台式机管理员权限所能做的破坏大的多!越少的人具有管理员权限,服务器运行的东西就越少,入侵者获得权限的机会就越小,入侵者被发现的机会就越大。
系统管理员在构建一个服务时必须要作几个决策,比如从哪个厂家买设备。对于一个复杂的服务用一台还是多台服务器。构建服务时要留多大的冗余度。一个服务应该尽可能的简单,尽可能小的依赖性,这样才能提高可靠性和易维护性。
另一个使服务易于维护的方法是使用标准硬件。标准软件。标准配置以及把文件放在标准位置,对服务进行集中管理。例如,在一个公司中,用一个或两个大的主要的打印服务器比零星分布的几百个小服务器使服务更容易得到支持。最后,也是非常重要的是在执行一些新服务时,服务所在的机器在用户端配置时最好使用服务的名字,而不是用真实的主机名,这样服务才会不依赖于机器。如果你的操作系统不支持这个功能,那就去告诉你的操作系统销售商这对你很重要,同时要考虑是否使用别的具有这个功能的操作系统。
一旦服务建好并完成了测试,就要逐渐转到用户的角度来进行进一步的测试和调试。
1。用户的要求
建立一个新服务应该从用户的要求开始,用户才是你建立服务的根本原因。如果建立的服务不合乎用户的需要,那简直就是在浪费精力。
很少有服务不是为了满足用户的需求而建立的,DNS就是其中之一。其它的如邮件服务和网络服务都是明显为了用户的需求建立的。用户需要他们的邮件用户端具备某些功能,而且不同的用户想要在网络上作不同是事情,这些都依靠提供服务的系统设置情况。其它的服务如电子购物系统则更是以用户为导向的了。系统管理员们需要理解服务怎样影响用户,以及用户的需求又如何反过来对服务的设计产生影响。
搜集用户的需求应该包括下面这些内容:他们想怎样使用这些新服务。需要哪些功能。喜欢哪些功能。这些服务对他们有多重要,以及对于这些服务他们需要什么级别的可用性和技术支持。如果可能的话,让用户试用一下服务的试用版本。不要让用户使用那些很麻烦或是不成功的系统和项目。尽量计算出使用这个服务的用户群有多大以及他们需要和希望获得什么样的性能,这样才能正确的计算。
2。操作上的要求
对于系统管理员来说,新服务的有些要求不是用户直接可见的。比如系统管理员要考虑到新服务的管理界面。是否可以与已有的服务协同操作,以及新服务是否能与核心服务如认证服务和目录服务等集成到一起。
系统管理员们还要考虑怎样规划一个服务,因为随着公司规模的增长,所需要的服务当然也会比当初预期的有所增长,所以系统管理员们还得想办法在增长服务规模的同时不中断现存的服务。
一个相对成熟的方法是升级服务的路径。一旦有了新版本,如何进行升级呢?是否得中断现在的服务呢?是否要触及桌面呢?能不能慢慢地逐渐升级,在整个公司发生冲突之前先在一些人中进行测试呢?所以要尽量把服务设计得容易升级,不用中断现有的服务就能升级,不要触及桌面而且能慢慢地逐渐升级。
从用户期望的可靠性水平以及系统管理员们对系统将来要求的可靠性的预期,系统管理员们就能建立一个用户期望的功能列表,其内容包括群集。从属设备。备份服务器或具有高可用性的硬件和操作系统。
系统管理员们需要考虑到由服务主机位置和用户位置而引起的网络性能问题。如果远程用户通过低带宽。高等待时间连接,那这样的服务该怎么完成呢?有没有一种方法可以让各个地方的用户都获得好的或比较好的服务呢?销售商很少测试用他们的产品连接时是否高等待时间的――即RTT值是否比较大――每个人从程序员到销售员都忽略了这个问题。人们只是确信内部测试的结果。
3。开放的体系结构
一个新服务,不管在什么情况下,只要可能,就应该建立在使用开发式协议和文件格式的体系结构上。特别是那些在公共论坛上记录成文的协议和文件格式,这样销售商才能依据这些标准生产出通用的产品。具有开放体系结构的服务更容易和其它遵循相同标准的服务集成到一起。
开放的反义词是私有,使用私有协议和文件格式的服务很难和其它产品共同使用,因为私有协议和文件格式的改变可以不发布通知,也不要求得到协议创造者的许可。当销售商扩展到一个新领域,或者试图保护自己的市场而阻止创造一个公平竞争的环境时,他们会使用私有协议。
有时销售商使用私有协议就是为了和别的销售商达成明确的许可协议,但是会在一个销售商使用的新版本和另一个销售商使用的兼容版本之间存在明显的延迟,两个销售商所用的版本之间也会有中断,而且没有提供两个产品之间的接口。这种情况对于那些依靠它们的接口同时使用两种产品的人来说,简直是一场恶梦。
商业上使用开放协议的例子很简单:它使你能够建立更好的服务,因为你可以选择最好的服务器和用户端软件,而不必被迫地选择,比如在选择了最好的用户端后,又被迫选择不是最理想的服务器。用户想要那些具有他们需要的功能,而又易于使用的应用程序,而系统管理员们却希望服务器上的应用程序易于管理,这两个要求常常是冲突的。一般来说,或者用户或者系统管理员们有更大权利私下做一个另对方惊奇的决定。如果系统管理员们做了这个决定,用户会认为他们简直是法西斯,如果用户做了这个决定,这会成为一个难以管理的包袱,最终使得用户自己不能得到很好的服务。
[1][2]下一页