⑴ 如何成功构建虚拟化数据中心

涉及虚拟化部署的项目往往包含了数据中心内的大量设备,从服务器、存储和网络到您的安全和管理软件。本文讲述虚拟化部署项目中的九大步骤,来规范整个安装过程。

虚拟化方面的专家EricSiebert在他的文章:“VirtualizationDeployment:”当中涉及了各种虚拟化的部署过程。下面我将对他描述的每一步进行展开和描述,另外也加入了额外的一些考虑和需要明确的问题。

-建设虚拟环境。在这一步骤中,安装服务器,装载选定的虚拟化管理程序(例如ESXServer或是Hyper-V),安装中央管理平台(微软的SCVMM或VMware的vCenter),最后把虚拟主机添加到管理平台中。

-配置虚拟环境。在这一步中,配置服务器的静态IP地址,纠正网络系统的参数,在有必要的情况下对VLAN进行配置。

-虚拟环境的安全保障。在这一步中,对所有的虚拟主机设置一个复杂的登录密码,在WindowsAD服务器中添加组,然后把新增加的、经过认证的VMware管理员添加到这个组中,接下来把该组认证为VMwarevCenter的管理员并且删除域管理账户。如果您还有其他类型的一些用户需要对他们的虚拟机做管理(例如SQL管理员或是开发环境),请考虑增加额外的组和新的角色。

-虚拟环境的构建。在这一步中,完成向虚拟架构中增加新的虚拟机,通过创建新的虚拟机和安装全新的操作系统,或者是借助于Vmware的ConverterEnterprise等工具(在第二部分有介绍),完成从物理机到虚拟机(P2V)的转化,以及从中下载虚拟应用程序。请选择您P2V迁移的转换方式。

-虚拟环境的监控。在这一步,至少您会希望可以通过基本的管理工具监控到新的虚拟化主机,这可以借助免费的ESXiServer和vSphereClient中提供的简单图形界面实现。进一步地,您可能还会希望使用一些由vCenter提供的高级性能管理监控。通过设置可以实现在发生性能问题时通知到指定的管理员。随着使用的深入,很可能您还会希望用到更加复杂的性能监控工具,如同我们在“管理工具的选择”中提到的那样。

-虚拟环境的维护。在单台虚拟主机和一组虚拟机的环境中,维护是一个非常简单的工作。但是如果您的系统架构扩展了,就会用到维护工具。请不要跟虚拟环境监控的概念相混淆,在维护阶段最主要的工作就是补丁程序的管理。幸运的是,如果您采购的是VMwarevSphere,在所有的商业化版本中包含了UpdateManager。通过UpdateManager,您可以对现有ESX服务器的补丁升级做管理,包括可以涉及到一些操作系统和部分应用程序的补丁升级。如果您还使用了VMware的DRS(DistributedResourceScheler)功能,那么ESXServer可以实现在用户不停机的情况下升级。

-虚拟环境的备份。如同使用物理服务器一样,为虚拟服务器建设备份机制也是极其重要的。当您完成对物理服务器虚拟化的同时,有效的备份机制也需要在同一天建设完成。虽然虚拟机备份也可以通过已有的传统备份软件实现,但这并不是虚拟环境备份的最佳选择。通过采用为虚拟机定制的备份软件,它们可以掌握所有的虚拟机都在哪台物理主机上,然后可以识别出在什么时间需要把虚拟机迁移到新的主机上去。这些备份软件可以支持微软的VSS(VolumeShadowCopyService),确保应用程序的持续备份以及提供一些特殊的附加功能,诸如文件级和镜像级的备份,重复数据删除和数据复制等等。典型的虚拟化环境专用备份软件包括:VMware'sDataRecovery,VeeamSoftware'sBackup以及VizioncorevRanger。

-虚拟环境的故障诊断。我们当然希望在新部署了虚拟化架构后不会遇到任何问题。但是如果问题发生了,我们需要关于虚拟化环境的文档和图表。而且还需要有所有设备——服务器、SAN、网络、存储和虚拟软件等——相关的,售后支持信息和联系人窗口。

-培训和文档。尽管这最后一步在Siebert的文章中并没有提及,但是培训和文档也是完成成功部署的重要步骤之一。所有好的部署计划都应该包含针对公司中其他管理员的培训和关于新虚拟化架构以及日常管理任务的文档。虽然对于其他管理员而言,虚拟服务器可能用起来跟物理的区别不大。但是对于虚拟机的管理和故障诊断是完全不同于物理机的。因此,培训课程是必需的,以便于那些支持人员和主要的管理员可以理解他们面临的物理系统架构所发生的变化,以及在虚拟机环境中如何完成和之前相同的工作。

避免虚拟化部署中的陷阱

虽然说只要遵守基于以上的安装步骤而制定的安装计划,就可以避免在虚拟化部署中出现问题,但是还是有一些陷阱需要在安装时注意。下面让我们举例来说明一些类似的问题:

-低估了虚拟化主机所需的内存数量。尽管您使用了VMware的内存过分配技术,但是很有可能生产环境中的虚拟化主机会用到所有安装的内存总量。很多用于生产环境中的虚拟化主机都安装了16GB甚至更大的内存。

-低估了所需共享存储的存储空间。尽管新版的VMware提供了自动精简配置功能,可以帮助用户减少虚拟化对存储空间的占用情况,但是虚拟机会迅速地占用共享存储中的大量存储空间。如果可能的话,采用VMware的自动精简配置或者是通过SAN存储来降低硬盘空间的占用率。您还可以通过使用Vizioncore的vOptimizerPro工具来回收过分配的存储空间。

-虚拟化的速度远远超过培训和文档收集的速度。对一台物理服务器完成虚拟化是很容易的,可以在几分钟内完成,但是培训资深管理员和升级文档的时间要比虚拟化本身长得多。所以一定要避免同时对所有的物理环境做虚拟化,然后面临漫长的虚拟机故障诊断过程。以及对某些未经应用程序管理员许可的应用做虚拟化。

-过度分配。在初始化安装的时候,很容易出现虚拟机过度分配的问题,因为创建一个新虚拟机的过程看起来如此简单。和物理服务器的管理一样,我们应该仅分配那些业务所需的虚拟机。每一台新的虚拟机会占用额外的服务器资源以及带来附加的操作系统许可购买费用。

-缺少测试。对于应用在虚拟机上的测试非常的简单,只需要做从物理机到VMwareWorkstation虚拟机的迁移,然后在虚拟机里验证结果。在我的经验看来,99%的应用可以在虚拟机上工作,但是请密切关注那些图像处理密集型的应用(例如运行计算机辅助设计CAD等在虚拟桌面),或者是需要购买额外软件许可的应用软件。当验证完软件的兼容性之后,还需要考虑虚拟机架构的支持能力:能否满足应用程序的计算需求以及提供和物理服务器同等的性能表现。

⑵ 数据中心是什么其系统结构和工作原理是怎样的呢

一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。
先大概列一下互联网行业数据仓库、数据平台的用途:

  • 整合公司所有业务数据,建立统一的数据中心;

  • 提供各种报表,有给高层的,有给各个业务的;

  • 为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;

  • 为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;

  • 分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;

  • 开发数据产品,直接或间接为公司盈利;

  • 建设开放数据平台,开放公司数据;

  • 。。。。。。


  • 上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;

  • 其实,互联网行业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;

  • 建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。

  • 整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:

  • 逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。

  • 我们从下往上看:

  • 数据采集数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。


  • 数据源的种类比较多:

  • 网站日志:


  • 作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,

  • 一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;

  • 业务数据库:


  • 业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapRece来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。

  • 当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。

  • 来自于Ftp/Http的数据源:


  • 有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;

  • 其他数据源:


  • 比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;


  • 数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。


  • 离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapRece要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;

  • 当然,使用Hadoop框架自然而然也提供了MapRece接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapRece来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapRece要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》

  • 实时计算部分,后面单独说。

  • 数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;


  • 前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据;和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。

  • 另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。


  • 数据应用
  • 业务产品


  • 业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;

  • 报表


  • 同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;

  • 即席查询


  • 即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;

  • 这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。

  • 即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。

  • 当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。

  • OLAP


  • 目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;

  • 这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;

  • 比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。

  • 其它数据接口


  • 这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。


  • 实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。

  • 我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。

  • 做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。

  • 任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;


  • 这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始;这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。

  • 前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。

  • 总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。

⑶ 如何构建云数据中心

“私有云”是一个市场词汇,它指的是在一个私有数据中心挂载应用程序和服务器或者存储空间,然后提供这些资源的按需访问。通过这个方法,您可以快速地部署新应用程序、服务器和存储(以逻辑磁盘的形式),而不是像以前那样需要花费几周或几个月时间确定需求,申请预算,选择合适产品,然后才获得服务器,再进行部署。

构建私有云有哪些重要性?

将您现有的应用程序和服务器基础架构迁移到私有云的虚拟服务器上,可以节省大量的成本。现在的高端刀片服务器相比以前的独立服务器,由于能耗显着下降而具有更高的性价比。您也可以更充分地利用数据中心空间(有时候可以使用一个机架的少量刀片服务器替代一整排的服务器,数量可能减少一半),在同样的空间部署更多的服务器,或者减少数据中心面积和制冷成本。

私有云的构成元素

实现私有云的基础是服务器虚拟化:通常是使用Intel x86架构和VMware、Citrix或Microsoft的超级管理程序在一台物理服务器上运行许多虚拟机。服务器虚拟化能够提高CPU和RAM的利用率,因为大量的虚拟机都使用相同的物理资源,而这些资源原本是空置的。例如,能够扩展内存架构的高速多核服务器Cisco USC刀片服务器最多可拥有32个处理内核及384GB内存,它最多可以运行100个虚拟机,每一个虚拟机都有4GB内存(这是Windows或Linux服务器通常配备的内存数)。

除了优化资源利用率,服务器虚拟化也使您能够快速创建服务器。您所需要做的就是定义好虚拟机,指定虚拟服务器所需要的RAM、CPU和外部资源。理想情况下,您会得到一组预定义模板,您可以使用模板创建新虚拟机,从而不需要从CD/DVD ISO镜像创建Windows或Linux服务器。

私有云架构的第二个构成元素是虚拟化存储,或者按需创建虚拟磁盘,然后将它们附加到所需要的虚拟机上。虚拟磁盘通常是以大型共享文件系统的文件方式存在的;您只需要一个服务器虚拟化软件(VMware的vSphere或Microsoft 的Hyper-V)和一个足够大的存储阵列就能够部署这些虚拟存储。

最后一个但也是很重要的一个元素是,需要一个自助服务入口,这样用户(各个部门或应用程序团队)才能够创建新的虚拟机和磁盘。对于小型企业,由虚拟化软件(例如,VMWare的vCenter)提供的GUI工具可以实现这个功能。而大型企业肯定需要更高级的软件,它们要支持基于用户和角色访问控制的隔离。最新发布的VMware vCloud Director或Cisco UCS Manager可以满足这个需求。

分阶段构建私有云

私有云基础架构的构建通常包含以下三个阶段:

试点项目;

部署更大型服务器和存储基础架构,将现有的服务器迁移到虚拟化环境;

实现带有自助服务入口的真正私有云,并在需要时实现按需支付机制。

这些阶段可能需要几个月甚至几年才能完成,因此最好采取以下测量步骤:

通过市场调研,选择服务器和虚拟化平台。我个人推荐使用Cisco UCS和VMware。其他可能会根据原有的部署选择包括IBM或HP的机架服务器,或者Microsoft或Xen的超级管理程序技术。

大多数情况下您已经拥有存储阵列;您只需要保证它有足够的空余空间即可。您通常需要给每一个虚拟机分配几个GB的磁盘空间(除了需要存储的用户之外);这样虚拟磁盘很快就会消耗TB的空间。

在部署新基础架构并熟悉它之后,要创建一个虚拟磁盘模板(例如,一般为Windows和Linux服务器),然后开始使用虚拟机来满足所有新服务器的需求,从而得到简化。当人们都认同虚拟化是一种可靠的方法之后,您可以开始将现有的应用程序迁移到虚拟化环境,以改进性能和减少数据中心成本。

您还需要知道什么?

服务器/磁盘虚拟化和私有云概念是非常棒的工具……但是仅此而已。您需要灵活地使用这些技术,否则您会浪费很多的时间和金钱。大多数IT组织都需要改变他们的组织架构以及整合网络服务器和存储团队的过程,因为他们需要紧密协作来创建这样一个环境。