虚拟化解决方案
在组建虚拟化数据中心时,一个重要前提是,选择何种虚拟化产品。对于我们接手、设计的案例,无一例外选择的是VMware vSphere。期间也想选择其他产品,但都是有或多或少的问题。有一次尝试使用另一个虚拟化产品,在安装配置的期间没有任何问题,但在模拟生产环境时发现,用户在从局域网及互联网访问该服务器的虚拟机时,发现每个连接的速度被限制在700Kbps/s,而在该服务器的虚拟机之间、虚拟机到物理主机之间速度正常,能达到7、8百兆。后来我按照同样的环境,在其他服务器上测试,发现有的服务器,通过网络访问虚拟机速度正常,有的服务器就被限制在700K多,不到1M。后来我和客户沟通,换成VMware ESXi,网络正常。
在我使用VMware ESX Server到VMware ESXi的这些年中,虚拟化的服务器非常稳定、可靠、安全,期间没有出现问题。在我所维护的网络中,有一台服务器目前仍然在企业生产环境中使用,该服务器从VMware ESX Server 3.0升级到4.0、4.1到现在的5.5,仍然在为企业服务(期间该服务器有块硬盘损坏,换上备用硬盘并完成同步期间,服务器没有关机、重启,业务也没有中断)。
VMware vSphere虚拟化产品,是以前、当前以及将来,虚拟化数据中心的最优选择。vSphere产品安全、可靠、稳定。VMware ESXi虚拟化核心很少,可以安装在1GB的U盘上运行,并且在多年的运行时,除了产品版本升级以及必要的补丁更新,VMware ESXi虚拟化主机不需要重启-只要机房不停电、不升级,VMware ESXi可以一直运行多年。
在实施虚拟化之前,企业信息中心的主管都会有一定的顾虑,尤其是现有业务已经平稳运行了很长时间、信息化比较成熟的企业。他们最大的顾虑就是:实施虚拟化后,整个系统是否安全。例如,原来单位有100个应用,每个应用在1台物理服务器上,整个系统有100台物理服务器;在虚拟化之后,每个应用在1台“虚拟”服务器上,每个主机有10台甚至更多的虚拟机,这样虚拟化10台甚至更少的物理服务器代替了原来的100台服务器。原来某个服务器坏了,最多只是影响这一个应用;现在如果某个服务器坏了,则会影响10个甚至更多的应用。这样会给信息主管带来压力。另外,把多台服务器迁移、合并到一个主机中,性能是否足够呢?
在这里,CIO主要有两个顾虑,一个是安全,一个是性能。
首先说安全问题。在没有采用虚拟化的时候,一台服务器对应一个应用,这看似安全,实际风险比较大。一台服务器是对应一个应用,从数量上来看,分散了风险,但现在这台服务器使用的是“本地硬盘”,所有这个服务器的应用都在“本地硬盘”上,一旦服务器当机、死机,系统不能进入,那么,在服务器不可用的情况下,怎么将数据从这台“当机”的服务器上拷贝或迁移到其他能用的主机上呢?这不是和我们平常的工作站一样,计算机坏了,将硬盘拆下来装到别的机器上就能用。要知道,任何重要的服务器,都是多个硬盘并做着RAID的。无论是最简单的RAID1,还是RAID5、RAID50、RAID10,都是多个硬盘,而简单的将这些进行了RAID配置的硬盘拿到别的服务器,不一定能用,不一定保证数据不丢失(这需要比较高的技术)。
而使用虚拟化技术,每台服务器对应多个应用,相比一台服务器对应一个应用,从数量对比来看,看似不安全,但不能只看简单的数字对比。从使用虚拟化开始,我们应该明白一个原则:数据与系统(或应用)分开。简单来说,所有的数据都没有保存在“本地硬盘”,而是保存在安全性极高的“共享存储”上面。在虚拟化的数据中心中,服务器本地不配硬盘,或配置的硬盘只用来安装虚拟化系统软件(VMware ESXi)本身,而在虚拟化层之上运行的虚拟机,其数据是保存在共享存储上面,服务器“本地”不保存虚拟机数据。这就好比在一个单位中,为每个房间配置一个空调,或者使用中央空调的区别。
在虚拟化之前的大多数的企业中,每台服务器大多配置了1个CPU、2个硬盘做RAID1或3个硬盘做RAID5、单电源、单网络(服务器两块网卡只用一块)。而在虚拟化的项目中,虚拟化主机服务器大多配置2~4个CPU、6~10个甚至更多硬盘做RAID5或RAID50、RAID10、2~4个电源、4个或更多的物理网卡冗余。虚拟化中每台服务器都有冗余,在服务器中的单一网卡、硬盘、电源甚至CPU出现问题时都会有冗余设备接替。另外,在虚拟化项目中,普通采用共享的存储,虚拟机保存在共享的存储中,即使某台主机完全损坏,运行在该主机上的虚拟机会在其他物理主机启动,保证业务系统不会中断。
再说性能问题。单一的应用主机,大多配置2个硬盘做RAID1,或者3个硬盘做RAID5,这样磁盘性能较为低下。在虚拟化主机中,通常用6块或更多的硬盘,采用RAID5、RAID50或者RAID10,磁盘性能较高。另外,虽然虚拟化后,在同一个主机上跑多个虚拟机,但这些虚拟机并不会在同一时刻都会要求较高的CPU与磁盘、内存利用率。根据多年的虚拟化实施经验,在虚拟化后,不会降低原来的每个应用的响应速度而是会略有增加。
在企业实施虚拟化的过程中,大多是先虚拟化不太重要的物理机,将这些物理机迁移到虚拟机中运行一段时间(通常为1周的时间),查看虚拟化后是否对业务应用有所影响,并模拟一些故障、对以后可能出现的问题进行实验,等这些测试完成之后,再虚拟化其他的物理机。而一些不适合虚拟化的应用仍然会运行在原来的物理主机上,例如用做视频点播的服务器、重要的数据库服务器等这些应用。
在虚拟化的过程中有个问题需要考虑,就是原来的一些基础设备,例如原来的服务器、存储、交换机。这些要根据服务器、存储的性能、参数,综合考虑。
对于原来的32位的服务器,原则上是全部淘汰,因为这些服务器购买时间较长,性能较低、潜在故障率较高,不能满足现有应用。
如果是近一、两年新购买的服务器,则考虑将这些服务器整合、扩充,用做虚拟化主机。大多数服务器能扩充到很高的配置,但标配并不是很高。例如,IBM 3850 X5服务器最大可以扩充到4个CPU、1TB内存、双电源。以CPU为例,IBM 3850 X5出厂标配2个CPU,这CPU可以是6核、8核。如果企业现有多台IBM 3850 X5服务器(例如2台或更多),可以将这2台的CPU放到其中一台,而另一台则可以新购4个8核的CPU。同样,内存也可以集中到一台,另一台则配置多个单条8GB的内存。同样,对于其他厂家的服务器也可以这样处理,例如DELL R910(如图1-1所示),标配2个CPU,最大支持4个CPU、2TB内存、4冗余电源,可以多台进行整合,然后再进行服务器的升级。
图1-1 Dell R910服务器
在虚拟化实施的过程中,如果使用现有的服务器,推荐优先为服务器添加内存、网卡,其次是配置冗余电源、CPU。至于硬盘,在企业虚拟化项目中,优先是配置共享的存储,其次是添加本地硬盘。
除了做虚拟化主机外,还可以将原有的服务器改做存储服务器。例如,如果某服务器配置较低并且不具有升级的价值,但具有较多的本地硬盘时,可以将硬盘集中到某台服务器中,将这台服务器通过安装openfiler(32位或64位产品都有)或Windows Server 2008 R2或Windows Server 2012,组成存储服务器,通过千兆网络为虚拟化环境提供iSCSI的网络存储,这些存储可以用来做数据备份或扩展。
在实施虚拟化的前期,有一个虚拟机容量规划。就是一台物理服务器上,最大能放多少虚拟机。实际上这是一个综合的问题,即要考虑主机的CPU、内存、磁盘(容量与性能),也要考虑运行的虚拟机需要的资源。在实际使用时,系统总有至少30%甚至更高的富余容量,不可能让一个主机上的资源利用率超过80%以致接近100%,否则一旦达到这些数值,整个系统响应会比较慢。
在估算虚拟化的容量时,在只考虑CPU的情况下,可以将物理CPU与虚拟CPU按照1:4~1:10甚至更高的比例规划。例如一台物理的主机具有4个8核心的CPU,在内存、存储足够的情况下,按照1:5的比例,则可以虚拟出4×8×5=160个vcpu,假设每个虚拟机需要2个vcpu,则可以创建80个虚拟机。在实际实施虚拟化的项目中,大多数虚拟机对CPU的要求并不是非常的高,即使为虚拟机分配了4个或更多的CPU,但实际上该虚拟机的CPU使用率只有10%以下,这时候所消耗的物理主机CPU资源不足0.5个。如图1-2所示,这是使用vCenter Operations Manager统计的容量分配过剩的虚拟机,从列表中可以看出,大多数虚拟机的CPU利用率不足10%,实际使用的内存也较低(尽管为大多数虚拟机分配了2GB内存,但实际使用只有256~576MB内存之间)。
图1-2 使用vcos统计的容量过剩的虚拟机
在虚拟化的项目中,对内存占用是最大、要求最高的。在实际使用中也是如此,管理员会发现,物理主机的内存会接近80%甚至90%。因为在同一物理主机上,规划的虚拟机数量较多,而且每个虚拟机分配的内存又较大(总是超过该虚拟机实际使用的内存),所以会导致主机可用内存减少,如图1-3所示,这是某正在运行中的VMware ESXi 5.1主机的CPU与内存使用情况。
图1-3 某运营中的ESXi摘要
在为物理主机配置内存时,要考虑将要在该主机上运行多少虚拟机、这些虚拟机一共需要多少内存。一般情况下,每个虚拟机需要的内存在1GB~4GB甚至更多,还要为VMware ESXi预留一部分内存。通常情况下,配置了4个8核心CPU的主机,一般需要配置96GB甚至更高的内存;在配置2个6核心CPU的主机,通常要配置32~64GB内存。
如果要将现有的物理服务器迁移到虚拟机中,可以制作一张统计表这包括现有物理服务器的CPU型号、数量、CPU利用率、现有内存及内存利用率、现有硬盘数量、大小、RAID及使用情况,然后根据这些来计算,表1-1是某单位现有服务器的情况统计(在实际情况下,该单位服务器大约有100台,表1-1及后文表1-2只是列出了部分服务器的型号及资源使用统计)。
表1-1 某单位现有服务器资源利用情况统计表
根据上表,我们计算每台服务器实际需要的CPU、内存与磁盘空间,计算方式为:
实际CPU资源=该台服务器CPU频率×CPU数量×CPU使用率
实际内存资源=该台服务器内存×内存使用率
实际硬盘空间=硬盘容量-剩余空间
例如,对于该表中第一台服务器需要3.0Ghz×2×15%=0.9Ghz,内存为2GB×30=0.6GB,硬盘为73GB-30GB=43GB。
然后在表1-1后面计算,实际得出情况如表1-2所示。
表1-2 每台服务器实际使用资源及最后资源统计(只列出部分服务器)
经过计算,本项目中已经使用了91.1944Ghz的CPU资源,以CPU频率3.0HzCPU为例,则需要30核心(负载100%),但要考虑整体项目中CPU的负载率为60%~75%,以及管理等其他开销,则至少需要40个CPU核心,如果配置4个6核心的服务器,则需要大约4台物理主机。至少内存,现在已经使用了182GB,加上管理以及富余,以360GB计算,每服务器96GB~128GB即可。
如果不购买新的服务器,而从中选择4~8台高配置的服务器(例如6台),将这100台服务器使用虚拟化技术,迁移到其中的6台,则节省的电费(以每台服务器400W、工业用电1.1元/度计算)约34.69万。
如果要使用现有的服务器,则需要为某些做虚拟化主机的服务器扩充内存。使用现有服务器,如果不扩充现有服务器的CPU,在2个CPU的主机中,将内存扩充到64GB为宜。
根据表1-2计算可知,己使用6.9T的容量,则要为整个虚拟化系统规划10TB甚至更多的存储。在备份原有服务器数据的情况下,可以集中300GB、146GB的硬盘到虚拟化主机上,统一使用。在使用6台物理服务器做虚拟化主机的情况下,每台服务器需要1.5TB~3TB的空间。在使用RAID5时,使用6块300GB即可提供1.5TB可用容量,使用8块300GB做RAID50时可提供1.8TB可用容量。使用12块300GB硬盘、RAID50时可提供3TB的容量。
在实施虚拟化的过程中,如果现有服务器可以满足需求,可以使用现有的服务器。如果现有服务器不能完全满足需求,可以部分采用现有服务器,然后再采购新的服务器。
如果采购新的服务器,可供选择的产品比较多。如果单位机房在机柜存放,则优先采购机架式服务器。采购的原则是:
(1)如果2U的服务器能满足需求,则采用2U的服务器。通常情况下,2U的服务器最大支持 2个CPU,标配1个CPU。在这个时候,就要配置2个CPU。
如果2U的服务器不能满足需求,则采用4U的服务器。通常情况下,4U的服务器最大支持4个CPU并标配2个CPU,在购置服务器时,为服务器配置4个CPU为宜。如果对服务器的数量不做限制,采购两倍的2U服务器要比采购4U的服务器节省更多的资金,并且性能大多数也能满足需求。
(2)CPU:在选择CPU时,选择6核或8核的Intel系列的CPU为宜。10核或更多核心的CPU较贵,不推荐选择。当然,单位对CPU的性能、空间要求较高时除外。
(3)内存:在配置服务器的时候,近可能为服务器配置较大内存。在虚拟化项目中,内存比CPU更重要。一般情况下,2个6核心的2U服务器配置64GB内存,4个6核心或8核心的4U服务器配置128GB或更多的内存。
(4)网卡:在选择服务器的时候,还要考虑服务器的网卡数量,至少要为服务器配置2接口的千兆网卡,推荐4端口千兆网卡。
(5)电源:近可能配置两个电源。一般情况下,2U服务器选择2个450W的电源可以满足需求,4U服务器选择2个750W电源可以满足需求。
(6)硬盘:如果虚拟机保存在服务器的本地存储,而不是网络存储,则为服务器配置6个硬盘做RAID5,或者8个硬盘做RAID50为宜。由于服务器硬盘槽位有限,故不能选择太小的硬盘,当前性价比高的是600GB的SAS硬盘。2.5寸SAS硬盘转速是10000转,3.5寸SAS硬盘转速为15000转。选择2.5寸硬盘具有较高的IOPS。
至于服务器的品牌,则可以选择IBM、HP或Dell。表1-3是几款服务器的型号及规格。
表1-3 几款服务器型号及规格
几种服务器外形如图1-4~图1-6所示。
图1-4 HP DL380系列,2U机架式
图1-5 HP DL 580系列,4U机架式
图1-6 IBM 3850系列,4U机架式
为了提高服务器的密度,一些厂商采用类似“刀片”服务器的作法,在2U大小的机架中,集成4个节点服务器,这样一台服务器相当于4台独立的服务器使用,进一步节省了空间,例如DELL PowerEdge C6100就是这么一款机器,它支持12个3.5英寸或24个2.5英寸热插拔SAS、SATA或固态硬盘,集成4个节点,每个节点可以2个CPU、96GB内存、2端口网卡。通过共享电源、风扇和底板,可以有效降低功耗,实现高能效并节省运营成本。C6100正面、背面如图1-7、图1-8所示。
图1-7 Dell C6100正面图
图1-8 DELL C6100背面图,有4个节点
当对服务器占用空间有较高要求时,可以配置刀片服务器,例如华为Tecal E6000服务器,8U的空间,可以最大配置10个刀片服务器,每个服务器可以配2个CPU、2个SAS硬盘、12个内存插槽、双端口网卡。华为E6000系列服务器如图1-9所示。
图1-9 华为E6000机箱及刀片服务器
在虚拟化项目中,推荐采用存储设备而不是服务器本地硬盘。在配置共享的存储设备时,并且虚拟机保存在存储时,才能快速实现并使用HA、FT、vMotion等技术。在使用VMware vSphere实施虚拟化项目时,一个推荐的作法是将VMware ESXi安装在服务器的本地硬盘上,这个本地硬盘可以是一个固态硬盘(5.2~10GB即可),也可以是一个SD卡(配置8GB即可),甚至可以是1GB的U盘。如果服务器没有配置本地硬盘,也可以从存储上为服务器划分8~16GB的分区用于启动。
【说明】在HP DL380 G8系列服务器主板上集成了SD接口,可以将SD卡插在该接口中用于安装VMware ESXi。
如果在虚拟化项目中选择存储,如果在项目中服务器数量较少,可以选择SAS HBA接口(如图1-4所示)的存储,如果服务器数量较多,则需要选择FC HBA接口(如图1-5所示)的存储并配置FC的光纤交换机。SAS HBA接口可以达到6Gbps/s,而FC HBA接口可以达到8Gbps/s。
图1-4 SAS HBA接口卡
图1-5 FC HBA接口卡
在选择存储设备的时候,要考虑整个虚拟化系统中需要用到的存储容量、磁盘性能、接口数量、接口的带宽。对于容量来说,整个存储设计的容量要是实际使用容量的2倍以上。例如,整个数据中心已经使用了1TB的磁盘空间(所有己用空间加到一起),则在设计存储时,要至少设计2TB的存储空间(是配置RAID之后而不是没有配置RAID、所有磁盘相加的空间)。
例如:如果需要2TB的空间,在使用600GB的硬盘,用RAID10时,则需要8块硬盘,实际容量是4个硬盘的容量,600GB×4≈2.4TB。如果要用RAID5时,则需要5块硬盘。
在存储设计中另外一个重要的参数是IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。存储端的IOPS性能和主机端的IO是不同的,IOPS是指存储每秒可接受多少次主机发出的访问,主机的一次IO需要多次访问存储才可以完成。例如,主机写入一个最小的数据块,也要经过“发送写入请求、写入数据、收到写入确认”等三个步骤,也就是3个存储端访问。每个磁盘系统的IOPS是有上限的,如果设计的存储系统,实际的IOPS超过了磁盘组的上限,则系统反应会变慢,影响系统的性能。简单来说,15000转的磁盘的IOPS是150,10000转的磁盘的IOPS是100,普通的SATA硬盘的IOPS大约是70~80。一般情况下,在做桌面虚拟化时,每个虚拟机的IOPS可以设计为3~5个;普通的虚拟服务器IOPS可以规划为15~30个(看实际情况)。当设计一个同时运行100个虚拟机的系统时,IOPS则至少要规划为2000个。如果采用10000转的SAS磁盘,则至少需要20个磁盘。当然这只是简单的测算,在真正实施时需要考虑多方面的因素。
在规划存储时,还要考虑存储的接口数量及接口的速度。通常来说,在规划一个具有4主机、1个存储的系统中,采用具有2个接口器、4个SAS接口的存储服务器是比较合适的。如果有更多的主机,或者主机需要冗余的接口,则可以考虑配FC接口的存储,并采用光纤交换机连接存储与服务器。表1-4是几种低端存储的型号及参数,可以满足大多数的中小企业虚拟化系统中。
表1-4 常用几种存储服务器的参数
在一个虚拟化环境里,每台物理服务器一般拥有更高的网卡密度。虚拟化主机有6个、8个甚至更多的网络接口卡(NIC)是常见的,反之,没有被虚拟化的服务器只有2个或4个NIC。这成为数据中心里的一个问题,因为边缘或分布交换机放在机架里,以简化网络布线,然后向上传输到网络核心。在这种解决方案里,一个典型的48端口的交换机仅能处理4~8台虚拟主机。为了完全添满机架,需要更多的边缘或分布交换机。
在虚拟化环境里,当多个工作负荷整合到这些主机里时,根据运行在主机上的工作负荷数量,网络流量增加了。网络利用率将不再像过去每台物理服务器上那样低了。
为了调节来自整合工作负荷增加的网络流量,可能需要增加从边缘或分布交换机到网络核心的向上传输数量,这时对交换机的背板带宽及上行线路就达到较高的要求。
另一个关键的改变来自最新一代虚拟化产品的动态性质,拥有诸如热迁移和多主机动态资源管理。虚拟化里固有的动态更改性能意味着不能再对服务器之间的流量流动作任何假设。
在进行虚拟机之间的动态迁移,或者将虚拟机从一个存储迁移到另一个存储时,为了减少迁移的时间,不对关键业务造成影响,在迁移期间会占用大量的网络资源,另外,在迁移的时候,虽然可以减少并发迁移的数量,但在某些应用中,可能会同时迁移多台虚拟机,这对交换机背板带宽以及交换机的性能的要求达到更高。
另外,虚拟化使数据中心里网络层的一些能见度降低了。网络工程师在虚拟交换机里没有能见度,也不能轻松决定哪个物理NIC对应哪个虚拟交换机。这在故障检修中是最重要的信息,为了减少故障率,为交换机配置冗余的业务板及冗余电源也应该考虑。同时,在近可能的前提下,配置更高的交换机。
在大多数的情况下,物理主机配置4端口千兆网卡,并且为了冗余,近可能是每两个网卡绑定在一起,用做负载均衡及故障转移。
对于中小企业虚拟化环境中,为虚拟化系统配置华为S5700系列千兆交换机即可满足大多数的需求。华为S5700系列分24端口、48端口两种。如果需要更高的网络性能,可以选择华为S9300系列交换机。如果在虚拟化规划中,物理主机中的虚拟机只需要在同一个网段(或者在两个等有限的网段中),并且对性能要求不高但对价钱敏感的时候,可以选择华为的S1700系列普通交换机。无论是VMware ESXi还是Hyper-V Server,都支持在虚拟交换机中划分VLAN。即将主机网卡连接到交换机的Trunk端口、然后在虚拟交换机一端划分VLAN,这样可以在只有一到两个物理网卡时,可以让虚拟机划分到所属网络中的不同VLAN中。表1-5是推荐的一些交换机型号及参数。
表1-5 中小企业虚拟化环境中交换机的型号及参数
【说明】华为S5700系列机箱高度为1U,提供精简版(LI)、标准版(SI)、增强版(EI)和高级版(HI)四种产品版本。精简版提供 完备的二层功能;标准版支持二层和基本的三层功能;增强版支持复杂的路由协议和更为丰富的业务特性;高级版除了提供上述增 强版的功能外,还支持MPLS、硬件OAM等高级功能。在使用时可以根据需要选择。