高照微课由高照发起。是IT行业工程师和程序员在线交流分享的一堂课。让我们用心感受技术领域不一样的干货。高科微课第三讲小李,金山西山居系统运维负责人,原盛大游戏研究员。15年工作经验,10年游戏行业运维经验,5年KVM虚拟化运维经验。成功实施化工项目的经验。维护了一个微信订阅号:《KVM虚拟化实战》,着有书籍《深度实践KVM》。以下为正文:大家好,这次我介绍一下我在长期虚拟化项目实践中的经验,主要介绍如何将现有业务迁移到虚拟化环境中。先简单介绍一下,我维护一个订阅号“KVM虚拟化实战”,大家一起交流、讨论、学习。将现有服务迁移到虚拟化环境。这是一个很大的挑战。它不仅需要我们熟悉虚拟化技术,还需要我们熟悉业务。将业务迁移到虚拟化环境实际上是一个项目实施的过程,考验我们的协调、沟通和项目控制能力。▼我分四部分介绍如何将业务迁移到虚拟化环境:1、虚拟化项目的实施方法及业务压力模型的建立:介绍虚拟化项目的实施经验和过程,介绍如何构建自己的业务压力模型,如何根据自己的业务压力模型来选择硬件和软件。2、虚拟化技术的选择与实践:介绍KVM虚拟化技术的实践经验。3、虚拟化项目的监控、告警、应急响应、灾难恢复方法。4.业务迁移公有云的方法:介绍公有云的选择和业务迁移公有云的方法。将业务迁移到公有云也是业务虚拟化的一种形式,但是我们不需要关心虚拟化技术。▼当我们决定做虚拟化的时候,虚拟化项目应该怎么开始?当我们的上级或我们自己准备将我们的业务迁移到虚拟化环境时,我们会面临很多问题,例如:具体从哪个业务入手;如何选择软件和硬件;如何确定技术方案;万一出了问题怎么办?如何保证虚拟化过程中的业务稳定性。那么,我们应该首先解决这个问题吗?这个时候我们应该静下心来想一想虚拟化到底能给我们的企业带来什么。从我的虚拟化实践来看,归根结底,虚拟化给企业带来的好处有两个:节约成本和快速部署。(1)节省成本很多时候,我们选择虚拟化是为了节省成本。举一个很典型的案例,我们曾经虚拟化过一个游戏。在虚拟化之前,这款游戏使用了500多台物理机。当时,它已经运营了两年多,已经实现收支平衡。换句话说,它没有盈利,马上就要面临被关闭的命运。这时候我们部署了虚拟化,按照一比七的比例把游戏迁移到虚拟化环境中。通过虚拟化技术,将500多台物理机压缩为70多台宿主机,大大节省了游戏成本,游戏又开始盈利。(2)快速部署虚拟机是宿主机级别的镜像文件。要获得另一台虚拟机,我们只需要复制镜像文件即可。通常需要几分钟,最多十分钟。但是,对于一台物理机来说,从上架、插上电源、拉网线、安装操作系统,最快也要一个多小时,从小时到时间相差一个数量级。分钟。通过虚拟化可以大大提高部署效率。想好虚拟化能给我们带来什么,接下来就是说服老板和同事协助我们进行虚拟化。在老板和同事的支持下,才能顺利推进虚拟化项目。#p#(1)说服老板的秘诀。说服老板有两个秘诀:“画饼”和“挖坑”。往往更容易说服老板,因为虚拟化能给企业带来实实在在的好处。比如一个企业目前有2000台服务器,即使按照一比二的比例进行虚拟化,也可以立即节省50%的服务器和50%的机柜。所以,我们其实并不是在画馅饼,这个馅饼是真实存在的,是可以吃的。但是在画蛋糕的时候,我们不得不挖一个“坑”,因为在业务迁移到虚拟化的时候,难免会遇到这样那样的问题。遇到问题,需要老板的支持。在虚拟化迁移之前,我们不得不认同老板的说法,虚拟化会给企业带来巨大的收益。在实施过程中,我们会制定各种计划,充分做好测试工作,但难免会遇到问题。遇到问题需要老板支持我们,支持我们。(2)说服同事支持的秘诀。往往很难说服同事支持,因为大部分同事都有一种心态,事多不如事少。如果业务在物理机上已经很稳定了,一般人肯定不想再折腾了。这时候说服同事的方法就是以身作则,用事实说话,让大家看到业务可以在虚拟化平台上稳定运行。如何选择您的第一个虚拟化项目。选择第一个虚拟化项目非常重要。就像打仗一样,首战必胜。这是一个战略问题。如果第一个虚拟化项目失败,后续工作将难以开展。万事开头难,那么第一个虚拟化项目如何选择呢?虚拟化项目怎么样?适合虚拟化的业务有哪些特点?(1)单进程但基于进程的业务非常适合虚拟化。现在的CPU都是多核的,单进程业务只用一个核。通过虚拟化,可以将多个单进程的业务很好的融合在一起,尤其是那些很难通过应用层进行流程优化的业务。(2)利用率很低。常年CPU使用率低于20%。这种业务也很容易通过虚拟化进行整合。将多个业务集成到一台宿主机中,可以提高整体利用率。(3)变更频繁的业务进行虚拟化的动力最强,因为虚拟化的快速部署确实可以解决他们的痛点。对于运维来说,他们可能没有节省成本的动力,但是他们很有动力的说可以快速轻松地实现。(4)非核心业务先虚拟化时,最好不要选择核心业务,否则会出问题,压力也很大。口碑建立后,核心业务要逐步虚拟化。对于第一个虚拟化项目,应该从自己公司内部找一家最符合上述条件的企业进行虚拟化,以提高虚拟化的成功率。另外,并不是所有的业务都适合做虚拟化,那么哪些业务不适合做虚拟化呢?压力特别大的业务不建议虚拟化。如果物理机上的CPU使用率已经是80%,就很难通过虚拟化来压缩。实施虚拟化项目应该遵循哪些流程,才能保证业务相对稳定地迁移到虚拟化环境?从我个人的长期实践来看,虚拟化最好是循序渐进,稳扎稳打。按照以下步骤,确保业务相对稳定地迁移到虚拟化环境。(1)业务绩效评估与压力模型建立项目启动时,首先要面对的是如何确定虚拟化比例,1虚拟化5还是1虚拟化7更合适,主机的配置如何确定机,这一切都需要依赖数据来决定,所以我们首先需要收集现有业务的压力数据,并根据压力数据分析业务的压力模型。后面会详细介绍业务压力模型的建立方法。有了压力模型,虚拟化比例和主机选择就很容易确定了。(2)测试环境虚拟化比例和宿主机确定后,进行测试。测试包括系统测试和业务测试。系统测试主要测试宿主机和虚拟机的压力瓶颈点。看看宿主机和虚拟机的最大负载点在哪里,以备日后使用。业务测试包括业务功能测试和性能测试。功能测试主要测试业务是否运行在虚拟机上。数据库能加载多少connections或者io,这个要根据各个业务的不同来测试,使用业务应用层的测试方式。通过测试,一方面可以测试稳定性,另一方面可以得到业务在虚拟机上的最大负载。有了这些数据,我们就可以知道虚拟机未来的用途了。(3)小规模部署测试环境测试没有问题,获取相关数据后,即可部署到生产环境中。首先要在生产环境小规模部署,测试2周到1个月。对于小规模部署,最好测试业务压力较小的虚拟机2周到1个月。没有问题后,找一个虚拟化业务压力最大的一组,测试2周到1个月。(4)综合部署小规模部署没有问题后,可以逐步进行虚拟化综合部署,逐步将业务迁移到虚拟化环境,直至进入最后的虚拟化运维。▼下面介绍业务压力模型的构建方法。下定决心要做虚拟化之后,接下来我们面临的问题就是如何确定虚拟化比例,以及如何选择宿主机的配置。这时候我们就需要根据自己的业务特点建立压力模型,根据压力模型确定虚拟化比例。主机和虚拟机配置。#p#那么如何建立压力模型呢?这就需要数据来说话,数据来源于长期的监测指标和高峰期的数据采集。一般我们会看至少60天的监控系统的数据,尽量收集每台服务器的压力数据。如果数字很大,我们可以提取压力相对较高的机器部分来细化压力模型。另外,在业务高峰期,可以考虑使用脚本来收集相对密集的数据。一般监控平台采集1-5分钟的数据,脚本可以5-30秒的间隔采集数据,提高我们的数据采集能力。脚本的准确性实际上是使用sar、iostat和vmstat等命令编写的。全部数据采集完成后,可以根据数据提取业务压力模型。有了压力模型,就很容易根据压力模型确定虚拟化的比例和宿主机的选择。▼分享一下虚拟化技术在生产环境中的一些经验。CPU技术在虚拟化中的要点:我最喜欢的是CPU技术是CPU绑定。CPU绑定是一个很神奇的技术。最神奇的是可以在线完成,并且在实战中多次解决了性能问题。CPUhost-passthrough技术。CPUhost-passthrough技术主要是将物理CPU的所有特性传递给虚拟CPU,CPU的性能提升根据不同的应用而不同。还有一个好处就是可以在虚拟机中看到和物理机一样品牌和型号的CPU。对于一些公共云,用户体验更好。但是,您还应该注意使用CPUhost-passthrough技术。该技术不支持在不同CPU型号的主机之间在线迁移虚拟机。内存技术在虚拟化中的要点:KSMsamememorypagemerging,即内存压缩技术,一般建议在虚拟化时关闭。为什么?一方面,KSM不断扫描内存,消耗CPU资源。另一方面,分配给虚拟机的内存,我们要??分配多少,可以使用多少,开启KSM是为了内存过度使用,如果真的过度使用,压力大的时候,会出现内存不足的情况在某些情况下,这种使用会严重影响大量的SWAP交互。网络主要解决两个问题,可管理性和性能。可管理性主要依赖OpenvSwitch这种纯软件交换机,ovs可以在协议层面与物理交换机通信。有针对性能的硬件和软件优化解决方案。硬件主要采用10G网卡和SRIOV,软件采用VIRTIO、网卡独享等技术。今天的时间关系就不详细介绍了。可以看我的博客:http://xiaoli110.blog.51cto.com/1724/1558984▼关于虚拟机时间漂移所有的虚拟机,比如KVM,包括VMWare、XEN、HyperV,都有问题,因为时钟虚拟机是模拟的,一般虚拟机的时间比物理机快。当然,由于虚拟化的普及,这个问题在最新的操作系统上得到了越来越好的优化。一般在生产环境中,建议所有虚拟机都配置精确的时钟和NTP,以保证走时准确。有些业务对时间精度要求非常高,虚拟机时间的配置要多加注意。▼关于磁盘推荐使用qcow2或者lvm作为通用的虚拟机磁盘镜像格式,因为这两种格式有一个共同的特点,就是可以动态扩容,快照,支持紧凑模式,非常方便使用和管理。#p#磁盘驱动程序VirtIO是标准配置。VirtIO是一个半虚拟化驱动,可以跳过用户空间的虚拟化层,大大提高通信效率。常见的磁盘缓存方式有四种:writeback、writethrough、none、unsafe。实际上,在虚拟化层和宿主机文件系统层面,缓存的各种组合是打不开的。现在CentOS系列默认为writeback模式。该模式启用主机文件系统的缓存,性能会更好。很多。我们在生产环境上是比较保守的。一般在单机虚拟化时,采用writethrough方式,数据安全是第一位的。在需要迁移虚拟机的集群虚拟化中,使用none方法。因为需要迁移虚拟机,所以必须使用none模式。▼下面介绍虚拟化的存储方式:单机虚拟化单机虚拟化的形式是一台宿主机虚拟出若干虚拟机,虚拟机的计算、存储、网络都在这台宿主机上,这是一种非常灵活的虚拟化方式,不对原有环境做任何改动。机房里放一台主机,开始虚拟化。虚拟化集群是一种由商业存储和若干计算节点组成的虚拟化方法。虚拟机镜像在商业存储上,虚拟机使用计算节点的计算、内存和网络资源。通过共享存储,您可以在线迁移虚拟机,配置虚拟机使其可用,配置计算资源的动态平衡。关于商业存储选项。目前普通存储分为文件存储和块存储,快速存储分为ISCSI和FC。不管是什么类型的存储,一般建议生产环境双控,一般支持双控存储,从软件到硬件双冗余,无单点故障。另外,NFS和ISCSI一直争论不休。这取决于您更熟悉和更喜欢哪种技术。FC的存储成本比较高,但是性能也是最好的。个人比较喜欢ISCSI存储,性价比高,性能基本可以满足自己的要求。一般来说,存储的选择需要考虑以下三点:业务性能要求和预算自己对技术的熟悉程度分布式文件系统:这种方式其实是集群虚拟化的一种变体,就是用普通的pcserver代替商业存储。这种方式的好处是可以扩展到非常大的规模,可以动态扩展。一般公有云都有这样的架构。#p#三种存储方式在虚拟化中的应用场景:单机虚拟化;压力比较大,虚拟机比例比较低的游戏;虚拟机相对较少的机房。集群虚拟化压力中低,虚拟化比例大于1:7;虚拟机数量多,强调快速部署和高可用服务。分布式文件系统虚拟化;整体磁盘IO低于1000iops;与商业集群存储结合使用。此外,越来越多的SSD被用于虚拟化存储,SSD与软件相结合的软件定义存储方式也越来越流行。以后有时间我会介绍一些相关的案例给大家。▼虚拟机资源限制一般在生产环境。限制虚拟机的资源是很有必要的,因为我们不希望一个虚拟机消耗过多的资源,导致其他虚拟机饿死。虚拟机的资源限制主要是通过CGroup来完成的,CGroup可以配置很多选项,非常灵活,但是配置稍微复杂一些。Libvirt在CGroup上有一层。通过修改虚拟机的xml文件,可以完成虚拟机的资源限制。通过libvirt限制虚拟机的详细介绍可以参考我的博客文档,比较详细:http://xiaoli110.blog.51cto.com/1724/1070201监控、告警、灾难的要点有哪些虚拟化运维中的恢复与应急?#p#▼监控告警硬件故障告警,我现在主要用带外管理卡告警,新一代服务器,带外管理卡监控很齐全,CPU,内存,磁盘,网卡,风扇,电源任何硬件故障都会报警,通过邮件,或者写脚本结合自己的监控平台,可以很好的解决硬件报警的问题。CPU方面,建议监控各个核心的CPU利用率。经常遇到CPU整体利用率不高,可能只有20-30%,但一两个核已经100%了。这个时候其实已经遇到了压力瓶颈,但是通过整体的CPU利用率是发现不了的。内存方面,建议监控swap的使用情况。至于虚拟化,主机一般不希望使用swap分区,所以要监控swap的使用情况,方便出现问题时排除故障。如果swap使用量很大,应该设置alarm,如果alarm肯定是性能问题。在磁盘和网络方面,虚拟磁盘和网络是两个难点。一般在上线前对其进行性能压力测试,获取限额数据,然后根据限额数据设置告警阈值。▼灾备与应急虚拟化灾备有两种思路,应用层灾备和虚拟化层灾备。一般建议在应用层做好灾备准备。虚拟化层的容灾方式是多镜像副本和快照,往往会消耗大量资源。多副本复杂是以牺牲数倍磁盘空间为代价的,而快照是以牺牲性能为代价的。往往是应用层改动很少,虚拟化层是感知不到的。它只是一个完整的备份或快照。而应用层的容灾就简单多了。只备份变化的部分,资源消耗少,速度快。一般我们在生产环境中的做法是备份虚拟机的xml文件。当出现故障时,提供一个相同配置的虚拟机。如果需要,mac地址也一致,再交给业务方恢复。备灾也要注意,定期演练非常重要。一方面是为了验证自己的灾备情况,另一方面也是让参与者熟悉灾备流程,以便在出现问题时能够快速恢复业务。▼在软硬件选择软件方面,当然是稳定版,但是在稳定版的基础上,内核版本越高越好,为什么呢?因为内核版本越高,CPU的上下文切换和中断优化就越好。有利于提高主机的转换率。Windows系统也是如此。建议尽量使用较新版本的Windows虚拟机。硬件越强大越好。内存越大越好。硬件越强大,可以虚拟出的虚拟机就越多。从长远综合来看,肯定会节省成本。另外,主机在使用一段时间后,往往会发现内存是瓶颈点,所以一开始尽量配置更高的内存配置,避免后续出现内存瓶颈。▼下面分享最后一项,分享一些选择公有云的经验:用户选择公有云的主要因素有以下几点:1.市场主要是价格,一些公司与某些公有云有合作.或者老板规定必须使用某个公有云。2、云主机的稳定性选择公有云。对于用户来说,最终还是会用到云主机。因此,云主机的稳定性也是一个重要因素。不允许云主机每三天死机、重启甚至丢失数据。一般稳定的公有云都可以。3.网络覆盖和网络质量云上的所有服务都以网络为基础,网络质量是一个关键因素。网络质量包括多个因素:覆盖,覆盖越广越好。Delay,packetloss,andjitter,即延迟和丢包满足要求,网络抖动不能很频繁。这个因素往往很容易被忽视。4、支持大数据分析、RDS、运维工具如果公有云能够提供API,提供一套方便业务部署和监控的工具,对用户也有吸引力,尤其是运维。5、如果能提供物理机云主机的混合云,就是一个杀手级的解决方案。业务压力很大,需要物理机的支持。现在我们可以看到很多公有云已经开始支持物理机的租赁。业务上云其实和虚拟化的过程是一样的。按照上面描述的流程可以保证比较稳定的完成,我们不需要关心具体的虚拟化技术。▼最后总结一下我今天分享的内容:企业内部要实现虚拟化,最重要的是口碑。如果一个接一个的项目顺利实施,就会越来越顺利。反之,连续一两个项目失败,虚拟化转型就无法再进行。我的分享到此结束,欢迎提问,谢谢!接下来是QA环节:1.企业有大量的dell服务器,业务也比较复杂。您推荐哪种集成虚拟化解决方案或私有云解决方案?答:这个问题很好。如果是老机器,不建议作为宿主机使用。具体的虚拟化方案是一个非常复杂的问题,需要根据业务、预算和应用来选择。2.一个关于vpc网络的问题。当私有云有多个网段无法聚合时,vpn网络往往不稳定,尤其是网络物理链路中断后,vpn链路无法自动恢复。估计可能出现的问题是什么?答:如果基于公网不能保证稳定性,可以考虑使用专线。推荐大家关注:更多内容等你来CTO训练营微信号:gaozhao51ct(长按二维码关注我们互动)
