题记
GIS这个行业比较小,小到我们只是IT行业中的软件部分的中间件层次的一小片地方,GIS这个行业比较大,大到各个行业都会将地图作为载体,也自然有了GIS的用武之地。现如今,如果你现在做的项目跟云计算没有关系,要么申报比较困难,要么经费少的可怜,所以不管你现在对云计算有任何的看法,你不得不承认,云计算现在已经来到了我们的身边,我们也无时无刻不在使用,只是你不知道而已。
既然说到云GIS,如何构建云GIS呢?建好一个云GIS成本如何?我的回答是成本不菲啊!当然,我并不是说所谓的成本高就是建设一个多大规模的云GIS数据中心,而是涉及到每一个步骤都会需要响应的资金成本、技术成本、时间成本、人力成本去协助,可以说缺一不可,如果你少投入了那一块,肯定在后期的使用、维护、管理过程中出现或大或小的问题。
一、硬件部分
当然你可以说,我使用公有云,与硬件无关,好吧,公有云、私有云、混合云各自有自己的使用场景,GIS作为小众,GIS企业相比较也是小众,GIS用户受到自身条件(当然是数据保密了.....),更多的我们说的是私有云。
对于建设企业级云GIS项目的硬件选型,当然需要结合GIS应用来设计了,如果是存储型的需要了解GIS数据类型,数据量(当先数据量、未来增加数据量等),如果是计算型是否是高CPU数据处理型还是高并发WebGIS 服务访问型,特殊需求是否包含对虚拟化三维显示的支持等。那么我们不谈资金的限制,就从计算、网络、存储这几项说一下在云GIS建设过程中与传统GIS建设的区别。
计算资源(CPU和内存)
不管是传统GIS建设和云GIS建设其实都认为,CPU和内存配置越高越好,但是还是有区别的,传统GIS配置非常高是希望一步到位,防止后期压力上来了配置不够,同时传统物理设备只支持Scale Up的升级方式,但会遇到“天花板屏障(主板的插槽就那么多)”,同时资源利用率低;云GIS要求配置高,是希望能够提高资源利用率,虚拟出更多的VM,而且云GIS支持横向扩展,将资源池动态扩大,满足计算资源需求。
早期的传统GIS建设都是使用的高配置的小机,既贵又贵,反正就是贵,现在云GIS的理念,特别是以OpenStack云的宣传是支持更加性价比的X86服务器,比小机要便宜的多(感觉偏离我的主题了),但是我还是认为建设云GIS的服务器配置也需要提高,是因为为了我们后面提到的云平台许可收费问题(成熟的商业公司按CPU收费,新型的创业公司按服务器收费)这个你应该明白还是希望单个服务器的配置越高越好了把。
更多参考:GIS+=地理信息+云计算技术——私有云架构设计(1)计算资源规划
关键字:X86、高CPU、大内存
存储资源
一般情况下,云GIS平台的规划如果必须了解一个需求,就是存储,因为不管是SDC(软件定义计算)还是SDN(软件定义网络)都可以将1个变成多个(举例2个物理CPU,可以虚拟出4个vCPU),但是存储虽然也有SDS(软件定义存储)的概念,一般不会实现有50TB的容量可以存储到60TB的数据。所以,我们需要多大的数据存储,就需要多大(注意而且更大的容量去支持),为什么呢?
这里面就引出了分布式存储的概念,现在我们讲云存储也好,分布式存储也好,其实都差不多,简单来说就是我们并不需要像传统GIS项目中专门买存储设备了,我们可以SDS技术,将存储在多个服务器的本地磁盘利用软件的技术组成一个资源池,同时,可以实现高可靠性,也就是允许某几个硬盘坏了,我的数据还能找到?这么神奇?
分布式存储的原理就是当用户存储一份数据,对于物理上就是一些数据块,如果是多副本机制(例如华为FusionStorage,开源的Ceph、GlusterFS)这些数据块就会存(2-3)份在不同服务器的不同磁盘中,这里面就有一个技巧,也就是服务器的磁盘尽量的多更好一些。打个比方,5个4TB的容量不如20个1.2TB的好,因为我将数据打散到5快盘,如果1块4TB的盘坏了,可能数据真丢了(盘越少,可能两个副本都在一个硬盘上),所以建议硬盘更多一些,保证高可靠。那么问题来了,你需要数据存储2-3个副本,那么你的磁盘容量就是你要求存储的2-3倍,成本自然就上来了。
当然,分布式存储还有一种机制是类似纠删码技术,例如曙光应用该技术,纠删吗类似与RAID5的原理,就是存储数据块,我存储一个数据块,在其他磁盘存储一个校验块,如果磁盘坏了,可以通过校验块反算出丢失的数据,而且在容量上要比上述的多副本更加的经济,当然计算校验也会浪费一些性能把。
不管是多副本还是纠删吗我们不去判别哪个好那个坏,关键是厂商能够将这些技术解决实际问题,真的问题来了,能不能快速的,而且真正的把数据找回来才是王道。
所以说,分布式存储听着不错,需要额外的存储许可(华为FusionStorage,VMWare vSAN),当然如果用开源技术(需要额外的技术成本,说白了也是钱)。
另外,我们谈谈存储材质的问题,GIS数据现在说是大数据,其实并不准确,如果抛掉影像数据,其实GIS数据真没有那么大,话说回来,影像数据只是单个存储量大,数量也不多,与我们IT所指的大数据(数据量大、种类多、非结构化、细碎数据等)不太匹配。所有我们需要存储材质去存数据,SATA盘,目前单块好像有8TB的,该材质是一个存储量大,便宜,但是磁盘读写比较慢的一种,主要存储我们所谓的冷数据。一般服务器用的盘多为SAS盘,而且SAS分2.5寸和3.5寸,尺寸越大支持的容量越高,选择不同的尺寸要看服务器的大小,如高密度的刀片服务器一般还是2.5寸盘居多,2.5寸SAS盘一般以1.2TB居多,3.5寸SAS盘以2-4TB居多,谈到读写速度就是磁盘的转速了,1W转或者1.5W转的,可是要说磁盘IO最好的就是SSD,但是它也最贵,容量也不大,600G-1.2T不等,为什么说Oracle
Exdata牛逼,因为他是全闪存,当然好了。其实在实际项目中,不管是VM,还是数据库,虽然都很多,但是我们经常访问的其实就是一小部分,所以,现在我们都会在存储里面添加SSD作为Cache ,将热数据在SSD存储访问,而且这些技术,我们称之为数据分层,系统会自动将热数据迁移到SSD,冷数据移除存储在SAS或者SATA,既节省成本,又提高了性能,同时对上层应用是透明的。
当然,传统SAN存储(IP SAN 或者FC SAN)也支持上述功能。
更多:GIS+=地理信息+云计算技术——私有云架构设计(3)存储资源规划
关键词:分布式存储、多副本、纠删码、SSD、数据分层
网络资源
云计算技术最为复杂的就是网络了,在学习OpenStack过程中,特别是对neutron组件就理解的非常吃力,当然,不管一个云环境有几十个,上百个VM的网络互联或者网络隔离,其实最关键的还是有限的几个物理网卡进行通信,那么网卡数量,网卡速率,设计到物理网络的交换机数量,交换机类型就显得非常关键了。
简单的说,为了保证网络IO的效率,我们希望将多种网络分离,例如OpenStack包括管理网络、数据网络、存储网络、API网络等,每个网络我们尽可能的用一个网卡或者多个网卡聚合方式分离开,各走各的,而且如果网卡的速率是万兆的,IO的性能是不是陡然提高了。所以单个物理服务器的网卡数量肯定是越多越好了。
其次就是交换机,一般情况下,一个企业级的网络架构包含三层,核心交换机,局域网交换机,然后再是终端设备,特别是核心交换机最好能够是万兆交换机而且做好冗余,既保证速度又保证高可用。交换机的端口数也建议直接24口的,这样可以通过网口聚合来提高传输效率。
所以,网络的成本可能就在数量、速度的选择上。
更多:GIS+=地理信息+云计算技术——私有云架构设计(2)网络资源规划
关键字:网卡数量、网卡速度、万兆
其他资源
类似这个也很少提,但是作为企业级数据中心的建设也不能忽略,包括服务器的风扇质量和数量以及机房的空调,这个是要保证服务器在7×24小时运行过程中不会因为过热导致的未知问题,关于服务器电源质量和数量以及机房UPS,这也是保证服务器能够应付各种繁杂问题。
另外,一般情况下,我们是不会老去机房盯着服务器是否有问题,我们需要一套成熟的运维管理体系,将数据中心的服务器运行状态,负载进行显示,进行预警,这个可能也需要人力成本、技术成本和时间成本去规范。
二、基础云平台
一般情况下,作为企业级云GIS建设过程中,所谓的云主要核心位置就是基础云平台软件,很少有GIS企业或者用户单独从KVM或者Xen底层开发一套运平台,我们更愿意使用类似VMWare vSphere、OpenStack、Huawei FusionSphere这些云平台。
关于公有云,AWS、Azure现在在国内已经开放,但是目前很难与阿里云抗衡,其他例如腾讯云、京东云不过是从技术成熟度,市场的普及度以及影响力都很难与阿里云抗衡,不过本篇不关注公有云。
关于云平台的选择需要考虑的因素:技术特性、多少钱、是否易用,稳定性、国产化、自身技术。
我们先看看各自的技术特性:其实对比起来,各自的技术特性都是可以对标的,关于云计算的使用以及功能都是差不多的。
关于VMWare架构
关于Huawei架构
关于OpenStack架构
当然了,由于产品不同,各自的结构都略有不同,还有就是我的这个参考图可能会有些落后,特别是OpenStack这种开源产品,每年两个版本的迭代,组件更新太多了,但是OpenStack的核心组件还是上述几个。不管那个产品,都离不开几大件,计算、网络、存储、管理界面。
先说HyperVisor:
- VMWare使用的自己的Esxi,
- 华为目前的产品还是基于Xen的,
- OpenStack是KVM
关于云平台说法:
- VMWare(VMWare vSphere、VMWare vCloud等),
- Huawei(Huawei FusionSphere),
- OpenStack
关于计算:
- VMWare 还是Esxi,
- 华为的是FusionCompute,
- OpenStack是Nova
关于网络:
- VMWare(一个vShield现在更名为vCNS 作为vSphere的可选组件,当然更能更全的是NSX)
- 华为(FusionNetwork)
- OpenStack(Neutron)
关于存储:
- VMWare(使用vSAN实现分布式存储)
- 华为(使用FusionStorage实现分布式存储)
- OpenStack(目前更多的使用Ceph作为分布式存储基础,通过Swift和Cinder实现对象存储和块存储,新组件manila实现文件共享存储)
关于可视化管理页面
- VMWare (vCenter和vCloud都有相关的管理页面,两者的区别请自行百度)
- 华为(FusionManager)
- OpenStack(Horizon)
通过以上的比较,我们可以看到基础的云平台功能其实都是差不多的,那么后续就需要了解其他问题了。
成本问题:
- 对于成熟的厂商来说,例如VMWare和Huawei对于计算资源都是按照CPU(颗数)收费的,特别是VM Ware,用什么组件受什么费用,因为一般我们使用VMWare vSphere(Esxi+vCenter)就可以实现一个虚拟化场景,也包含vMotion等高级功能,如果对于存储和网络要求不高,完全可以使用,但是如果希望使用NSX和vSAN等高级功能需要额外收费,如果需要vCloud的功能需要额外收费。
- 对于华为来说,收费包括虚拟化CPU的许可,以及分布式存储FusionStorage的费用,分布式存储按照容量不同收费不同,网络这块我并没有看到有收费项。
- 关于OpenStack就比较特殊了,因为OpenStack软件本身是开源的,所以不存在许可费用问题,但是正因为开源,如果将社区版本直接部署到生产环境中,你倒是省了软件费用,但是在生产环境中遇到问题如何解决,性能问题如何解决,这都是问题,同时,并不是用户和一般厂商有能力部署OpenStack环境,更别说维护了。所以,关于对OpenStack使用,建议还是找专业的厂商做部署、运维。OpenStack的收费是按照服务器收费的,所以这也是我在前面所述的计算资源成本的时候,建议服务器配置高一点的原因。如今国内做OpenStack咨询、服务的厂商很多,一般都是初创公司,包括EasyStack、99Cloud、华云、云途腾、达沃云、AWCloud等,关于运营商的OpenStack更多的服务云自身业务的公有云,不再次范围内。
关于易用性
这里面易用性包括安装部署,维护管理,学习成本。
- VMWare:由于它是最早的商业厂商,也有中文文档,个人觉得是最好用的,前提是简单的功能也比较容易学,文档资料也比较多,中文可视化界面友好。vCenter部署相对容易,vCloud部署门槛稍高。不过相比较部署都是可视化配置界面。
- 华为:华为我只部署过FusionCompute,文档资料可以从官网下载,也没有多大问题,其他组件我没有用过,中文操作界面,符合国人习惯,该产品不太好客观评述。
- OpenStack:由于是开源产品,更新很快,本身部署和学习成本高,再加上版本迭代,而且版本迭代可能是对组件的架构有大的调整,所以架构体系庞大,至于部署,官方的部署文档门槛较高,但是现在已经有更好的部署工具,例如Fuel、DevStack、Kolla,以后的部署门槛会大大降低。关于学习,需要用户有Linux基础,所以不管是开发,运维都需要有一定门槛。
关于稳定性:
因为每个产品用好了自然稳定,该维度不好评判,但是从企业级云GIS的使用场景来说,就是都不做基础云平台的高可用,也能很好的去支持,如果懂得一定的优化技巧,可能会在使用体验有多便利。
关于国产化:
这个问题很明显了,VMWare国外的,华为国内的,OpenStack是开源的,也可以算是符合国产化需求。
三、GIS云平台
所谓云GIS,就是将GIS平台能够与基础云平台进行结合,同时GIS平台需要符合云计算的技术特征,例如跨平台技术、集群的动态伸缩技术,特别是需要提供一个将GIS平台与基础云平台衔接的媒介,通过该媒介,将GIS平台软件在基础云平台上运行。
当然,在国内,目前我们能够提出的GIS平台已经可以说是两家的天下了,一个是中国的SuperMap,一个是美国的ArcGIS,我也有幸都服务过这两个厂商,对相关产品都有比较深入的了解,本文也不会去评判两家产品,我说的是,两家都可以在基础云平台上运行,SuperMap的iCloudManager和捷泰天域(与Esri中国关系自行百度)的GIStack都是我说的媒介,相关功能都是可以对标的,至于选择哪家,请用户自行决定。
四、GIS应用
如果说,对云计算有深入了解可以看出,我从上倒下就是按照一个标准的云计算架构,从硬件到IaaS,从IaaS到PaaS,接下来就是SaaS层,也就是离用户最近的GIS应用。
其实每次去跟用户交流云GIS建设时,你讲硬件、基础云平台,GIS云平台的内容,他们是无感的,因为这离他们太远,他们更关注的是我操作的应用是什么样子的,这些应用如何体现云的特点,其实这个还真是一个比较难描述的话题,因为传统的WebGIS和云端的SaaS应用可能都一样,或者说用急功近利的思想我们将传统应用直接通过虚拟机来变相为SaaS,很多开发商就是这样做的,所谓云的特点让GIS云平台和基础云平台来做,一个云GIS项目就这样对付了。
很能够理解开发商这样做的目的,经费有限,时间紧迫,人员基础各个方面都不会按照一个标准的云计算技术来重新定位该项目,我们在云计算关键技术所谓的RESTful,异步机制,数据持久化,消息服务,分布式架构,功能解耦,无状态服务等只能是PPT上的苍白文字。
其实,可以预想一下真正的云GIS应用是什么样子的,负载过来了,我可以自动化的弹性伸缩,负载均衡,那个组件坏了,我可以直接将应用所在的VM删除掉,再重启一个自动承载服务,需要增加一个新功能,不管是习惯使用哪个开发语言,都可以无缝对接,因为我们用的RESTful,如果系统功能有问题,我们可以快速定位,因为我们做到的功能解耦以及分布式(快速缩小问题面积,最后聚焦),如果需要大量的处理,快速启用N个VM并发处理,我可以在一个运维界面看到各个宿主机和VM的运行状态和监控指标,同时云GIS的日志收割功能可以让我很快的在几十台VM中查看日志,定位问题.....
其实这才是云GIS系统,这也是云GIS的成本..............