“要么别人踩坑你过,要么你替别人踩坑!”
内容提纲:
- Why——为什么选择虚拟化技术?
- What——虚拟化实施及虚拟化技术?
- How——如何部署虚拟化项目?
公有云选择及运维Why——为什么选择虚拟化?
图:虚拟化能给企业带来什么
首先需要想想为什么要虚拟化,虚拟化到底能带给我们什么?归根结底,虚拟化能给企业带来两个好处:
***个好处,节省成本。三四年前,我们曾经做过一款游戏,当时有一款游戏用了500多台物理机,运营了两年就收支平衡了,换句话说就是不赚钱了,后来我们按照(1:7)的比例去做虚拟化,将500多台物理机压缩到70多台宿主机上面,成本大大节省,游戏又开始盈利了,又能生存下去了。这是通过虚拟化节省成本的一个案例。
第二个好处,快速部署。从宿主机层面看,虚拟机就是一个镜像文件,要想增加一台虚拟机,把这个镜像文件复制一份就可实现,这个过程通常就几分钟,最多十几分钟,还有一些技术,比如插电镜像技术,我们可以秒级地得到虚拟机。
图:定战略,说服老板和同事
确定使用虚拟化技术之后,就要面临如何说服我们的老板和同事去使用虚拟化技术的问题了。
如何说服老板:画饼、挖坑。
如何画饼?比如我们有两千台服务器,即使按照(1:2)的比例去做,服务器数量立马减半,这个效益非常明显,一般老板都会支持的。但是,别忘了给老板挖个小坑,因为你做虚拟化项目过程中难免会碰到问题,这时候就需要老板的支持。所以要先跟老板说好,一旦出现问题一定要老板挺一下。
如何说服同事:树立一个样板。
怎么样应对同事的质疑?就是树立一个样板,用事实说话。这就跟打仗一样,比如说你的***仗能打胜,后面的工作会容易开展好多,所以应对同事的质疑***的方法就是树立一个成功样板。
What——虚拟化实施及虚拟化技术
如何选择样本项目?
图:如何选择潜力股
首先,要选择一个潜力股。***在公司内部去找***以下四个特征的业务,作为***个虚拟化项目。
1.单进程,这是***潜力股。如果我们的业务是单进程的业务,就非常容易做虚拟化,因为现在的CPU都是多核的,单进程的业务非常容易通过虚拟化的技术进行整合。
2.利用率不高,比如常年CPU利用率都是10%、20%,基础业务也非常容易整合。
3.频繁变动的业务,拿游戏行业来说,手游页游这种业务最愿意做虚拟化,因为通过虚拟化部署特点,可以解决它的痛点。
4.非核心业务,一开始我们尽量不要做核心业务,因为核心业务万一出了问题,影响很大,万一出了问题,压力就比较大。其实,像那种压力特别高的业务就不适合做虚拟化。
#p#
虚拟化项目实施周期
图:虚拟化项目实施周期
一般来说,按照以下这个流程去实施就能够保证比较稳定地将业务迁移到虚拟化环境。强调一点,做虚拟化的时候,尤其一开始一定要稳扎稳打,每一步都用数据说话,严格按照流程做。
- 先做业务的性能需求评估,就是收集业务的压力数据,提炼一个业务的压力模型。
- 根据压力模型设计一个虚拟化方案,虚拟化方案主要是虚拟化的比例如何选择、软硬件如何选型等。
- 搭建一个测试环境,首先进行系统方面的测试,然后进行业务方面的测试。业务方面的测试分为两层,业务逻辑测试和业务压力测试。
- 小规模部署,一般是找压力***的一组测两周到四周。
- 全面部署,如果小规模部署没有问题就找压力比较大的一组再去测两周到四周。
- 如果都没问题,就可以按部就班逐渐地将业务迁移到虚拟化环境,直接进入虚拟化运维。
了解实施中要解决的问题
图:实施中要解决的哪些问题
在实施过程中我们还要解决哪些问题?
1.稳定性。稳定性其实是一些技术方面的问题。
2.快速管理。稳定性解决好以后,我们可能会面临的是想快速地得到一台或者一批虚拟机,所以往往就需要一个管理平台。
3.与业务紧密结合。管理平台搞定之后,我们希望和其他的业务运维平台对接起来,我们希望虚拟机开起来的时候,我们的业务程序也能在里边,甚至一些业务配置也能跑起来。
4.要有一整套的监控、报警、应急响应预案。有问题早发现早解决。如果你迁移到虚拟化环境以后,将好多业务都放在宿主机上面,如果有一个宿主机故障,你的影响面要大很多。
软硬件选型
图:软硬件选型
软件方面,对于生产环境我们一般肯定要选择稳定版本。但是,在稳定版本的基础上,内存版本越高越好,为什么?这里有一个数据,数据时间比较长,同样配置情况下CentOS 6.1和 CentOS 5.6的CPU计算能力的对比,CentOS 6.1要比CentOS 5.6好9%,就是内核版本越高,它的CPU中断和上下文切换优化得越好,同时网络IO、磁盘IO也优化得越好。
硬件方面,尽量一开始配置要稍微好一点,因为配置得越强悍,你可以虚拟的虚拟机越多,你最终肯定节省成本;另外,内存也要稍微大一点,因为你的宿主机跑上一段时间以后,往往你会发现内存不够,到时候又要加内存。***,尽量选择主流品牌。
图:虚拟化引擎的对比
关于虚拟化引擎,目前常见的企业级的虚拟化引擎有四款:VMware、Hyper-V、Xen和KVM。
- VMware:最早是x86平台上的虚拟化引擎,1998年就有了,所以它成熟稳定,兼容性也非常好。但是Vmware是个闭源方案,而且收费非常高,所以一般可能互联网行业用得比较少一点。
- Hyper-V,微软的Hyper-V发展非常迅速,尤其近几年,但是Hyper-V也是个收费的闭源方案,所以一般纯Windows环境下可能用得比较多一点。
- Xen,最早开源的虚拟化引擎,2003年就开源了,但是Xen的架构比较复杂,代码就40多万行。
- KVM,比较新的虚拟化引擎,有后发优势,架构设计上比较简单,内核一个模块,只有2万行代码。我这里有个数据,2013年10月份openstack平台上关于虚拟化引擎的一个选择,这个其实是马上快两年的数据,当时KVM已经占到71% 的份额,现在基本上国内新一代的公有云基本上用的都是KVM。
#p#
图:CPU技术选择
关于CPU技术的选择:
1. CPU绑定,这是非常实用的技术,而且是一个非常神奇的技术,可以在线做;
2. 在线添加,如果说你前边压力模型分析比较好的情况下,基本上你不会用到在线添加;
3. host-passthrough,一般单机的情况下可以考虑这种技术。或者如果没有做迁移,但有一批机器的CPU品牌型号都一模一样的,也可以考虑这种配置;
4. Nested,就是个玩具,实验室里面PC上玩一玩。
图:内存技术选择
对于KSM,建议生产环境关闭,测试环境和桌面虚拟机推荐使用;对于内存气球,相当于在虚拟机里放了一个气球,你想让虚拟机释放内存,你就让气球膨胀,你想让虚拟机有更高的内存,可以让气球收缩;对于内存限制,在一定范围内使用内存,保证***内存使用量。
总体来说,建议在技术生产环境中,尽量不使用各种内存压缩限制技术。
图:网络技术选择
网络方面要解决两个问题:可管理性和性能。网络技术生产环境选择的建议如下:
- Virtio:一般推荐优先使用这个,因为它确实是一个性能非常好的解决方案;
- SRIOV网卡独占:如果网络压力非常高或者对发包率有要求可以考虑使用这种方案;如果说不是压力特别高的,用Virtio够了,因为这个方案不支持在线迁移,而且要手动配置;
- 网卡多队列:这在CentOS67刚推出来的时候测了一下,好像效果也不是太理想,因为这是个相对新的特性。
- Open vSwitch:如果在私有云的情况下一般是内部用,管理方面要求不是特别强烈的情况下可以不用;如果是公有云,现在一般都要用,因为公有云强调管理。
图:磁盘技术选择
关于磁盘技术生产环境选择:
- 存储方式,一般使用qcow2或者是IVM,因为这两种方式有个共同的特点是可以动态扩容;
- 缓存方式,一般是单机的情况下我们使用writethrough,但是如果是集群的话,在需要迁移的情况下必须使用none;
- 磁盘驱动,一般是驱动Virtio,它跟网卡的Virtio不一样,因为磁盘不管你在Windows还是Linux系统上,它的工作都非常稳定,从来没有碰到过问题;
- SSD,如果你预算充足的话,那肯定就是纯SSD,闭着眼睛就上了,但是如果你追求性价比,那可以考虑Flashcache这种方案。
How——如何部署虚拟化项目?
物理机转虚拟机,适用于物理机的利用率非常低、软件配置环境非常复杂的场景,主要有静态和动态方式来完成这样的转换。
- 静态方案,静态的方案很简单,物理机关机克隆,然后在虚拟机那边还原,类似ghost的过程。一般推荐使用P2V这样的工具,基本上把你做的过程完全自动化。
- 动态方案,在VMware以后用的都是动态方案。它有个软件装到物理机里面,物理机不关机,然后将物理机上面的文件拷到虚拟机里面,就可以跑起来。
宿主机监控
监控方面有几个注意点:硬件方面,我们就使用带外管理卡,因为现在的带外管理卡非常完善了;CPU方面,我们建议每个核都要监控起来,还要设报警;内存方面,Swap要监控起来;磁盘网络方面,在上线之前要做压力测试,要得到一个极限数据,然后根据极限数据设置一个罚值。
灾备实践经验
灾备有两种思路:1. 应用层灾备,基本上跟原来物理机上一样,你在物理机上怎么做灾备,在虚拟机上用同样的方法做灾备;2. 虚拟化灾备,做快照,做多份的镜像复制。
一般建议在应用层次做灾备,因为在应用层做灾备消耗的资源要少很多。注意的是,灾备要定期演练,一方面让大家熟悉过程,再来验证一下灾备这个机制到底是不是生效。
#p#
公有云选择
图:公有云的选择
关于共有云的选择,往往你选择公有云是因为市场因素,比如价格;第二个是口碑;第三个是网络质量,但是大家往往容易忽略,我建议如果选公有云,对这一块也要兼顾起来。
公有云能提供一些比如数据分析运维工具,包括我们去运维,工具丰富的平台会更受运维喜欢。现在,公有云厂商也开始提供一些物理机支持,一些高压力的业务可以考虑放到物理机上面。
公有云选择好以后,我们在公有云上面如何运维,按照前面提到的流程进行,可以保证在公有云上面跑得比较稳定,而且底层的技术不用担心了,所以一般中小企业可以考虑用公有云。
总结:
不论迁移前还是迁移完后,业务稳定是***位的,一定要选择成熟的技术和比较好的预案,同时也一定要对业务比较熟悉,这样你就知道如何根据压力搭配,而且还可以知道优先保障的级别。
***,所有的一切就是两个字——口碑,如果你的口碑做起来了,你在企业内部会越推越顺,甚至你不推都有人来找你做虚拟化。相反,如果你的口碑没做起来,你做的几个项目都砸了,那基本上就没人找你,你就做不下去了。
附:KVM学习资料,摘自《深度实践KVM》。
1 官方资料
1)RedHat官网资料,虚拟化相关章节
https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/
2) Libvirt官网官方文档
Libvirt是kvm虚拟化的管理工具,官方文档非常详细,链接如下:
http://www.libvirt.org/docs.html
3) guestfish官网官方文档
guestfish 是一套kvm虚拟化的镜像管理工具,可以对镜像进行非常方便的管理,链接地址如下:
http://libguestfs.org
2 参考阅读文档
(1) KVM 官网文档,链接为:
http://www.linux-kvm.org/page/Main_Page
(2) QEMU官网文档,链接为:
http://www.qemu.org
3 KVM相关软件的更新新特性发布页面
Libvirt更新页面链接:
http://www.libvirt.org/news.html
QEMU更新页面链接:
http://wiki.qemu.org/Download
Fedora新版本特性链接:
https://fedoraproject.org/wiki/Features4 两个非常不错的网站
(1)虚拟机技术
http://virtualizationreview.com/home.aspx
(2) IBM developerworks虚拟化专题
http://www.ibm.com/developerworks/cn/linux/theme/virtualization/index.html
5 虚拟化管理软件
PVE官网http://pve.proxmox.com
oVirt 官网http://www.ovirt.org 中国社区http://ovirt-china.org
http://cloudstack.apache.org
OpenStack官网 www.openstack.org 中国社区www.openstack.cn
Convirt 官网 www.convirture.com
Puppet虚拟化组件 https://github.com/carlasouza/puppet-virt