(部署是设计方案和系统实现的落地,它将处于不同层级的“硬件”和“软件”有机地结合起来,最终实现可供用户使用的系统和服务)

软件以其神奇的适应性为人类社会提供了各种各样的信息服务,可是,这种“软”的物件最终还是需要“硬”的物件做依托才行,否则软件永远是个想象中的东西。

那么,软件如果才能“落地”呢?这种实现方式业界称之为“部署”(deploy),拿一个简单的个人电脑为例,我们首先要有电脑硬件,包括主板、CPU、内存、硬盘、声卡、显卡、网卡、键盘、USB口、显示屏等。有了这些硬件,我们还要有主板ROM芯片中负责个人电脑基本的输入输出控制的BIOS程序。然后我们可以开始安装比如Window 7这样的操作系统软件,再后就是安装Office办公软件、Eclipse等开发工具软件等。在这里,Window7属于系统软件,Office属于应用软件,系统软件部署在个人电脑硬件上,而应用软件则部署在操作系统这样的系统软件上。

当然,上面的例子比较简单,只是想说明什么叫部署,在实际的复杂应用,往往是由网络连接的客户端和服务端组成,我们通常所说的部署,更多地指硬件的部署和位于服务端的软件部署,而通常将客户端软件部署称为“安装”。

按照部署的先后顺序,首先是硬件部署然后才是软件部署。硬件部署通常包括网络设备、主机设备、存储设备等的部署,当硬件部署完成后,我们就可以在硬件上安装系统软件和应用软件了。应用软件、系统软件以及系统硬件的部署层次结构如图1-9-1所示:

 

部署kafka zookeeper 部署和部署哪个对_数据

图1-9-1 系统部署层次结构

从图1-9-1可以看出,对于信息系统来说,通常是由以上三种层次组成的,需要按照1、2、3的顺序自下而上部署,这样才能形成最终用户能够使用的应用。

 

部署的不懈追求:五个不变

 

当前,随着云计算和大数据时代的到来,对于部署的架构模式提出了新的要求,但是云时代的部署模式本质上与传统的部署模式是一样的,它们都是为了满足系统在可靠性(Reliability)、可用性(Availability)、可伸缩性(Scalability)、高性能(Performance)以及安全性(Security)这5个方面的要求。

(一) 可靠性

可靠性是是衡量信息系统服务质量的关键指标,一个不可靠的信息系统会导致服务中断,客户体验水平会大打折扣,会直接破坏企业的服务形象,为企业带来或大或小的经济损失。试想,如果某电子商务网站经常因为信息系统的不可靠而无法登录购物系统,谁还去这家电子商务公司购物?如果某家企业的ERP系统经常无法使用,那么企业内部员工如何办公?如果公检法机关的电子政务系统无法使用,那么国家公务人员如何执法?可见,信息系统的可靠性是及其重要的。

从信息系统的部署角度看,首要目标是要保证信息系统的可靠性。为了实现这一目标,需要从部署对象的各个层次来保障可靠性,通过灵活的部署方案实现信息系统的整体可靠性。

1、系统硬件层

系统硬件层包括电源、主机、存储、网络等,属于信息系统的基础设施部分。要保证系统硬件层的部署对象的可靠性,通常采用增加资源的方式,通过硬件设备的互相备份达到服务不中断的目的。

电源设备是信息系统可靠性最核心的设备,如果没有可靠电源的供给,所有IT设备将是一堆废铜烂铁,因此保证可靠的电源供给是极其重要的。保证电源可靠供给的方式主要包括两种:第一种是采用双路供电,这样当一路供电出现故障时,另一路供电可以接上。另一种方式是采用不间断电源(UPS),保证在全部电源输入出现故障后,仍然有蓄电设备持续供电,并且可以实现电力供给的无缝切换,保证信息系统不会宕机。当然,UPS供电方式仅仅是一种临时的电源供应方式,因为通常UPS的蓄电容量有限,电力供给的时间也有限。一般来说,电力供给出现故障后在一定时间段内就能够恢复,这样当信息系统有正常的电力作为供给后,UPS设备又变为一种备用方式,充满电后继续备用。因此,通过在线供电和离线供电的配合,可以实现了电力供给的连续性,保证了信息系统能够不间断的提供服务。

对于主机来说,保证其可靠性的方式通常是建立服务器集群,通过集群来消除因为某个或者某些主机宕机引起的单点故障。在一个服务器集群中,多个主机运行同一计算逻辑,这样可以保证计算功能能够顺利地切换到正常运行的主机上。在主机形成的集群中,可以设置主机之间为互相备份的方式,既可以采用一对一的备份方式,也可以采用一对多的备份方式。

对于存储来说,通常是采用冗余磁盘来保证数据的可靠性。我们知道,所谓磁盘是通过磁介质来记录数据0或者1,这些磁介质因为受碰撞、外部磁力、温度、湿度等外界环境影响而可能出现消磁现象,进而影响数据存储的可靠性。同时,无论对于企业或个人,数据又是最最核心的东西,因此如何保证数据的可靠性就变得非常重要了。保证存储可靠性的方式主要包括两种:第一,通过构建磁盘冗余阵列来保证数据的可靠性,这就是我们经常听到的RAID(Redundant Array of Independent Disk),RAID分为RAID0、RAID1、RAID5、RAID0+1等多种方式,不管哪种方式从原理上都是用冗余磁盘空间来换取可靠性,也就是你用的磁盘空间越大,磁盘内容备份就越方面,数据丢失的概率就越低,数据存储的可靠性就越高。第二,考虑到数据存储设备的成本和适用范围,通常采取多级存储(Cache、内存、磁盘、磁带)的方式来设计存储架构。一般来说,存储设备的性能越高、存储空间越大,存储设备的价格也就越高。从应用的角度看,并不是所有应用都需要性能和价格都高的设备,因此需要根据应用的实际需要对存储介质的类型、数据存储设备的容量等进行规划设计。

对于网络来说,实现可靠性的方式是双路由,就好像我们平时开车,可以走A路线,也可以走B路线,当A路线因为修路或者交通事故等原因封路后,我们可以走B路线,因为有两种路线或者多种路线选择才不会影响我们的出现。保证网络可靠性的方式也是采用多路由,基于TCP/IP的互联网中的路由策略就是不断寻找可以通行的网络路径,从而保证数据包能将交付到目的地。

2. 系统软件层

构建于系统硬件层之上的系统软件层的目的是为了管理系统硬件资源并便于应用软件的实现。为了提高应用软件的开发、测试、部署效率,形成了诸如操作系统、中间件、数据库等系统软件,当然,也存在如何保障系统软件的可靠性问题。

对于操作系统这样的系统软件,由于经过了严谨的设计以及多年的修补和完善,可靠性大大增强,例如当前业界主流的Linux操作系统,当然也不能排除操作系统仍旧存在Bug,那么解决操作系统可靠性的办法就是通过实时监控和集群的方式,当发现问题后就进行修复和完善。例如微软的Windows操作系统就不定期发布的补丁就是在发现并解决Windows操作系统存在的问题后形成的。

对于中间件,分为交易中间件、Web中间件、消息中间件等多种类型,中间件的出现也是为了保证信息系统有更好的可靠性的,试想如果没有中间件,每个应用软件都要从头开始,一定会存在许多Bug的。介于操作系统和应用软件之间的中间件专注于某一个特定领域解决特定的问题,形成了可复用的软件功能和组件。由于中间件具有先进的架构设计、高水平的开发以及长期的应用实践,因此具有很高的可靠性。另外,为了保障信息系统的整体可靠性,系统软件可以构建成一个集群,集群内部的某些中间件实时其它中间件的运行副本,保证在在某些中间件节点出现故障后信息系统仍旧能够正常的提供服务,同时集群方式也可以提高信息系统的总体吞吐量。

数据库也可以认为是提供数据管理服务的中间件,由于数据库中保存了大量有价值的数据,保障数据库的可靠性就显得更为重要。为了保证数据库的可靠性,Oracle数据库采用了实时应用集群(RAC,Real Application Clusters)技术,RAC作为集群技术的一种,可以很好地实现数据库的可靠性。

3. 应用软件层:

相对于系统软件,应用软件更多地体现业务的特殊性,应用软件大多是个人和组织从应用软件开发商处购买或者从软件服务提供商处租用得到。

应用软件的类型非常多,企业普遍使用的应用软件包括客户关系管理系统(CRM)、客户服务系统、企业资源计划系统(ERP)、办公自动化系统(OA)、供应链管理系统(SCM)等。

应用软件的可靠性一方面需要依赖先进成熟的系统软件为基础,另一方面也可以通过单元测试、集成测试、系统测试、用户接受性测试(UAT)等方式和手段,不断优化和完善软件代码实现。应当在软件代码中通过异常处理和日志记录的方式来定位应用软件中出现的错误,保证应用软件的可靠运行。

(二) 可伸缩性

信息系统不但要面向现在,还要面向未来,应当具有信息系统容量的可扩充性,在互联网时代,弹性的,可伸可缩的系统架构成为信息系统部署设计阶段重要的考虑因素。

对于单个的系统硬件,由于硬件物理特性的限制,保证可伸缩性的唯一方法是提前预留可以扩充的插槽和端口,比如目前流行的刀片式服务器,就可以根据需要增加或者删减服务器,服务器好比“刀片”一样,可以方便地插入到“刀箱”之内。

单个硬件的扩充能力毕竟是有限的,为了解决动态的资源扩充问题,业界通常采用集群架构来实现系统硬件的横向扩展,集群内的资源通过集群管理软件来进行配置和管理。当前,虚拟化、云化等技术就是将资源使用和资源分配相隔离,动态地进行资源调度,使得信息系统具有良好的可伸缩性。

(三) 可用性

可用性是从用户对于系统服务的角度提出的。简单的看,可用性包括可用和不可用两种类型,不可用就是不可以使用,当然是用户不能接受的。为了衡量信息系统服务的质量,系统服务提供方和使用方之间可以通过可用性指标作为支付的评判标准。

信息系统可用性的实现是一个系统性工程,因为对于应用的使用者是不关心系统硬件出现问题还是系统软件出现问题的,用户所要求的就是要软件总是可以使用的。

从部署的角度看,保证可用性的方式是进行充分的集成测试和系统整体性测试,发现并解决影响系统可用性的因素。

(四) 性能

与可用性类似,性能也是用户能够直接衡量的一个方面,当然,不同的应用对于性能的可接受程度是不一样的。对于性能的具体要求,通常是要求性能在一个可接受的时间范围之内,比如1天或者5秒之内。

要实现系统的高性能,同样需要信息系统各个方面的努力。CPU的频率、磁盘存取速度、IO处理能力等都是影响系统性能的重要因素。对于需要应多大规模并发用户的信息系统,同样需要集群部署的方式来提高系统的整体性能。

系统性能与集群规模、数据存储方式、程序算法等都有关系,在大数据时代,海量数据处理与快速展现分析结果之间的矛盾愈发突出,使得解决系统的性能问题变得更加具有挑战性。

(五) 安全性

安全性也是部署时考虑的重要因素,安全性与可靠性是不同的,安全性主要是防止未经过授权的用户对于系统资源的访问。

提高系统的安全性需要从技术手段和规章制度两个方面做起,本文主要从技术角度来分析如何部署才能保障系统具有高安全性。

首先,安全问题产生的根源通常在信息系统的访问客户端,正所谓“病从口入”,因此如何控制客户端引起的安全是需要首要考虑的问题。对于可控可管的客户端,应当在客户端部署代理软件,保证客户端是在预先设定的安全策略控制下使用应用的。此外,应当从网络层面进行控制,对于接入网络的客户端进行安全认证,将不符合安全要求的用户阻挡的网络边缘。

其次,对于传输和存储的数据进行加密,保证传送和存储的数据不被第三方窃取。

最后,部署4A(账户、认证、授权、审计)服务器,在信息系统的应用层面进行安全的控制,及时发现并处置违规的用户。

部署的好伙伴:配置管理

随着系统硬件、系统软件以及应用软件不断的部署实施,数据中心的规模会越来越大,为了保证系统的高可靠性,数据中心甚至采用跨地域的方式来实现,当系统出现故障后,如果不能实时掌握软硬件部署的结构和运行状况,就难以快速地完成故障恢复。为了解决这一问题,迫切需要对系统软硬件资源的配置关系进行管理。

配置项是配置管理的基本单元,配置项根据管理的需要可大可小,可以是一台机器设备,也可以是机器设备中的一个部件。配置项记录了自身的属性以及与其它配置项的关联关系,比如配置项为机架的属性通常包括机架的位置、可用空间、已用空间、安装时间、责任人等,配置项为服务器的属性通常包括服务器所在机架、电源消耗、厂家型号、硬件配置、安装时间、资产原值、折旧年限、运行状态、装载的软件、连接的网络端口等。

为了保证配置项数据的准确性,要求在系统部署完成后及时更新配置项属性。配置项信息的录入分为两种:一种是类似于机房、机架等无需运行的设备,需要完全依靠人工录入的方式完成;另一种是类似于服务器、存储设备、网络设备等可以运行的设备,可以在安装完成后通过手工的方式进行数据的初次录入,然后再借助运行后的设备管理软件进行配置上报,对比两次采集的配置项属性,校正存在问题的配置项,提高配置数据的准确性。

对于大中型的数据中心,配置项之间的关系是非常复杂的,因此要求支持图形化方式的配置管理,直观地展示配置项属性及其运行状况,帮助运行维护人员快速发现并修复存在的故障,帮助数据中心规划人员实时掌握IT资源使用情况,以便及时地补充资源,保证系统在正常的负荷范围内运行。

 

事务型应用系统部署架构

 

下面是某企业使用笔记本电脑、台式机、手机等接入设备,通过因特网访问企业数据中心的部署架构设计方案,如图1-9-2下所示:

 

部署kafka zookeeper 部署和部署哪个对_部署kafka zookeeper_02

图1-9-2 某企业CRM系统部署架构设计方案

从图1-9-2中可以看出,企业CRM系统分为客户端和数据中心两部分。

CRM系统客户端分为笔记本电脑、台式机、智能手机3种接入方式,其中智能手机的部署方案为在Android V4.3操作系统上部署CRM手机客户端软件V1.0。

CRM系统数据中心分为4个区,即网络集群区、FTP服务器集群区、Web服务器集群区、应用服务器集群区、数据库服务器集群区。网络集群区包括网络路由器、网络防火墙和网络交换机,FTP服务器集群区包括多个FTP服务器,起到接收上传文件和导入数据的作用,Web服务器集群区部署Web静态网页并起到Web服务负载均衡的作用,应用服务器集群区提供CRM应用逻辑的处理,数据库服务器集群区负责存取数据和管理数据。

系统部署结构中体现了从硬件支撑到软件部署的层次依赖关系,最下层为硬件设备及其安装的位置,上层分别为操作系统、中间件、应用软件,这样就可以清晰地看到软件与硬件的依赖关系,有助于项目后期完成系统的维护工作。

由于篇幅限制,图1-9-2中没有绘制数据中心的容灾部分,可以认为各种集群区都具有机房内部、同城以及异地容灾的能力。

 

分析型应用系统部署架构

 

以上是面向操作的事务型应用在某企业数据中心的部署架构方案。与支持企业事务型应用的部署方案不同,支持企业分析型应用的部署方案有着自身的特点。某电信运营商移动上网记录大数据应用的系统部署方案如图1-9-3所示:

 

部署kafka zookeeper 部署和部署哪个对_应用软件_03

图1-9-3 某电信运营商大数据中心系统部署总体架构

从图1-9-3可以看出,分析型应用系统架构设计需要考虑数据采集、数据上传、数据装载、数据交换、数据查询等环节。在大数据应用系统部署的不同阶段,主要完成的任务包括:

数据采集阶段:首先,移动用户通过手机借助电信运营商的通信网络和互联网访问OTT应用,比如腾讯QQ、新浪微博、淘宝网等。其次,在移动用户访问OTT应用的时候,通信网络中的GGSN、SGSN等网关设备会记录下移动用户的上网行为,包括上网时间、上网时长、上网流量、应用URL等。最后,采集设备将抓取到的数据包存入上网记录文件后,上传到FTP服务器。

数据装载阶段:首先,FTP服务器通过vsftpd服务器接收到上传的文件并放入指定的目录。然后,通过ETL软件将数据装载到Hadoop/HBase分布式数据库集群中。Hadoop/HBase分布式数据库集群加载数据的方法为:客户端根据主服务器(Master Server)的NameNode找到装载文件需要存放的区域服务器(Region Server),通过区域服务器将数据存放到DataNode。其存储原理类似于Linux的虚拟文件存储,即将所有设备看作是一个文件,而NameNode则是管理文件的索引。

  数据查询阶段:分布式数据库的查询方法不同于关系型数据库,可以借助开源工具Pig、Hive使得分布式数据库的查询变得更加简单。

  数据交换阶段:如果存储在分布式数据库集群中的数据需要用于进一步的统计分析,那么需要通过数据交换工具Sqoop将其存入关系型数据库Oracle集群中,由于关系型数据库对于数据的存取性能受限于数据的规模,因此可以将初步汇总后的数据存入关系型数据库。