一、 虚拟化集群介绍、设计思路及架构
使用虚拟化集群的目标是克服单机虚拟化的局限性,利用技术手段提高虚拟机可用性,最终达到业务不中断或者减少中断时间,确保业务数据更安全的目标。
1. 虚拟化集群介绍
1)什么是虚拟化集群
虚拟机集群最显著的特征是有共享存储,因为有了共享存储,虚拟机就可以实现非常快速的在线迁移,并在虚拟化层配置高可用。笔者在生产环境使用的集群有两种存储方式,基于商业存储和基于开源分布式文件系统。
2)虚拟化集群的高可用和基于应用层高可用的区别
高可用是经常用到的运维技术,在系统、网络、数据库、Web业务等各个应用层面都有使用。高可用技术是指至少有主备两个节点,当主节点故障的时候,迅速切换到备用节点。为了避免备用节点误判,有时候还有第三个节点,或者主节点和备用节点共同能访问到的存储空间,用于做仲裁判断。应用层面的高可用还有一个特点,就是一般都有浮动IP,当切换发生的时候,IP从主节点漂移到备用节点。应用层面的高可用一般切换时间比较快,从几毫米到几秒中,同时应用层面的高可用一般需要专用软件,比如常用的Keepalived,Heartbeat等。
虚拟化层面的高可用是虚拟机系统层面的高可用,即当一台计算节点故障的时候,在另外一台计算节点上自动将故障节点上的虚拟机启动起来。注意如果虚拟机上的业务不能做到开机自启动,即使虚拟机自动启动了,并不能保证业务层面的自动恢复!
另外还有一个问题,就是即使虚拟机启动起来了,当启动到一半虚拟机的系统卡住了,也不能及时恢复业务!
虚拟化层的高可用一般业务恢复实际是系统重启的时间,加上业务开机自启动的时间,通常是分钟级别。
虽然虚拟化层高可用有业务不能恢复的风险,业务恢复时间也相对比较长,但是虚拟化层高可用有个非常巨大的优势,就是不需要在应用层面配置,大大的拓宽了高可用的适用范围,使原来在应用层难以使用高可用技术的应用,也能做到高可用,尤其是在某些专用的软件领域。
其实虚拟机层高可用和应用层面高可用并不矛盾,在虚拟机的系统里面,也可以配置应用层面的高可用,做这样的配置的时候,注意主备节点放置到不同宿主机上!
3)虚拟化集群后端存储的使用
最早的时候,笔者在生产环境使用的集群都是以机柜为单位的小集群,主要因为笔者一直搭建的是私有云,在IDC机房里面机柜都是要计算费用的,为了充分利用资源,合理节省成本,笔者私有云一个设计思想就是能够按照机柜,灵活扩展或者伸缩。
后来随着虚拟化的规模扩大,也进行了一些基于开源分布式文件系统集群的搭建,基于开源分布式文件系统的集群,规模可以更大,扩展性更好,适用于KVM的开源分布式文件系统在第9章、第10章都有详细的介绍。开源的虚拟化管理平台,本书第11章、第12章、第13章有详细介绍,所以本章不再介绍开源分布式文件系统及管理平台。
2. 使用虚拟化集群的优势
虚拟化集群相对于单机虚拟化,有以下几点优势:
q 快速的在线迁移(Live Migration),设备、系统维护造成的业务计划内停机时间减少到零。
q 高可用(HA),一台计算节点故障,上面的虚拟机可以很快在其他计算节点上启动运行起来,极大缩短计划外停机时间。
q 动态资源调度,业务负载发生变化引起计算节点压力分布不均匀时,可手动或者自动平衡物理机负载。也可在整体压力较低的时间段,将虚拟机集中在部分计算节点上,将不用的计算节点临时关闭,达到节能的目标。
q 业务快速部署,集群将资源池化,通过和管理平台结合,在集群的容量范围内,业务部署的速度非常快。
q 数据更安全,后端存储采用冗余度更高的商业存储,或者分布式文件系统,数据可靠性可以达到99.99%以上。
q 网络速度、可靠性更高,集群网络采用冗余架构,网络设备、网络连接都是双冗余,网络速度更高,可靠性也更高,单台网络设备、单根网线、单个网卡故障都不会引起网络中断。
提示:
1)什么是计划内停机与计划外停机
计划内停机是指可预期可计划的停机,比如定期的维护,提前通告的维护。计划外停机是指突发事件引起的停机事件,比如硬件故障,网络DDOS攻击等。一般计划内停机因为是提前预知的,会做好预防措施,不会有数据丢失,对业务的损失是比较小的。计划外停机则因为是突发事件,对业务的损失要大很多。运维的重要职责之一就是通过技术手段减少计划外和计划内停机时间,对虚拟化来说,虚拟化集群能够做到在线虚拟机迁移,并且是全冗余设计,需要计划内硬件和软件维护的时候,可以做到计划内停机时间为零。当宿主机发生紧急硬件故障的时候,虚拟机可以很快在其他宿主机上开起来,所以虚拟化集群也能有效降低计划外停机。
2)在线迁移并不是灾备手段
在线迁移实际迁移的是虚拟机的内存,当宿主机发生故障的时候,虚拟机的内存信息已经丢失了,这时候是不能再去做虚拟机的在线迁移的。所以在线迁移解决的是有计划的维护问题,比如要升级宿主机内存,可以将宿主机上的虚拟机在线迁移到其他宿主机上,内存升级完成后,在将虚拟机在线迁移回来。
3. 集群设计及架构
1)虚拟化集群设计
为保证虚拟机的尽量的在线时间,灵活的扩展,虚拟化集群的设计需要满足以下要求:
q 有共享存储,虚拟机能够在线迁移;
q 通过增加计算节点、存储、网络设备可以横向扩展;
q 没有单点故障,计算节点有多个,商业存储为双控制器,分布式文件系统镜像写多份,网络设备冗余;
q 性能满足要求,并且通过增加设备,性能可以扩展
2)虚拟化集群的架构
一套虚拟化集群体系包括以下组成部分:
q 若干计算节点,承载虚拟机的计算、内存、网络资源;
q 管理节点及管理平台,管理虚拟机的镜像,虚拟机生成、维护、销毁的生命周期,虚拟机的调度;
q 后端存储,存储虚拟机镜像存放;
q 网络设备。
二、虚拟化集群技术方案
1. 前端计算
虚拟化集群前端计算节点可以使用普通机架式服务器,也可以使用刀片服务器。
1)机架式服务器做为计算节点的优缺点
机架式服务器做为计算节点的优点是:
q 架构简单,安装配置方便;
q 扩展节点数量和升级较为容易;
q 成本有一定的优势。
缺点是:
q 随着节点数量的增多,占用的机柜空间也在增大,单机柜服务器密度低;
q 网络结构复杂,每台服务器有公网、私网、存储网;
q 交换机端口数量多,接线容易出错。
2)刀片服务器做为计算节点的优缺点
使用刀片服务器作为计算节点的优点是:
q 刀片服务器内置交换机,可以灵活的配置网络;
q 刀片服务器连线简单,占有交换机端口数量少,网络非常简洁;
q 单位机柜服务器密度大;
q 功耗低;
q 刀片服务器冗余电源和风扇,冗余交换模块,是全冗余的架构。
使用刀片服务器的缺点是:
q 成本较高;
q 配置复杂,安装配置需要专业的知识;
q 往往需要改造机柜电源,并受限于机柜最高电流。
另外目前还有一种多节点服务器,就是在1U或者2U的空间里面,能够容纳2到4台服务器,这些服务器很像是刀片服务器,共享电源和机框,但是网络接口独立。多节点服务器密度介于机架式服务器和刀片服务器之间,使用上和机架式服务器完全一样。
服务器的配置选型,根据笔者的经验,选择比较高的配置,虽然初期投入高,但是长远看,因为能够容纳更多的虚拟机,其实是节省成本的。宿主机在运行一段时间后,往往会发现内存是瓶颈,所以一开始配置的时候,内存尽量配置大一些。具体宿主机如何选型在第15章已经有详细的介绍,本章就不重复介绍了。
3. 后端存储技术方案
虚拟化集群的后端存储可以使用商业存储和分布式文件系统,商业存储有三类:NAS、IP SAN、FC SAN。
1)NAS共享存储
NAS(NETWORK ATTACHED STORAGE )即网络附加存储,网络上直接挂接的存储设备,相当于一个网络文件共享服务器。
测试环境可以用一台普通的主机模拟NAS,只要这台主机有自己的磁盘和文件系统,并且对外提供访问文件系统的接口。最常见的NAS有Linux下的NFS和windows下的CIFS。
2)IP SAN共享存储
SAN(STORAGE AREA NETWORK)即存储区域网络,主要是基于TCP/IP的网络来实现数据存取,即传输介质为IP网络。通过IP网络将计算计算节点和存储设备连接起来,计算节点通过发送Block I/O的请求到存储设备,最常见的就是用ISCSI技术,计算节点通过SCSI协议发出读取数据的请求,并用TCP/IP包封装SCSI包,就可以再TCP/IP网络中进行传输,即SCSI over TCP/IP。
测试环境也可以用普通服务器模拟ISCSI存储。
3)FC存储
FC(Fibre Channel 光纤通道)SAN类似于IP SAN,只是以光纤作为传输介质,性能较高,目前使用最广。计算节点上安装光纤接口的HBA(Host BusAdapter,提供服务器内部的I/O通道与存储系统的I/O通道之间的物理连接)卡,为了冗余HBA卡一般有两块,分别接两台光纤交换机,存储一般有两个控制器,也分别接两台光纤交换机,达到全容易的目标。FC SAN计算节点直接将I/O请求通过FC网络发送到存储设备,性能非常高。
4)生产环境如何选择存储类型
在实际部署的生产环境中,选择存储类型,取决于以下几个因素:
q 业务性能及可靠性需求
q 预算
q 运维对技术熟悉程度
一般来说,对性能要求非常高的业务,使用FC SAN存储,FC SAN存储也是成本最高的一种方案。如果业务性能需要稍低,可以使用NAS、IP SAN的存储,NAS、IP SAN的存储是性价比比较高的方式。如果业务主要是CPU消耗型的,可以考验使用分布式文件系统,本书第9章介绍的DRBD、GlusterFS,第10章介绍的CEPH,工作都很稳定,但是性能相对比较低,很适合CPU消耗型的虚拟机。
关于NFS和ISCSI,业内一直有争论,NFS配置简单,但是因为是应用层的协议,有人认为性能低,其实商业存储做了许多优化,性能也不见得比ISCSI差。如何选择主要取决于预算、运维的技术习惯、具体的存储品牌型号,笔者生产环境喜欢使用ISCSI存储。
(内容节选自《深度实践KVM》)
作者:汪爱伟