由系统管理员管理的结构化计算机环境和只有一台或几台孤立计算机组成的计算机环境的主要区别是服务。这种只有几台孤立计算机的典型环境是家庭和那些很小的非技术性的办公室,而典型的结构化计算机环境则是由技术人员操作大量的计算机,通过共享方便的通信、优化的资源等服务来互相联结在一起。当一台家用电脑通过互联网或通过ISP 连接到因特网上, 他就是使用了ISP 或其他人提供的服务才进入网络的。
提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。只有在这几个方面都符合要求的服务才是真正的服务。
1 服务的基本问题。
创建一个稳定、可靠的服务是一个系统管理员的重要工作。在进行这项工作时系统管理员必须考虑许多基本要素,其中最重要的就是在设计和开发的各个阶段都要考虑到用户的需求。要和用户进行交流, 去发现用户对服务的要求和预期,然后把其它的要求如管理要求等列一个清单,这样的清单只能让系统管理员团队的人看到。
服务应该建立在服务器级的机器上而且机器应该放在合适的环境中,作为服务器的机器应当具备适当的可靠性。服务和服务所依赖的机器应该受到监控,一旦发生故障就发出警报或产生故障记录清单。
作为服务一部分的机器和软件应当依赖那些建立在相同或更高标准上的主机和软件,一个服务的可靠性和它所依赖的服务链中最薄弱环节的可靠性是相当的。一个服务不应该无故的去依赖那些不是服务一部分的主机。一旦服务建好并完成了测试, 就要逐渐转到用户的角度来进行进一步的测试和调试。
1.1 用户的要求。
建立一个新服务应该从用户的要求开始,用户才是你建立服务的根本原因。如果建立的服务不合乎用户的需要,那就是在浪费精力。
搜集用户的需求应该包括下面这些内容:他们想怎样使用这些新服务、需要哪些功能、喜欢哪些功能、这些服务对他们有多重要,以及对于这些服务他们需要什么级别的可用性和技术支持。如果可能的话,让用户试用一下服务的试用版本。不要让用户使用那些很麻烦或是不成功的系统和项目。尽量计算出使用这个服务的用户群有多大以及他们需要和希望获得什么样的性能,这样才能正确的计算。
1.2 操作上的要求。
对于系统管理员来说, 新服务的有些要求不是用户直接可见的。比如系统管理员要考虑到新服务的管理界面、是否可以与已有的服务协同操作,以及新服务是否能与核心服务如认证服务和目录服务等集成到一起。
从用户期望的可靠性水平以及系统管理员们对系统将来要求的可靠性的预期,系统管理员们就能建立一个用户期望的功能列表,其内容包括群集、从属设备、备份服务器或具有高可用性的硬件和操作系统。
1.3 开放的体系结构。
有时销售商使用私有协议就是为了和别的销售商达成明确的许可协议,但是会在一个销售商使用的新版本和另一个销售商使用的兼容版本之间存在明显的延迟,两个销售商所用的版本之间也会有中断,而且没有提供两个产品之间的接口。这种情况对于那些依靠它们的接口同时使用两种产品的人来说,简直是一场恶梦。
一个好的解决方法就是选择基于开放标准的协议,让双方都能选择自己的软件。这就把用户端应用程序的选择同服务器平台的选择过程分离了,用户自由的选择最符合自己需要、偏好甚至是平台的软件,系统管理员们也可以独立地选择基于他们的可靠性、规模可设定性和可管理性需要的服务器解决方案。系统管理员们可以在一些相互竞争的服务器产品中进行选择,而不必被囿于那些适合某些用户端应用程序的服务器软件和平台。
在许多情况下, 如果软件销售商支持多硬件平台,系统管理员们甚至可以独立地选择服务器硬件和软件。
我们把这叫做用户选择和服务器选择分离的能力。开放协议提供了一个公平竞争的场所,并激起销售商之间的竞争,这最终会使我们受益。
开放协议和文件格式是相当稳定的, 不会经常改动(即使改动也是向上兼容的),而且还有广泛的支持,能给你最大的产品自主选择性和最大的机会获得可靠的、兼容性好的产品。#p#
2 其它需要考虑的问题。
建立一个服务除了要求可靠、可监测、易维护支持,以及要符合所有的我们基本要求和用户的要求外,还要考虑到一些特别的事情。如果可能的话,应该让每个服务使用专门的机器,这么作可以让服务更容易得到支持和维护,也能减少忘记一些服务器机器上的小的服务的机会。在一些大公司,使用专门的机器是一条基本原则, 而在小公司,由于成本问题,一般达不到这个要求。
还有一个观念就是在建立服务时要以让服务完全冗余为目标。有些重要的服务不管在多大的公司都要求完全冗余。由于公司的规模还会增长,所有你要让所有的服务都完全冗余为目标。
2.1 使用专门的机器。
理想的情况,服务应该建立在专门的机器上。
大网站应该有能力根据服务的要求来调整到这个结构,而小网站却很难做到。每个服务都有专门的机器会使服务更可靠,当发生可靠性问题是也容易调试,发生故障的范围更小,以及容易升级和进行容量计划。
从小公司成长起来的大网站一般有一个集中管理的机器作为所有重要服务的核心,这台机器提供名字服务、认证服务、打印服务、邮件服务等等。最后,由于负荷的增长,机器不得不分开,把服务扩展到别的服务器上去。常常是在这之前,系统管理员们已经得到了资金,可以买更多的管理用的机器,但是觉得太麻烦,因为有这么多的服务依赖这机器,把它们都分开太难了。当把服务从一台机器上分开时,IP 地址的依赖最难处理了, 有些服务如名字服务的IP 地址都在用户那里都已经记得很牢固了,还有一些IP 地址被安全系统如路由器、防火墙等使用。
把一个中心主机分解到许多不同的主机上是非常困难的,建立起来的时间越长,上面的服务越多,就越难分解。使用基于服务的名字会有所帮助,但是必须整个公司都使用标准化的、统一的、始终如一的名字。
2.2 充分的冗余。
充分的冗余是指有一个或一系列复制好的服务器, 能在发生故障的时候接管主要的故障设备。冗余系统应该可以作为备份服务器连续的运行,当主服务器发生故障时能自动连上线,或者只要少量的人工干预, 就能接管提供服务的故障系统。
你选择的这类冗余是依赖于服务的。有些服务如网页服务器和计算区域,可以让自己很好的在克隆好的机器上运行。别的服务比如大数据库就不行,它们要求连接更牢固的崩溃恢复系统。你正在使用的用来提供服务的软件或许会告诉你,冗余是以一种有效的、被动的、从服务器的形式存在的,只有在主服务器发生故障并发出请求时,冗余系统才会响应。不管什么情况,冗余机制必须要确保数据同步并保持数据的完整。
如果冗余服务器连续的和主服务器同步运行,那么冗余服务器就可以用来分担正在正常运行的负荷并能提高性能。如果你使用这种方法,一定要注意不要让负荷超出性能不能接受的临界点,以防止某个服务器出现故障。在到达临界点之前要为现存系统增加更多的并行服务器。
冗余的另一个好处就是容易升级。可以进行滚动升级。每次有一台主机被断开、升级、测试然后重新开始服务。单一主机的故障不会停止整个服务,虽然可能会影响性能。如果你真的搞杂了一个升级那就关掉电源等你冷静下来再去修它。
【编辑推荐】