澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

虚拟化技术,大型网站技术学习

2019-07-13 作者:服务器运维   |   浏览(91)

顺丰全栈资源下的自动化运维灵魂,丰全

大型网站技术之**虚拟化**

牛人就不要看了~    

什么是虚拟化

虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

1.1 什么是Docker?

作者简介:

陈天宇
顺丰科技系统技术管理部负责人,07年参加工作,先后任职于中国电信、平安科技、顺丰科技,专注运维领域10年,从公务员到运维工程师,再到高级小步兵,一路坚守用技术解决问题的理念。目前任职于顺丰科技,负责操作系统相关的技术管理工作。

牛人就不要看了~

1.1        引言

先举个例子,一台物理主机有16G内存,用户A的程序只需要2G内存,用户B的程序只需要4G内存,如果没有用虚拟化技术,他们的解决方案如下:

  1. 两用户程序放到同一台物理机器上,各自配置运行环境。资源都能满足了。问题是,程序的运行环境一个是Linux,一个是windows呢?如何防止用户A的程序不会窃取用户B数据呢?
  2. 再买一台2G的物理主机,这样就解决了上面两个问题,呵呵。问题是,好浪费啊!如果再有个需要1G内存的用户来了,就买个1G的物理主机?如果老板有的是钱,没问题~

有个更加省钱的方法:采用虚拟化的技术,在那台物理主机上生成两个操作系统出来,一个4G内存,一个2G内存,操作系统的类型任选,虚拟化能够提供资源隔离的功能。这样就完美解决了上述的问题。对普通人来讲,可能VMware虚拟计算机是最了解的吧。

几种虚拟化软件介绍

  • RedHat KVM

虚拟化方式:完全虚拟化

架构:寄居架构(linux内核);祼金属架构RHEV-H

特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。

I/O协议栈:KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。

架构图:

澳门新萄京官方网站 1

  • VmWare ESX

虚拟化方式:完全虚拟化

架构:裸金属架构

I/O协议栈:VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会导致开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。

架构图:

澳门新萄京官方网站 2

  • Citrix XenServer

虚拟化方式:半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化

架构:裸金属架构

I/O协议栈:Xen选择了可维护这条道路,它将所有的I/O操作放到了Linux guest里面,也就是所谓的domain-0里面。重用Linux来做I/O, Xen的维护者就不用重写整个I/O协议栈了。但不幸的是,这样就牺牲了性能:每一个中断都必需经过Xen的调度,才能切换到domain 0, 并且所有的东西都不得不经过一个附加层的映射。

架构图:

澳门新萄京官方网站 3澳门新萄京官方网站 4

  • Microsoft Hyper-V

虚拟化方式:半虚拟化

架构:裸金属架构Hyper-V Server;寄居架构 Windows 2008

特点:父分区(宿主机操作系统)的位置挪到了子分区(虚拟机操作系统)的旁边,宿主机操作系统和虚拟机操作系统是平级的,没有谁依附谁之上的关系。

I/O协议栈:虚拟机看到的所有设备不再都是虚拟出来的,有部分的硬件资源是真实的物理设备。

架构图:

澳门新萄京官方网站 5

Docker开源项目

Docker是基于Go语言实现的云开源项目,诞生于2013年。Docker项目目前已加入Linux基金会,遵循Apache2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,即通过对应用组件的封装(Packaging),分发(Distribution),部署(Deployment),运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。

前言:

首先,我们先发散一下思维,后收敛。天下武功为快不破,互联网时代,让大家可以充分的分享信息,运维大会这类平台再早5年的话,在中国做运维不会这么苦也不会那么累。

本文、我分享的主题是全栈资源下做自动化。做运维到现在,参加过7*24小时值班,抗过机器,敲过代码,也玩过数据库,这个课题也是在帮我回顾总结这些年的运维经历苦难后留下的一些思考与总结。

我觉得我没有遇到运维的好日子,我真正从推板车模式里走出来,才发现原来大家都是这么玩的,大家都在玩自动化,都是以这个方法论、方向在玩,都在向 AIdevops 前进。

好的东西大家都会认同,长的帅的,基本帅的差不多。大家都知道美好的运维长什么样,但达到这个目标的路线是大家最关心的,我们也正在这条路上。

工程师与科学家的不同在于,工程师专注于这件事情怎么做,像步兵一样,一步一个台阶往前进,我接触的大多是运维“工程师”,戏称高级小步兵。我喜欢这样去呼呼我们的同事、包括我自己。下面把思维收敛到具体的内容,看看我们在顺丰的步兵前行记。

1.引言

1.2   虚拟化是什么?

 

虚拟化是云计算技术的基础。

百度百科上说:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

 

维基百科上说:In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, operating systems, storage devices, and computer network resources.

因为虚拟化本质不是对硬件的改变,而是用软件的方法抽象,虚拟出的IT资源与底层硬件相隔离,所以虚拟化技术能够实现IT资源的自动化分配、调度、共享、迁移、监控。这种特性对于大型网站运维来说非常有用,谁不想啥事都是自动化的?人总是比较容易马虎出错。另外,有些业务是IO密集型,有些业务是计算密集型,需求各有不同,虚拟化可以让IT资源按需分配。虚拟IT资源与硬件无关,所以当需要更多的资源的时候,只需要增加一些物理计算机即可,小型机与普通机器可以混合使用。

服务器虚拟化主要有以下四方面的功能:

  澳门新萄京官方网站 6

什么是硬件虚拟化


虚拟化:从简单入手**

虚拟化是一个广义的术语,是一个为了简化管理,优化资源的解决方案。如同现在空旷、通透的写字楼,整个 楼层几乎看不到墙壁,用户可以用同样的成本构建出更加自主适用的办公空间,进而节省成本,发挥空间最大利用率。这种把有限的固定的资源根据不同需求进行重 新规划以达到最大利用率的思路,在IT领域就叫做虚拟化技术。

  • 硬件虚拟化:虚拟化技术的革命

CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有经特别优化过的指令集来控制虚拟过程,通过这些指令集,虚拟机可以很容易提高性能,相比纯软件的虚拟化技术会在很大程度上提高性能。

  • 纯软件的虚拟化技术

在纯软件虚拟化解决方案中,虚拟机中的操作系统其实是真是操作系统下的一个应用程序,因此,虚拟操作系统上的应用程序到实际操作系统就要比通常应用程序多经过一个通信层。

Linux容器技术

Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。IBM DeveloperWorks上给出了关于容器技术的准确描述:
容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心cpu本地运行命令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualizationd)和系统调用替换中的复杂性。

一、服务器资源KPI时代

我们回归正题。讲自动化之前,我先讲讲我们所处的资源环境及规则。先讲一下服务器KPI。借用三个经典哲学的问题来思考为什么服务器资源的KPI不能忽视。

我是谁?我们是哪个行业?我们做运维,我们是IT行业;我们在这个行业当中,我们为什么站在这个风口浪尖上,为什么大家这么关注运维?

我前端时间看到有个朋友圈分享的信息:“老板说,你觉得你的公司需要运维吗?运维经理回答说,过独木桥的时候,老板你觉得需要栏杆吗?独木桥上没有栏杆你也可以走过去,但是有栏杆你走的更放心,运维就是一家公司的护航、类似医生。你造一个航母要有人维护这个航母。”

在这巨大的包含了思想、技术、智慧的灵魂流入IT行业的时候,同样需要强大的肉身来装载,肉身在这里我狭义的定义为基础硬件,广义的大家可以理解为运维。服务器资源作为基础架构三大组件资源之首,逃脱不了被KPI规则化。

先举个例子,一台物理主机有16G内存,用户A的程序只需要2G内存,用户B的程序只需要4G内存,如果没有用虚拟化技术,他们的解决方案如下:

1.3     虚拟化的好处


澳门新萄京官方网站 7

效率:将原本一台服务器的资源分配给了数台虚拟化的服务器,有效的利用了闲置资源,确保企业应用程序发挥出最高的可用性和性能。

隔离:虽然虚拟机可以共享一台计算机的物理资源,但它们彼此之间仍然是完全隔离的,就像它们是不同的物理计算机一样。因此,在可用性和安全性方面,虚拟环境中运行的应用程序之所以远优于在传统的非虚拟化系统中运行的应用程序,隔离就是一个重要的原因。

可靠:虚拟服务器是独立于硬件进行工作的,通过改进灾难恢复解决方案提高了业务连续性,当一台服务器出现故障时可在最短时间内恢复且不影响整个集群的运作,在整个数据中心实现高可用性。

成本:降低了部署成本,只需要更少的服务器就可以实现需要更多服务器才能做到的事情,也间接降低了安全等其他方面的成本。

兼容:所有的虚拟服务器都与正常的x86系统相兼容,他改进了桌面管理的方式,可部署多套不同的系统,将因兼容性造成问题的可能性降至最低。

便于管理:,提高了服务器/管理员比率,一个管理员可以轻松的管理比以前更多的服务器而不会造成更大的负担。

通过实现 IT 基础架构的虚拟化,可以降低 IT 成本,同时提高现有资产的效率、利用率和灵活性。在全世界,各种规模的公司都享受着服务器的虚拟化带来的好处。数千家组织都在采用服务器虚拟化解决方案。

虚拟化技术分类


平台虚拟化(Platform Virtualization)**

针对计算机和操作系统的虚拟化。


资源虚拟化(Resource Virtualization)  
**

针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。


应用程序虚拟化(Application Virtualization)  
**

包括仿真、模拟、解释技术等。

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称 为 Virtual Machine Monitor 或 Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的 计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统 (Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMWARE 的 ESX 产品)。运行虚拟机的真实系统我们称之为 主机系统。

从Linux容器到Docker

在LXC的基础上,Docker进一步优化了容器的使用体验。Docker提供了各种容器管理工具(如分发,版本,移植等)让用户无需关注底层的操作,可以简单明了的管理和使用容器。用户操作Docker容器就像操作一个轻量级的虚拟机那样简单。

我们也可以简单的将Docker容器理解为一种沙盒(Sandbox)。每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分迅速,容器对自身资源的需求也十分有限,远远低于虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。

1.1、服务器资源KPI时代-我是谁

顺丰服务器的增长迅猛增长,2013年服务器数量到2017年翻了20倍。服务器增长快到什么地步,2013顺丰机房的兄弟人手不够,做系统、虚拟化、windows的同事全部前线支援上架。

IT部门目前是纳入成本中心,服务器的每笔采购必须是把背景、技术框架、物理部署架构、上线计划、容量评估依据等讲的清清楚楚,这就需要完整的容量管理体系,在这个体系里哪些点才是key呢?在这快速增长过程中,我们的人员实际上是没有翻倍增长的,这些就是运维技术发展带来的红利。

我常与我们同事分享一个理念:我们追求运维新技术,刷新自己的技能不是为了追赶潮流,而是学习多一种新手段,在解决问题的时候会多一种选择。在这种引导下,现在我们再去给老板汇报预算的时候,都有数据支撑,我们把所有的从底层自服务器安装到OS标准化,到虚拟化模板,到应用、数据库的配置,及容量性能监控采集数据全部入库,并可展示。

还有下面一张图,是摩尔定律的,每26个月晶体管数量翻一番,现在来看摩尔定律遇到最大的问题就是如何解决散热,如果芯片设计不出现根本性变革,摩尔定律可能被打破。

说到这里,大家认为服务器KPI需要设定吗,怎么设定?是看使用率、看故障率、看采购价格、根据应用场景看使用率区间?如果使用率设置为KPI,那就是为performance tune埋坑,数据库、应用优化做的越好,使用率反而更低,不合适。

好的KPI应该是服务器资源交付快,快到小时级别;硬件故障率低,低到整机千分之5以下;使用率在考虑HA及最优配置及业务高峰后,越接近服务性能极限越好。后面我们来说这些我们的行动路线。

  1. 两用户程序放到同一台物理机器上,各自配置运行环境。资源都能满足了。问题是,程序的运行环境一个是Linux,一个是windows呢?如何防止用户A的程序不会窃取用户B数据呢?

1.4   虚拟化程度分类

网上盗个图

澳门新萄京官方网站 8

虚拟化的未来

可以想象一下,未来的虚拟化发展将会是多元化的,包括服务器、存储、网络等更多的元素,用户将无法分辨哪些是虚,哪些是实。虚拟化将改变现在的传统IT架 构,而且将互联网中的所有资源全部连在一起,形成一个大的计算中心,而我们却不用关心所有这一切,而只需关心提供给自己的服务是否正常。虽然虚拟化技术前 景看好,但是,这一过程还有很长的路要走,因为还没有哪种技术是不存在潜在缺陷甚至陷阱的。但是相信,虚拟化技术将会成为未来的主要发展方向。

1.2 为什么要使用Docker

1.2、服务器资源KPI时代-我从哪里来

我们从哪里来?这里要回到服务器资源投入到哪个业务上,带来的预估价值上来。之所以是预估价值,是因为这些涉及太多边际成本,我们只能狭义的去预估这个业务的价值,同样从业务到IT投入的价值评估模型建立我们也在进行中。

X86服务器不像小型机那样“高贵”,硬件的供应多选择,所以在选择的能力上我们要有,怎么做:建立硬件性能指标体系,看右侧的图就是我们底层用的工具。

明知芯片速度的提升已经达到难以为继的境界,但是人类对速度的追求却并没有丝毫停歇的意思。那怎样在不烧毁计算机的情况下满足人类漫无止凌的贪婪呢?

质量上不行,数量上补:多核结构出现。这当中,美国的一个研究室得到一个结论,并不是买机器的时候核数越高越好,服务器的核数对于OLTP型的应用性能提升最高是在八核的配置下;这些就让我们知道在选型的时候不会盲目追求核数越多越好,也知道应用迁移的时候,核数的增多带来的应用性能提升不一定对等。

  1. 再买一台2G的物理主机,这样就解决了上面两个问题,呵呵。问题是,好浪费啊!如果再有个需要1G内存的用户来了,就买个1G的物理主机?如果老板有的是钱,没问题~

1.4.1        全虚拟化(Full Virtulization)

简介:全虚拟化中,VMM以纯软件的形式翻译执行虚拟机执行的指令,该过程不需要Guest OS感知,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有VirtualBox,KVM,VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere),Xen(也支持全虚拟化)。

优点:Guest OS无需修改,速度和功能都非常不错,使用非常简单。

缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。

Docker容器虚拟化的好处

Docker项目的发起人和Docker.Inc.的CTO Solomon Hykes认为,Docker在正确的地点,正确的时间顺应了正确的趋势---即高效地构建应用。现在开发者需要能方便的创建运行在云平台上的应用,也即是说应用必须能够脱离底层机器,而且同时必须是“任何时间任何地点”可获取的。因此,开发者们需要一种创建分布式应用程序的方式,这也是Docker所能够提供的。

举个简单的应用场景的例子。假设用户试图基于最常见的LA(N)MP组合来运维一个网站。按照传统的做法,首先,需要安装nginx,mysql,php以及它们各自的运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户,配置参数等);经过大量的操作后,还需要进行功能测试,看是否正常工作;如果不正常,则意味着更多的时间代价可不可控的风险。可以想象,如果再加上更多的应用,事情会变得更加难以处理。

更为可怕的是,一旦需要服务器迁移(如从阿里云迁移到腾讯云),往往需要重新部署和调试。这些繁重而琐碎无趣的“体力活”,极大的降低了工作效率。

而Docker提供了一种更为聪明的方式,通过容器来打包应用,意味着迁移只需要再新的服务器上启动需要的容器就可以了。这无疑将节约大量的宝贵的时间,并降低部署过程出现的风险。

1.3、服务器资源KPI时代-将要去哪里

我有个朋友在一家上市的电子公司工作,他们有全国有6个工厂。IT系统基本靠5台小型机承载;然后他问我,能不能也搞自动化?我说,你们用的小型机也挺稳定,而且运维共计就三个人,自动化没有必要做,但可以学习其中有用的理念:精益运维、主动预防。

做运维自动化,很多同事会问你的目标是什么,投了多少人,产出的如何,实用性如何?资源这块,我没办法解决,但目标我们不能变,不能因为资源影响我们运维人对美好运维生活的向往。

只有目标不变,我们才会自发的向这个方向走,当大家尝到好处,接受的人会越多,公司也就越支持,自然得到的资源就会越多。

首先强调是说,运维开发,为什么不是开发,它是运维出身的,你代码的逻辑都是用运维的思维沉淀下来写的;

我以前以为外面的和尚会念经,我招了一个,然后我让他写个自动化绑IP的API功能,就是VIP的;后来他2、3个小时写出来了,我看了一下,几条命令搞定了;我开玩笑说,你疯了,你入参这个不判断一下,别人输入字符串呢?掩码不判断下,别人输入的不同网段呢,不限定数字,别人输入260呢?

所以就是说,做开发的,他会写代码有这个开发能力,但是没有这个逻辑,根本写不出来你想要的东西。

这里有个能力三条边模型,类似字母“Z”,最下面的这条边我们可以叫做我们掌握的运维的逻辑规则基线,类似CAP理论、高可用、灾难应对、容量管理逻辑、应用日志输入规范、安全基线要求等等;最上面的边,我们可以叫做我们要做的事情或者目标;中间的斜线就是我们要达到目标的路径或者说的步骤,你会发现能力基线与目标与接近,斜率越小,也约容易。

招一个没有运维经验的研发,就好比基线在地底,你要完成运维开发的目标,斜率接近90度,挺难的。

我开始带团队只有2个人,现在有18个人,我当时因为去内部新生ITclass分享工作心得,赢得两位新大学生的青睐,2个研究生分组自愿到了我们团队

来了之后,我说你给我把所有的工单做一下,而且不用太分边界网络、数据库,这都要理解其中的原理;我会给他们强调:岗位有边界,但是技术是没有边界的(其实是引用的一位科学家的爱国之言,科学没有国度,但是科学家有祖国。)之前大家都是写sh,后面我提要求,所以自动化编码默认都使用python,这种自觉的推动下,大家的这种基本编码能力建立起来了。

为什么在爱因斯坦那个年代那么容易出伟大的物理学家;挺老一辈讲那时的大学老师去讲课的时候,都会很谦虚的说,今天讲相对论,我还太不懂,大家一起互相交流,相对论提出来的时候全世界懂的只有2.5个人;因为当时做物理研究的人很少。

现在做运维的很多的知识充分的交流,充分的去学习之后,大家已经知道了做的好的是什么样,已经知道了蓝图,如何去实现变的有迹可循。走这条路,没钱没资源,你有那么多坑要填,还是负责运维,要交付资源,交付网络,交付各种工单,真做这个事情需要领导认同;给予编制、给予支持、给予容错、给予严厉的价值要求。我很幸运遇到了一个这样的老板,他是这条路线的支持者,给予了我们很大的帮助。

有个更加省钱的方法:采用虚拟化的技术,在那台物理主机上生成两个操作系统出来,一个4G内存,一个2G内存,操作系统的类型任选,虚拟化能够提供资源隔离的功能。这样就完美解决了上述的问题。对普通人来讲,可能VMware虚拟计算机是最了解的吧。

1.4.2        半虚拟化或者叫准虚拟化(Para-virtualization)

它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hypervisor来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。

这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual MachineMonitor,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了VT和Pacifica虚拟技术,将虚拟指令加入到了 CPU中。使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU指令集进行相应的转换操作。

优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。

缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。

在完全虚拟化模式中,hypervisor必须模拟设备硬件,它是在会话的最低级别进行模拟的(例如:网络驱动程序,磁盘,显卡等等).尽管在该抽象中模拟很干净,但它同时也是最低效,最复杂的.在半虚拟化中,来宾操作系统和hypervisor能够共同合作,让模拟更加高效.缺点是操作系统知道它被虚拟化,并且需要修改才能工作.

Docker在开发和运维中的优势

对开发和运维(DevOps)人员来说,可能最梦寐以求的就是一次性的创建或配置,可以在任意环境,任意时间让应用正常的运行。而Docker恰恰是可以实现这一终极目标的瑞士军刀。

1.更快速的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用相同环境来部署代码。Docker可以快速创建可删除容器,实现快速迭代,大量节约开发,测试,部署的时间。并且,各个步骤都有明确的配置和操作,整个过程全程可见,使团队更容易理解应用的创建和工作过程。
2.更高效的资源利用。Docker容器运行不需要额外的虚拟化管理程序(Virtual Machine,VMM,以及Hypervisor)支持。它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。
3.更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机,虚拟机,公有云,私有云,个人电脑,服务器等。这种兼容性让用户可以在不同平台之间轻松地迁移应用。
澳门新萄京官方网站,4.更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式进行分发和更新,从而实现自动化并且高效的容器管理。

二、操作系统的母体效应

讲到硬件,我们不得不谈谈操作系统。

  1. 虚拟化是什么?

1.4.3        硬件辅助虚拟化(Hardware Assisted Virtualization)

Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化(具体将在下文详述)来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。

优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。

Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著的优势。
1.Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快的多。
2.Docker容器对系统资源需求很少,一台主机上可以同时运行上千个Docker容器。
3.Docker通过类似Git的操作来方便用户获取,分发,和更新应用镜像,指令简单,学习成本低。
4.Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。

Docker除了运行其中的应用之外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统的开销。传统虚拟机方式运行N个不同的应用(操作系统级别,如windows环境,centos环境,kali环境)就要启动N个虚拟机(每个虚拟机需要单独的分配独占内存,磁盘,CPU等资源),而Docker只需要启动N个隔离的容器,并将应用放到容器内即可。

当然,在隔离性放面,传统的虚拟机方式多了一层额外的隔离。但这并不意味着Docker就不安全。Docker利用linux系统上的多种防护机制实现了严格可靠的隔离。从1.3版本开始,Docker引入了安全选项和镜像签名机制,极大地提高了使用Docker的安全性。

下表总结了使用Docker容器技术与传统虚拟机技术的特性比较。

澳门新萄京官方网站 9

Docker01.png

2.1、操作系统母体效应-认识篇

大家目前公司用的操作系统都是什么版本,版本的选择依据是什么,有没有现在生产上用centos7.4的?大家为什么更新操作系统,是被迫,还是有这种比较先进的观念?我觉得我技术很好,就要玩新的东西,这背后的内驱动是什么?为什么你更新你的系统版本。

实际上这个问题,是硬件的迭代带来的一些操作系统版本的变革。操作系统的原理,一致没有怎么变,值得大家花些时间去理解一下。

操作系统本身是一个系统,可以通过这个系统了解到很多的技术原理及软件开发的逻辑,可以从底层了解一下,什么叫做很牛的软件,他的好坏的评判标准是什么,大家可以看看右下方的公式,大学里计算机专业的都会学这个。

虚拟化是云计算技术的基础。

1.4.4        操作系统级虚拟化(Operating System Level Virtualization)

这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS,以SWsoft的Virtuozzo/OpenVZ和Sun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VE,VirtualEnvironment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。如下图所示:

 

澳门新萄京官方网站 10

 

在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。

优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。

缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。

1.3 虚拟化与Docker

虚拟化技术是一个通用的概念,在不同的领域有不同的理解。在计算领域,一般指的是计算虚拟化(Computing Virtualization),或通常说的服务器虚拟化。维基百科上定义如下:
在计算机技术中,虚拟化(Vritualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器,网络,内存及存储等,予以抽象,转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。

可见,虚拟化的核心是对资源进行抽象,目标往往是为了在同一个主机上运行多个系统或应用,从而提高系统资源的利用率,同事带来降低成本,方便管理和容错容灾等好处。

从大类上分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。其中,真正意义上的基于硬件的虚拟化技术不多见,少数如网卡中的单根多IO虚拟化(Single Root I/O Virtualization and Sharing Specification,SR-IOV)等技术,此处不讨论,暂做了解。

基于软件的虚拟化从对象所在层次,又可以分为应用虚拟化和平台虚拟化(通常说的虚拟技术即属于这个范畴)。其中,前者一般指的是一些模拟设备或Wine这样的软件。后者又可以分为如下几个子类:
完全虚拟化。虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无需进行修改。如:VMware Workstation,Virtual Box,QEMU等。
硬件辅助虚拟化。利用硬件(主要是CPU)辅助支持(目前X86体系结构上可用的硬件虚拟化技术报错Intel-VT和AMD-V)处理敏感指令来实现完全虚拟化的功能。客户操作系统无需修改,例如:KVM,Xen,VMware Workstation。
部分虚拟化。只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在 有些虚拟化技术的早期版本仅支持部分虚拟化。
超虚拟化(Paravirtualization)。部分硬件接口以软件的形式提供给客户机操作系统,客户操作系统需要进行修改,例如早期的Xen。
操作系统级虚拟化。内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术即在这个范畴。

澳门新萄京官方网站 11

Virtualization.png

可见,Docker以及其他容器技术都属于操作系统的虚拟化这个范畴。
Docker虚拟化方式之所以拥有众多优势,这跟操作系统的虚拟化自身的特点是分不开的。下图比较了Docker和常见的虚拟机方式的不同之处。

传统方式是在硬件层面实现虚拟化,需要额外的虚拟机管理应用(以后学习KVM虚拟化的时候有用到)和虚拟机操作系统层。

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加轻量级。

2.2、操作系统的母体效应-生态篇

同时操作系统衍生出许多辅助工具,例如DNS、NTP、SAR、OSW、YUM、rsync、SSH、pacemaker、ipmi、megecli等等,来共建了自己的生态,操作系统很重要,作为上层的业务运维来说,对于应用来说是透明的,重要的像空气一样,大家每天都呼吸

因为它重要的就像空气,但是你又不能忽视它,我不知道有没有人被安全基线要求做漏洞检测,要求打补丁包。

操作系统生态出问题,相当于空气被污染,当污染出现,大家都会有恐慌。所以我们就要把这些净化工作放到日常工作中,规则迭代中,让操作系统的生态健康不被污染。从硬件到操作系统,这一块每个焊接都是大家需要运维当中的实践出来的,纯粹写代码是不能体会这种生态的。

所以说,其实真正做运维开发最累的是运维,他要把他的逻辑整理成开发需求文档,这个逻辑沉淀的过程,我们的同事可能要脱层皮,思维模式的转变,及谨慎、全面的沟通是必不可少的。

对于做运维来说是大家都不能忽视的环节,底层的参数配置不合理、不标准,自动化运维是不牢靠的,这个是共识,我们要积极的维新,维持我们的软件版本、参数配置、人员脑海里理解的技术规则都是不断在刷新的,但这个刷新的过程是肯定需要控制的,得有个流程、过程,可以看左下这张图,要考虑兼容性、新功能等,快速试点迭代,批量推行。

积极维新带来什么好处呢?最右下的图是因特尔官方网站的一张关于每一代CPU的更替带来的性能提升图,每次CPU更替带来的性能增幅在30%;而每年大概迭代两次,硬件更替之后你要看看与现有操作系统的兼容时间还剩多久,现在的版本是否可以发挥服务器硬件最大的性能?

所以硬件的更迭推进操作系统版本的更新,操作系统版本的更新又会给数据库、中间件带来改变,这就是操作系统的母体效应,这就是在做运维开发过程中要考虑进去的场景。

中间件、数据库技术的更新,要站在操作系统的基石上,我觉得IT规模大的公司,公司里面一定要有一个团队或者某个人告诉你,现在的应用标准配置是什么样的,参数怎么用,让整个应用环境是不断的得到净化的,不会出现五花八门的版本、软件,不会有太多污染带来病痛。

百度百科上说:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

1.4.5        硬件分区技术

硬件分区技术如下图所示:硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,现在对于资源划分的颗粒已经远远提升,例如在 IBM AIX系统上,对CPU资源的划分颗粒可以达到0.1个CPU。这种分区方式,在目前的金融领域,比如在银行信息中心得到了广泛采用。

但是这种方式对互联网来说,成本高,不易统一管理。

 

澳门新萄京官方网站 12

2.3、操作系统的母体效应-建设篇

所以操作系统的选择带来你的生态的改变是非常大的,数据库、中间件结合操作系统运维这个是最佳的方向,做运维开发的时候,开发逻辑从数据库、中间件上层往操作系统沉淀是较容易打通的;我们在做操作系统标准化有很多的初始化代码,实际上很多标准需要我们代码里面抽离回来重新写成文档。

借用操作系统内核态、用户态的名词,我这是这么定义的,我跟我们团队这样说,如果你研究的模块你能够看的懂代码并能够根据需要改写,那么你可以把这个模块纳入你的“用户态“;如果你掌控不了,你不知道这个模块底层的逻辑是怎么实现的,那你就把它标记为内核态。

其实操作系统层面,你研究的东西大有可为,性能现场提取工具osw,我们基本上就改写了,根据自己需要的信息重新定义采集项、采集频率,保持时长,更贴近实际运用,另外基于cgroup我们也在做一些工具,应用与多库共计一台主机,某个库发疯失控的场景。

例如I/O的任务调度策略有四种Anticipatory、cfq、 noop、 dealine,默认策略是cfq,但mysql数据库场景下dealine才会是最佳实践;CPU、MEM的调度算法同样要根据场景定义最佳配置。

这些”内核态“的深入,扩大了我们的”用户态“,让我们掌握更多的技术武器,来武装我们的运维部队,让大家处理异常情况时不再那么恐慌。看右图,仰望星空与脚踏实地,带这这种心态,我让我们的团队一步步向内核态发起探索。

维基百科上说:In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, operating systems, storage devices, and computer network resources.

1.4.6        容器虚拟化Docker

虚拟化技术,大型网站技术学习。Docker技术主要利用了Linux下的LXC技术来实现的,LXC主要是利用Linux的内核特性:命名空间和cgroups子系统。LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,namespace感觉像C 的namespace,就是在内核中可以拥有不同namespace的相同的进程id,联想下C ,C 里面不同namespace下的名字可以一样。Docker相比与上面的那些虚拟化的主要区别在于Docker提供的是运行环境,上面的那些提供的是操作系统,所以Docker适用于Paas而上面的适合Iaas。效率上,Docker比操作系统虚拟化要快。部署上,Docker可以快速部署。

三、全栈资源的建立

我们讲一下操作系统上一层,我们讲一下我们的资源栈。

因为虚拟化本质不是对硬件的改变,而是用软件的方法抽象,虚拟出的IT资源与底层硬件相隔离,所以虚拟化技术能够实现IT资源的自动化分配、调度、共享、迁移、监控。这种特性对于大型网站运维来说非常有用,谁不想啥事都是自动化的?人总是比较容易马虎出错。另外,有些业务是IO密集型,有些业务是计算密集型,需求各有不同,虚拟化可以让IT资源按需分配。虚拟IT资源与硬件无关,所以当需要更多的资源的时候,只需要增加一些物理计算机即可,小型机与普通机器可以混合使用。

1.5   Hypervisor位置

Hypervisor安装在宿主操作系统上,Hypervisor安装在宿主操作系统上,通过宿主操作系统使用硬件,如VirtualBox、VMWare Workstation等。在Host系统上,加装了Virtual MachineMonitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。如下图所示。

 

澳门新萄京官方网站 13

这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执行,造成了性能的损耗,使其更合适用于实验室等特殊环境。

 

安装在硬件层上:由Hypervisor直接管理硬件,如VMWare ESX、微软、KVM、XEN等

澳门新萄京官方网站 14

安装在内核上:Hypervisor安装在宿主操作系统内核上,客户操作系统调用宿主操作系统内核。

澳门新萄京官方网站 15

 

3.1、全栈资源的建立-时间成本

我这里给资源一个狭义的定义,就是开袋即食。

讲的资源问题,其中两个指标,一个是时间,一个是 稳定性。

  • 在业务软件产品迭代这么快的情况下,时间成本同样的重要。那么我们快速的交付一个硬件固件是达到基线的、相关os层、应用层配置是最佳实践的、同时监控、cmdb、堡垒机授权这些是配套配置完整的资源,能否达到分钟级别?

    部分应用场景,通过KVM、docker平台我们是可以做到的,这些为我们换来了时间,引用SRE的话来说就是我们有时间去干更有意义的事情。

  • 同步看看右边的图,在追求减少时间成本的过程中,我们应该有一套完整的组织方法论来支持我们,避免走错方向;ITIL是基础,需要用ITIL这个武器来保障我们的基本运维稳中有序,这样才有更多“可自由支配的时间”。

    有时间之后,我们可以做的事情就可多了,有意思的事情就在时间充裕的情况下发生了,我们开动了集中的自动化门户建设,各专业组实现各自组件的API化。这种从内突破的理念也是在有时间的情况下,大家反思沉淀下来的,并可以亲身践行,因为我们有时间了。

服务器虚拟化主要有以下四方面的功能: 澳门新萄京官方网站 16

1.6   虚拟机架构

目前分为两种,寄居架构(Hosted Architecture)和裸金属架构 (“Bare Metal” Architecture),如图所示。

寄居架构就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理;

裸金属架构就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。

 

优点

缺点

举例

寄居架构

简单,便于实现

安装和运行应用程序依赖于主机操作系统对设备的支持,性能有损耗。

GSX Server, VMware Server, Workstation,KVM(linux内核)

裸金属架构

虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活

虚拟层内核开发难度较大

VMWare ESX Server,Xen,KVM

 

澳门新萄京官方网站 17

                                    裸金属架构

澳门新萄京官方网站 18

                                     寄居架构

 

 

3.2、全栈资源的建立-排兵布阵

这张图是我们的排兵布阵,每种资源形态都是实际业务场景下催生出来的。

公有云确实好用,那好用要加个定语,就是轻量的应用类型,对于大数据量数据库不一定好用。所以大家可以看看我们的资源有五种形态,这五种形态下我们要同步考虑对接到自动化门户,光用ansible是搞不定的,要结合IPMI、监控agent,并且把各类资源定义好标签。

大家可以看看右图,就是我们整理资源自动化的前行方向。

另外说说,为什么还有ESX,在于公司确实存在顽固的单点系统,我们的关务报关系统就是单点,并且是顽固的非内部可控的单点系统,ESX的vmotion功能这么完善,所以我们用它来保障这个系统的稳定性。

那ESX资源的API我们就要搞定,包含运维管理、资源交付的,我们花两个人力,集中火力,两个月搞定了,现在ESX的搭建、VM交付已经可以自助,但应用场景、及昂贵的license费用,注定ESX不会成虚拟化的主流;我们的主流是KVM及docker。

下面我们来看看docker,我们的docker已为公司核心应用提供服务,并赢得一致好评。

3.虚拟化的好处

1.7   KVM

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为的主流VMM之一。

虚拟化性能在很多方面可以达到非虚拟化原声环境的95%以上的性能。RHEL 6.X系统中的一个KVM支持160个虚拟核心和2T的内存,宿主机可以支持4096个CPU核心和多大64T内存。

KVM主要有两个组成部分:KVM模块和QEMU。

Kvm仅仅是一个linux内核的模块,当在linux中安装了kvm后,linux会变成了hypervisor,即VMM,进行CPU和内存的虚拟管理,主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持,为了软件的简介和性能,KVM仅支持硬件虚拟化。

 

而运行在用户空间的QEMU工具,实现虚拟机的创建管理,monitor管理各个IO设备。QEMu本身并不是KVM的一部分,自身就是一个著名的虚拟机软件,与KVM不同,QEMU是纯软件的实现,性能低下,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化、设备虚拟化,KVM对QEMU进行了修改,QEMU会通过KVM系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。从QEMU的角度看,QEMU使用了KVM模块的虚拟化功能,为自己提供硬件虚拟化的加速,极大的提高了虚拟机的性能。除此之外,一系列虚拟机的技术都是由QEMU自己实现的。

澳门新萄京官方网站 19

3.3、全栈资源的建立-docker

docker这一块,在2016年中我们开始投产使用,具体的技术点大家可以看看,在docker的使用上实际是需要深入与研发同事并肩作战的,很容易被大家误解为devops,其实不然,但docker给我们带来的便利:底层资源足够的情况下业务系统容量伸缩自如,硬件故障对业务基本透明。

目前我们还是基于Mesos Marathon架构,我们下一步的工作会引入Kubernetes作为容器管理和编排框架,并在此之上引入Service Mesh作为下一代微服务框架。目前从业内反馈来看Kubernets好用,那么好的东西大家都会认可,并去采用。

在使用容器遇到的最大的问题就是,Host主机内核bug,导致当一台服务器宕机后,容器消亡,但连接不释放,导致应用的连接数满。这个问题在我们升级操作系统内核后解决,这里又回到我们提到的操作系统生态,这些都是相辅相成的。

澳门新萄京官方网站 20

1.8   XEN

XEN是一个开放的源代码虚拟机软件,有剑桥大学研发。Xen主要支持半虚拟化(Para-virtualization)和全虚拟化(Full-virtualization)。半虚拟化主要是透过修改 Linux 核心来达成的虚拟技术.

Xen 的半虚拟化技术主要是用在相同版本的 Linux 上面,也就是说,如果你想要使用半虚拟化的方式启动多个虚拟机器, 那么那些虚拟机器全部都必须是相同的系统,甚至要求相同版本与相同核心的 Linux distribution 。

如果你想要安装不同版本的 Linux 或者是其他的 OS (例如 Windows XP) 时,就得要使用全虚拟化技术了。 但是全虚拟化技术是有其限制的,当硬体满足下列需求之一时,全虚拟化技术才能够动作:

    你的硬体支援 Intel 的 VT 技术 (Virtualization Technology, Intel-VT);

    你的硬体支援 AMD 的 SVM 技术 (Secure Virtual Machine, AMD-SVM or, AMD-V)。

既然我有多个虚拟机器,每个虚拟机器都有自己的任务队列, 也就是有多个任务队列同时存在。如果所有的作业系统都能够完整的控制硬体的话, 那麽硬体到底该接受谁的指令来运作?那个系统的指令会先被执行?这是很重要的问题, 因为如果这边搞不定,那么只能呵呵呵了。

为了解决这个问题,Xen用了以下架构。

澳门新萄京官方网站 21

Xen架构分为两层,底层为Xen Hypervisor,又称虚拟机监控程序(Virtual Machien Monitor简称VMM),VMM工作原有linux系统内核位置,替代了linux系统内核,用于虚拟CPU、Memeory等;高层为Xen虚拟机,Xen的虚拟机称为Domain,为了辅助Xen管理Domain, Xen存在一个特权Domain叫Dom0(Domain 0,Xend是其中的一个重要进程).他拥有真实的设备驱动,能够直接访问物理硬件,可以通过一些管理工具管理Xen的虚拟机们,他还能为其他Domain提供一些虚拟资源服务,特别是其他Domain对I/O的访问。普通Domain叫做DomU(Domain U). 半虚拟化中Domain的内核都经过了修改。

XEN虚拟化分类

(1)完全虚拟化:DomU中的各个硬件都是由VMM和Dom0虚拟和模拟实现;
(2)半虚拟化: DomU中的CPU、Memory有VMM模拟实现,IO等设备分为前端(Front)和后端(Back),前端工作在DomU中,而后端工作在Dom0中;
澳门新萄京官方网站 22
DomU中的网卡eth0与Dom0中的viif#中的设备对应,不再由Dom0模拟,这大大提升了IO性能

 

持续更新~

转载注明出处:

 

3.4、全栈资源的建立-KVM

再讲讲KVM,实际上我在内部叫KVM平台,它是基于Libvirt做的管理页面开发,并把我们的容量管理逻辑沉淀进来;KVM的底层思想是在Linux内个的基础上添加虚拟机管理模块,重用Linux内核中已经完善的进程调度,内存管理,IO管理等部分。

因此KVM并不是一个完整的模拟器,而只是一个提供虚拟化功能的内核插件,具体的模拟器工作是借助QEMU来完成的。

在KVM中,一个虚拟机就是一个传统的HOST主机上Linux中的线程,拥有自己的PID号,也可以被kill系统调用直接杀死,相当于虚拟机”突然断电”;在一个HOST 上Linux系统中,有多少个VM,就有多少个进程,可以通过字符命令virsh来查看。

在这里我们讲了一下基本的KVM知识,我们需要对标一下自己在这个平台上开发的东西有哪些价值,同步vmware在虚拟化在稳定性、功能上业内公认是最好的。那么我们开发的功能基本上就会向vmware对齐,找到自己的参照物,才会有基本线规则。

谈到如何评判虚拟化技术的好坏,这里有个学术的专有名词,叫做“指令转化率”。Vmware宣称可以做到97%的转换率,只有3%的损耗,我们实测只有90%,不晓得是否我们哪里配置不当,目前没有找到问题点。

但我们实测KVM的转换率,确实不如vmware,只有80%左右,但这不影响我们采用KVM做我们的主流虚拟机组件,这个大家应该都懂得。

效率:将原本一台服务器的资源分配给了数台虚拟化的服务器,有效的利用了闲置资源,确保企业应用程序发挥出最高的可用性和性能。

四、Ansible自动化运维的核心灵魂

讲到最后,我们来完整的讲讲自动化,说到自动化都离不开执行通道的采用什么组件,chef、saltstack、Puppet。我们用的ansible agent,下面讲讲Ansible。

隔离:虽然虚拟机可以共享一台计算机的物理资源,但它们彼此之间仍然是完全隔离的,就像它们是不同的物理计算机一样。因此,在可用性和安全性方面,虚拟环境中运行的应用程序之所以远优于在传统的非虚拟化系统中运行的应用程序,隔离就是一个重要的原因。

4.1、Ansible自动化运维-概览

Ansible实际上我们在2014年我们就开始小部分用,那时候我们经常做变更发现我们的机器数量增长太快,如果还是手工做,一晚上也搞不定,我们的同事自发的研究其批量管理工具,发现ansible轻量、好用,大家尝到甜头,慢慢的ansible key的配置就成为了资源交付的标准化中的一项了;ansible底盘就这样无形的被控制了。

到目前为止,ansible的模块已经被我们改的面目全非,但是挺适合我们顺丰自己的环境适应。

我们定义十几个模块,sfsoft、changesudo、changeuser、changepasswd、checkafterreboot、checkbeforereboot、oshealth、osinfo、osservice、linux_sec_check、dbopration、dealwithmultipath、get_log、get_top_file、mid_check、osmount、osvip等等。

对于放开全部的执行权限,这里要解决的难题就是如何鉴权,让对于的运维人员只能执行对于的指令,并在对的服务器上执行。

可靠:虚拟服务器是独立于硬件进行工作的,通过改进灾难恢复解决方案提高了业务连续性,当一台服务器出现故障时可在最短时间内恢复且不影响整个集群的运作,在整个数据中心实现高可用性。

4.2、Ansible自动化运维-细看实现

它本身来说, Ansible server是很集中的,本身就是个很大的安全问题存在,如果做好ansible本身server端的安全管控,这个也是个话题。大家可以看看上图,我们通过7种手段来严防死守,把这个安全问题通过其他的手段来弥补掉。

说到缺陷,ansible还有个非常严重的缺陷,那就是ansible不能自动发现新搭建服务器资源的ip。我们是通过监控的agent来做新主机的自动发现的。Ansible的好用大家都知道,我们就不多说,主要来看看它有哪些不足,我们针对性的想办法对弥补这些不足项。

成本:降低了部署成本,只需要更少的服务器就可以实现需要更多服务器才能做到的事情,也间接降低了安全等其他方面的成本。

4.3、Ansible自动化运维-弥补不足

对于有一定技术功底的团队,技术没有好坏之分,团队能掌控的,我认为就是合适的技术。

基于这个态度,我们看的ansible也有挺多的缺陷,当我们要想办法弥补这些缺陷,让这些缺陷无关痛痒,这个时候ansible就在这个团队中生根了,有生命力了。

Ansible server端如何做成分布式?大批量任务下发有任务卡死无法输出最终结果?如何提高任务执行的并发数?这些都是我们使用过程中遇到的实际问题,把server端做成分布式后,很多问题都不会再是问题。

那这些问题的解决思路我只是参与,真正解决问题的是我们的高级小步兵们,他们才自动化能顺利推行的根本。

兼容:所有的虚拟服务器都与正常的x86系统相兼容,他改进了桌面管理的方式,可部署多套不同的系统,将因兼容性造成问题的可能性降至最低。

4.4、Ansible自动化运维-灵魂

这几年带团队给我的核心的感触,就是技术是以人为本。团队里有没有能抗起事情的人,解决问题的本质是要找对人。

自动化运维的细节,都是靠高级小步兵们一步一步实现的,领导能给的是方向、目标、资源和信任,同样我们作为高级小步兵不能辜负领导的信任,当这种信任被建立起来,整个组织才能迈入运维自动化的快通道。

这种运维气质在内心的,形成内驱动,要有改善运维环境志向,我们要把运维做的更精彩。

工作要出业绩,需要一支专业性强、目标很清晰的团队,同时领导的严格要求也是有助团队成长的,用严格的要求去善待我们的队友。专业性是被逼出来的,目标是否清晰是指挥官的责任,所以指挥官不能太多,如果多位指挥官,需要目标一致。

绝大多数的运维人,都是高级小步兵,用我们整齐划一的步伐推动运维行业走向美好的明天。

上面都发散的很厉害,结尾我收敛一下:技术以人为本,找对人、招对人,善待队友,让团队形成一股匠心力,把运维做成美好的行业,让运维在前行中更精彩。

更多相关文章阅读

阿里万亿交易量级下的秒级监控

IT 运维的救赎——顺丰运维的理想践行

运维工程师除了穷,还有另一个共同点

DevOps 标准体系发布及权威解读

阅后即焚,Python 运维开发99速成

京东大规模数据中心网络运维监控之眼

IT 从业者必备的20个效率工具,亲测有效

腾讯赵建春:AI浪潮下的高效运维思考及实践

AI运维、爱标准 | GOPS2017上海站精彩实录【附PPT】

Jenkins创始人带您探访国内首届Jenkins用户大会(附PPT)

怎么证明你是 ansible 高手,并升职加薪?

参与「Ansible 的自动化管理」课程**你将收获如下:**

 1、全面透彻的掌握 Ansible

2、获得 Ansible 官方认证证书

 3、优先获得大厂推荐就业机会

Ansible 官方认证证书

与众多 Ansible 使用者共同交流请扫描下方二维码

超过一百人请添加小助手微信进群:13261885689;13021086339

本课程基于红帽® 企业 Linux® 7。

参与报名及课程详情、请点击阅读原文链接

便于管理:,提高了服务器/管理员比率,一个管理员可以轻松的管理比以前更多的服务器而不会造成更大的负担。

通过实现 IT 基础架构的虚拟化,可以降低 IT 成本,同时提高现有资产的效率、利用率和灵活性。在全世界,各种规模的公司都享受着服务器的虚拟化带来的好处。数千家组织都在采用服务器虚拟化解决方案。

4.虚拟化技术分类

网上盗个图

澳门新萄京官方网站 23

  1. ### 全虚拟化(Full Virtulization)

简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有VirtualBox,KVM,VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere),Xen(也支持全虚拟化)。

优点:Guest OS无需修改,速度和功能都非常不错,使用非常简单。

缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。

    2.  半虚拟化或者叫准虚拟化(Para-virtualization)

它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hypervisor来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。

这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual MachineMonitor,性能稍有提高,但并不十分显著。为了进一步提高性能,Intel和AMD分别开发了VT和Pacifica虚拟技术,将虚拟指令加入到了 CPU中。使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU指令集进行相应的转换操作。

优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。

缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。

在完全虚拟化模式中,hypervisor必须模拟设备硬件,它是在会话的最低级别进行模拟的(例如:网络驱动程序,磁盘,显卡等等).尽管在该抽象中模拟很干净,但它同时也是最低效,最复杂的.在半虚拟化中,来宾操作系统和hypervisor能够共同合作,让模拟更加高效.缺点是操作系统知道它被虚拟化,并且需要修改才能工作.

    3.硬件辅助虚拟化(Hardware Assisted Virtualization)

Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化(具体将在下文详述)来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。

优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。

  4. 操作系统级虚拟化(Operating System Level Virtualization)

这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS,以SWsoft的Virtuozzo/OpenVZ和Sun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VE,VirtualEnvironment),也被称为虚拟专用服务器(即VPS,Virtual Private Server)。如下图所示:

 

澳门新萄京官方网站 24

 

在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。

优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。

缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。

    5. 硬件分区技术

硬件分区技术如下图所示:硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,现在对于资源划分的颗粒已经远远提升,例如在 IBM AIX系统上,对CPU资源的划分颗粒可以达到0.1个CPU。这种分区方式,在目前的金融领域,比如在银行信息中心得到了广泛采用。

 

澳门新萄京官方网站 25

      6. 容器虚拟化Docker

现在docker内部使用的技术是Linux容器(LXC技术),运行在与它宿主机同样的操作系统上,准许它可以和宿主机共享许多系统资源,它也会使用AuFS作为文件系统,也为你管理网络。AuFS是一个层状的文件系统,因此你可以有一个只读和一个只写部分,二者结合起来,可以使系统的共同部分用做只读,那块被所有容器共享,并且给每个容器自己的可写区域。

让我们假设你有一个容器镜像(image)容量是1GB,如果你想用一个完整的虚拟机来装载,你得需要容量的大小是1GB乘上你需要虚拟机的数量。但使用Linux容器虚拟化技术(LXC)和AuFS,你可以共享1GB容量,如果你需要1000个容器,假设他们都运行在同样的系统影像上,你仍然可以用稍微比1GB多一点的空间来给容器系统。

 

docker相比完全的虚拟机,可以实现基础共享,一个完整的虚拟化系统得到了分给它的自有全部资源,只有最小的共享。你获得了更多的隔离,但是这是很庞大的(需要更多的资源)

5.Hypervisor位置

Hypervisor安装在宿主操作系统上,

Hypervisor安装在宿主操作系统上,通过宿主操作系统使用硬件,如VirtualBox、VMWare Workstation等。在Host系统上,加装了Virtual MachineMonitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。如下图所示。

 

澳门新萄京官方网站 26

这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执行,造成了性能的损耗,使其更合适用于实验室等特殊环境。

 

安装在硬件层上:

由Hypervisor直接管理硬件,如VMWare ESX、微软、KVM、XEN等

澳门新萄京官方网站 27

安装在内核上:

Hypervisor安装在宿主操作系统内核上,客户操作系统调用宿主操作系统内核。

澳门新萄京官方网站 28

  

 

 

 

  1. 虚拟机架构

目前分为两种,寄居架构(Hosted Architecture)和裸金属架构 ("Bare Metal" Architecture),如图所示。

寄居架构就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理;

裸金属架构就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。

 

优点

缺点

举例

寄居架构

简单,便于实现

安装和运行应用程序依赖于主机操作系统对设备的支持,性能有损耗。

GSX Server, VMware Server, Workstation

裸金属架构

虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活

虚拟层内核开发难度较大

VMWare ESX Server

 

澳门新萄京官方网站 29

                                    裸金属架构

澳门新萄京官方网站 30

                                     寄居架构

澳门新萄京官方网站 31

                                    裸金属架构

7. KVM

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为的主流VMM之一。

Kvm仅仅是一个linux内核的模块,当在linux中安装了kvm后,linux会变成了hypervisor,即VMM,进行CPU和内存的虚拟管理,而qemu工具,实现虚拟机的创建管理,monitor管理各个IO设备。

虚拟化方式:完全虚拟化
架构:寄居架构(linux内核);祼金属架构RHEV-H
特点:祼金属架构RHEV-H或在关键的硬盘和网卡上支持半虚拟化VirtIO,达到最佳性能。
I/O协议栈:KVM重用了整个Linux I/O协议栈,所以KVM的用户就自然就获得了最新的驱动和I/O协议栈的改进。
架构图:
澳门新萄京官方网站 32

8.XEN

XEN是一个开放的源代码虚拟机监视器,有剑桥大学研发。它打算在单个计算机上运行多达128个满足特征的操作系统,操作系统必须进行显示地修改("移植")以在Xen上运行(但是提供对用户应用的兼容性)。这使得无需特殊硬件支持,就能达到高性能的虚拟化。

XEN虚拟化分类

  • (1)完全虚拟化:DomU中的各个硬件都是由VMM和Dom0虚拟和模拟实现;

  • (2)半虚拟化:DomU中的CPU、Memory有VMM模拟实现,IO等设备分为前端(Front)和后端(Back),前端工作在DomU中,而后端工作在Dom0中;
    澳门新萄京官方网站 33
    DomU中的网卡eth0与Dom0中的viif#中的设备对应,不再由Dom0模拟,这大大提升了IO性能

  • (3)借助于硬件设备的半虚拟化;例如Intel的vt-d技术

    Xen由三部分组成:
    澳门新萄京官方网站 34

  • 第一部分:Xen Hypervisor,又称虚拟机监控程序(Virtual Machien Monitor简称VMM),VMM工作原有linux系统内核位置,替代了linux系统内核,用于虚拟CPU、Memeory等;

  • 第二部分:Xen Dom0,又称特殊区域;为vmm提供硬件驱动程序,用于协助vmm驱动各个底层硬件,同时又为Xen DomU提供模拟IO等功能;由于特殊原因Linux-2.6.37以后的内核才支持Xen Dom0,建议大家在使用xen时使用linxu-3.0以后的内核;

  • 第三部分:Xen DomU,非特权区域;实际生产中的操作系统

    虚拟化方式:半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化

    架构:裸金属架构
    I/O协议栈:Xen选择了可维护这条道路,它将所有的I/O操作放到了Linux guest里面,也就是所谓的domain-0里面。重用Linux来做I/O, Xen的维护者就不用重写整个I/O协议栈了。但不幸的是,这样就牺牲了性能:每一个中断都必需经过Xen的调度,才能切换到domain 0, 并且所有的东西都不得不经过一个附加层的映射。

    架构图:
    澳门新萄京官方网站 35澳门新萄京官方网站 36

9. VmWare ESX或vSphere

虚拟化方式:完全虚拟化
架构:裸金属架构
I/O协议栈:VMware选择性能,但是把I/O协议栈放到了hypervisor里面。不幸的是,VMware kernel是专有的,那就意味着VMware不得不开发和维护整个协议栈,会导致开发速度会减慢,你的硬件可能要等一段时间才会得到VMware的支持。
架构图:

澳门新萄京官方网站 37

论文:

本文由澳门新萄京官方网站发布于服务器运维,转载请注明出处:虚拟化技术,大型网站技术学习

关键词: