精华内容
下载资源
问答
  • 本书从云基础知识、云应用编程云平台三个方面,介绍云计算的起源、发展、核心技术、编程技巧实际应用,基于Aneka平台详细讲解并行计算、高吞吐量计算数据密集型计算的范式。此外,还涉及亚马逊Web服务、谷歌...
  • 云计算第三版配套PPT课件 目目 2.1 Google文件系统 GFS 2.2 分布式数据处理 MapReduce 录录 2.3 分布式锁服务 Chubby 2.4 分布式结构化数据表 Bigtable 2.5 分布式存储系统 Megastore 2.6 大规模分布式系统监控...
  • 云计算基本原理

    万次阅读 2016-06-11 15:33:23
    管理中间件负责对云计算的资源进行管理,并对众多应用任务进行调度,使资源能够高效、安全地为应用提供服务; SOA构建层将云计算能力封装成标准的Web Services服务,并纳入到SOA体系进行管理使用,包括服务...


    管理中间件负责对云计算的资源进行管理,并对众多应用任务进行调度,使资源能够高效、安全地为应用提供服务;

    SOA构建层将云计算能力封装成标准的Web Services服务,并纳入到SOA体系进行管理和使用,包括服务注册、查找、访问和构建服务工作流等。

    基于上述体系结构,本文以IaaS云计算为例,简述云计算的实现机制,如图4所示。


                          4  简化的IaaS实现机制

    用户交互接口向应用以Web Services方式提供访问接口,获取用户需求。服务目录是用户可以访问的服务清单。系统管理模块负责管理和分配所有可用的资源,其核心是负载均衡。配置工具负责在分配的节点上准备任务运行环境。监视统计模块负责监视节点的运行状态,并完成用户使用节点情况的统计。执行过程并不复杂:用户交互接口允许用户从目录中选取并调用一个服务。该请求传递给系统管理模块后,它将为用户分配恰当的资源,然后调用配置工具来为用户准备运行环境。



    展开全文
  • 目录 0云计算基本概念 云计算市场及产业发展状况 云计算标准建设 云计算关键技术 0云计算在运营商应用现状介绍 云计算起源 6云计算这个概念直接起源来自亚马逊EC2产品 Google-IBM分布式 计算项目这两个项目中...
  • 本书在介绍云计算的基本概念产生背景的基础上,重点讲述google云计算的三大核心技术,即Mapreduce、GFSBigtable。同时对目前流行的开源系统Hadoop的核心技术也进行详细讲解。随后介绍google公司新提出的更适合大...
  • 本书是云数据中心课题组在多年理论研究科研实践的基础上,参考了大量的研究文献,从广度深度上系统地讲述了关于云计算、云数据中心的基本概念及其相关技术,包括虚拟化技术、基于SOA架构的服务开发方法与工具、...
  • 1.2 云计算的基本概念 1.2.1 云计算的定义与术语云计算本身是一个非常抽象的概念,要准确地为其进行定义并不是一件容易的事。国内外的公司、标准组织学术机构对它的定义也不尽相同。1)亚马逊将云计算定义为:...

    1.2 云计算的基本概念

    1.2.1 云计算的定义与术语
    云计算本身是一个非常抽象的概念,要准确地为其进行定义并不是一件容易的事。国内外的公司、标准组织和学术机构对它的定义也不尽相同。
    1)亚马逊将云计算定义为:通过互联网以按使用量定价方式付费的IT资源和应用程序的按需交付。
    2)IBM的定义为:①一种新的用户体验和业务模式。云计算是一种新出现的计算模式,它是一个计算资源池,并将应用、数据及其他资源以服务的形式通过网络提供给最终用户。②一种新的架构管理方法。云计算采用一种新的方式来管理大量的虚拟化资源,从管理的角度来看云计算,它可以是多个小的资源组装成大的资源池,也可以是大型资源虚拟化成多个小型资源,而最终目的都是提供服务。
    3)微软的定义为:云计算就是通过标准和协议,以实用工具形式提供的计算功能。
    4)美国加州大学伯克利分校在《伯克利云计算白皮书》中对云计算的定义为:云计算是互联网上的应用服务,以及在数据中心提供这些服务的软硬件设施。互联网上的应用服务一直被称作“软件即服务”,而数据中心的软硬件设施就是所谓的“云”。
    5)美国国家标准技术研究所NIST对云计算的定义是:云计算是一种资源利用模式,它能以方便、友好的方式通过网络按需访问可配置的计算机资源池(例如网络、服务器、存储、应用程序和服务),并以最小的管理代价快速提供服务。
    6)我国相关部门在参考了国际组织和其他国家相关标准和法规后,于2014年发布国家标准GB/T 31167—2014《信息安全技术 云计算服务安全指南》,其中对云计算进行了如下定义:
    “以按需自助获取、管理资源的方式,通过网络访问可扩展的、灵活的物理或虚拟共享资源池的模式。”(注:资源实例包括服务器、操作系统、网络、软件、应用和存储设备等。)
    该标准也对云计算涉及的相关术语进行了定义:
    云计算服务:使用定义的接口,借助云计算提供一种或多种资源的能力。
    云服务商:提供云计算服务的参与方。云服务商管理、运营、支撑云计算的计算基础设施及软件,通过网络交付云计算的资源。
    客户:为使用云计算服务同云服务商建立商业关系的参与方。
    第三方评估机构:独立于云计算服务相关方的专业评估机构。
    云基础设施:由硬件资源和资源抽象控制组件构成的支撑云计算的基础设施。硬件资源指所有的物理计算资源,包括服务器(CPU、内存等)、存储组件(硬盘等)、网络组件(路由器、防火墙、交换机、网络链接和接口等)及其他物理计算基础元素。资源抽象控制组件对物理计算资源进行软件抽象,云服务商通过这些组件提供和管理对物理计算资源的访问。
    云计算平台:云服务商提供的云基础设施及其上的服务软件的集合。
    云计算环境:云服务商提供的云计算平台,及客户在云计算平台之上部署的软件及相关组件的集合。
    1.2.2 云计算的主要特性
    GB/T 31167—2014《信息安全技术 云计算服务安全指南》中描述了云计算的五个特性。
    1.?按需自助服务
    在不需或仅需较少云服务商人员参与的情况下,客户能根据需要获得所需计算资源,如自主确定资源占用时间和数量等。比如对于IaaS服务,客户可以通过云服务商的网站自助选择需要购买的虚拟机数量、每台虚拟机的配置(包括CPU数量、内存容量、磁盘空间、对外网络带宽等)、服务使用时间等。
    2.?泛在接入
    客户通过标准接入机制,利用计算机、移动电话、平板等各种终端通过网络随时随地使用服务。对客户来讲,云计算的泛在接入特征使客户可以在不同的环境(如工作环境或非工作环境)下访问服务,增加了服务的可用性。
    3.?资源池化
    云服务商将资源(如计算资源、存储资源、网络资源等)提供给多个客户使用,这些物理的、虚拟的资源根据客户的需求进行动态分配或重新分配。
    构建资源池也就是通过虚拟化的方式将服务器、存储、网络等资源组织成一个巨大的资源池。云计算基于资源池进行资源的分配,从而消除物理边界,提升资源利用率。云计算资源在云计算平台上以资源池的形式提供统一管理和分配,使资源配置更加灵活。通常情况下,规划和购置IT资源都是满足应用峰值以及五年计划需求的条件,导致实际运行过程中资源无法充分使用、利用率低,而云计算服务则有效地降低了硬件及运行维护成本。同时,客户使用云计算服务时不必了解提供服务的计算资源(如网络带宽、存储、内存和虚拟机)所在的具体物理位置和存在形式。但是,客户可以在更高层面(如地区、国家或数据中心)指定资源的位置。
    4.?快速伸缩性
    客户可以根据需要快速、灵活、方便地获取和释放计算资源。对于客户来讲,这种资源是“无限”的,能在任何时候获得所需资源量。
    云服务商能提供快速和弹性的云计算服务,客户能够在任何位置和任何时间,获取需要数量的计算资源。计算资源的数量没有“界限”,客户可根据需求快速向上或向下扩展计算资源,没有时间限制。从时间代价上来讲,在云计算服务上,可以在几分钟之内实现计算能力的扩展或缩减,可以在几小时之内完成上百台虚拟机的创建。
    5.?服务可计量
    云计算可按照多种计量方式(如按次付费或充值使用等)自动控制或量化资源,计量的对象可以是存储空间、计算能力、网络带宽或活跃的账户数等。
    该特性一方面可以指导资源配置优化、容量规划和访问控制等任务;另一方面可以监视、控制、报告资源的使用情况,让云服务商和客户及时了解资源使用明细,增加客户对云计算服务的可信度。
    1.2.3 服务模式
    根据云服务商提供的资源类型不同,云计算的服务模式主要分为三类。
    1.?软件即服务
    软件即服务(Software-as-a-Service,SaaS)是指云服务商将应用软件功能封装成服务,使客户能通过网络获取服务。云服务商负责软件的安装、管理和维护工作,客户可对软件进行有限的配置管理。客户无需将软件安装在自己的电脑或服务器上,而是按某种服务水平协议(SLA)通过网络获取所需要的、带有相应软件功能的云计算服务。例如,客户通过云计算服务向用户提供典型的办公软件或邮件等,终端用户使用软件应用,软件应用的管理者可以配置应用,客户可以按需使用软件和管理软件的数据(如数据备份和数据共享)。如Saleforce公司提供的在线客户关系管理(CRM)服务。
    SaaS供应商的主要职责如下:其一,确保提供给客户的软件能获得稳定的技术支持和测试;其二,确保应用是可扩展的,足以满足不断上升的大工作负载;其三,确保软件运行在一个安全的环境中,因为很多客户将有价值的数据存储在云端,这些信息也许是私人或商业机密。
    2.?平台即服务
    平台即服务(Platform-as-a-Service,PaaS)是指云服务商为客户提供软件开发、测试、部署和管理所需的软硬件资源,能够支持大量客户,处理大数量的数据。在这种服务模式中,PaaS提供整套程序设计语言关联的SDK和测试环境等,包括开发和运行时所需的数据库、Web服务、开发工具和操作系统等资源,客户利用PaaS平台能够快速创建、测试和部署应用和服务。PaaS提供的工具包和服务可以用于开发各种类型的应用,从而可以支撑对外提供SaaS服务。PaaS的客户包括应用软件的设计者、开发者、测试人员(在云计算环境运行应用)、实施人员(在云计算环境完成应用的发布,管理多版本的应用冲突)、应用管理者(在云计算环境配置、协调和监管应用)。
    典型的PaaS包括Google App Engine和Microsoft Windows Azure。PaaS负责资源的动态扩展、容错管理和节点间配合,但用户的自主权会相应地降低,必须使用特定的编程环境并遵照特定的编程模型。例如,Google App Engine只允许使用Python和Java语言、基于Django的Web应用框架、调用Google App Engine SDK来开发在线应用服务。
    3.?基础设施即服务
    基础设施即服务(Infrastructure-as-a-Service,IaaS)是指云服务商将计算、存储和网络等资源封装成服务供客户使用,无论是普通客户、SaaS提供商还是PaaS提供商都可以从基础设施服务中获得所需的计算资源,客户无需购买IT硬件。典型的IaaS服务有亚马逊的EC2和简单存储服务S3。相比于传统的客户自行购置硬件的使用方式,IaaS允许客户按需使用硬件资源,并按照具体使用量计费。从客户角度看,IaaS的计算资源规模大,客户能够申请的资源几乎是“无限的”;从云服务商的角度看,IaaS能同时为多个客户提供服务,因而具有更高的资源利用率。通常情况下,可以根据CPU使用小时数、占用的网络带宽、网络设施(如IP地址)使用小时数和是否使用增值服务(如监控、服务自动伸缩)等方式计量费用。
    与SaaS和PaaS客户不同的是,IaaS的客户承担了更多的责任。客户要管理虚拟机,承担操作系统管理的工作。使用IaaS服务的客户更容易实现与传统应用的交互和移植,能够更灵活、高效地租用计算资源。同时,客户也面临很多问题,例如,将传统的应用软件部署到IaaS的同时会引发传统软件系统的漏洞所带来的安全威胁;客户可以在IaaS上创建和维护多个不同状态的虚拟机(如运行、暂停和关闭),也要负责虚拟机安全的维护更新(原理上,云服务商可以代表客户对非活动态虚拟机进行安全状态的维护更新,而这种类型的更新机制很复杂)等工作。
    1.2.4 部署模式
    根据使用云计算平台的客户范围的不同,可以将云计算分成私有云、公有云、社区云和混合云等四种部署模式。
    1.?私有云
    私有云的特点是云基础设施为某个独立的组织或机构运营。云基础设施的建立、管理和运营既可以是客户自己,这种私有云称为场内私有云(或自有私有云),也可以是其他组织或机构,这种私有云称为场外私有云(或外包私有云)。与公有云相比,私有云可以使客户更好地控制基础设施。下面分别对场内私有云场景和场外私有云场景进行分析。
    图1-2描述了场内私有云的部署场景。为有效控制云基础设施,客户可以控制云基础设施的安全访问边界。边界内的客户可以直接访问,边界外的客户只能通过边界控制器访问云基础设施。

    image

    图1-3描述了场外私有云的部署场景。场外私有云具有两个安全边界,一个安全边界由云客户实现,另一个安全边界由云服务商实现。云服务商控制访问客户所使用的云基础设施的安全边界,客户控制客户端的安全边界。两个安全边界通过一条受保护的链路互联。场外私有云的数据和处理过程的安全依赖于两个安全边界以及边界之间的链接的强度和可用性。
    2.?公有云
    公有云是开放式服务,能为所有人提供服务(包括其潜在竞争对手)。公有云是指基础设施和计算资源通过互联网向公众开放的云服务。公有云的所有者和运营者是向客户提供服务的云服务商,而从其定义可以看出,该云服务商独立于客户所在的组织或机构。

    image

    公有云主要分为以下几类:①免费向用户开放并通过广告支撑的服务,众所周知的就是搜索引擎和电子邮件服务。这些服务可能只限个人或非商业用途使用,且可能将用户的注册和使用信息与从其他来源获取的信息结合起来,向用户发送个性化广告。此外,这些服务可能不具备通信加密等保护措施。②需付费的服务。此类服务与第一类服务相似,但可以用低成本的方式为客户提供服务,因为服务提供条款都是没有商量余地的,且只能由云服务商单方面进行修改。此类服务的保护机制要超出第一类服务,且可由客户进行配置。③需付费且服务条款可由客户和云服务商进行协商的云计算服务。
    图1-4描述了公有云场景,所有客户均能访问任何可用的云基础设施。

    image

    3.?社区云
    社区云的特点是云基础设施由若干特定的客户共享。这些客户具有共同的特性(如任务、安全需求和策略等)。和私有云类似,社区云的云基础设施的建立、管理和运营既可以由一个客户或多个客户实施,也可以由其他组织或机构实施。
    图1-5描述了场内社区云的部署场景,每个参与组织或机构可以提供云服务、使用云服务,或既提供云服务也使用云服务,但至少有一个社区云成员提供云服务。提供云计算服务的各个成员分别控制了一个云基础设施的安全边界和云计算服务的安全边界。使用社区云的客户可以在接入端建立一个安全边界。

    image

    图1-6描述的场外社区云由一系列参与组织(包括云服务商和客户)构成,该场景与场外私有云类似:服务端的责任由云服务商管理,云服务商实现了安全边界,防止社区云资源与其他供应商安全边界以外的云资源混合。与场外私有云相比,一个明显的不同之处在于云服务商可能需要在参与组织之间实施恰当的共享策略。
    4.?混合云
    混合云的特点是云基础设施由两种或者两种以上相对独立的云(私有云、公有云或社区云)组成,并用某种标准或者专用技术绑定在一起,这使数据和应用具有可移植性。因为混合云由两个或多个云(私有云、社区云或公有云)组成,所以会比其他的部署模型更为复杂。每个成员依然是独立的个体,通过标准技术或专有技术与其他成员绑定,从而实现应用和数据在成员间的可移植性。

    image

    展开全文
  • 一课程地位性质任务 本课程是云计算技术计算机网络技术计算机应用技术等专业一门专业核心课程主要讲授虚拟化技术发展史虚拟化技术分类虚拟化架构特性并对目前主流虚拟化技术都有涉及重点讲授虚拟化技术在...
  • 云计算,是一种基于因特网超级计算模式,...其基本原理:通过使计算分布在大量分布式计算机上,而非本地计算机或远程服务器中,企业数据中心运行更与互联网相似。 这使得企业能够将资源切换到所需要的应用上,...

    云计算,是一种基于因特网的超级计算模式,在远程的数据中心里成千上万台电脑和服务器连接成的一片电脑云,用户可以通过电脑、手机等方式接入数据中心,按自己的需求进行运算。是IT基础设施的交付和使用模式,是通过网络以按需、易扩展的方式获得所需的资源。其基本原理:通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行更与互联网相似。

    这使得企业能够将资源切换到所需要的应用上,根据需求访问计算机及储存系统。它好比是从单台发电机发电模式转向了电网集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像水、电、煤气一样,取用方便,费用低廉。云计算的特点如下:

    1.数据安全可靠

    数据保存于个人的电脑存在很多不安全因素。个人电脑可能会因为自己不小心而被损坏,或被病毒攻击,而导致硬盘上的数据无法恢复;个别有机会接触你的电脑的人可能利用各种机会窃取你的数据。轰动一时的“艳照明”事件,就是因为个人电脑送修而造成数据外泄的结果。云计算提供了最可靠、最安全的数据存储中心,用户不用再担心数据丢失、病毒侵入等麻烦。

    2.客户端要求低

    云计算对用户端的设备要求很低,使用起来也最方便。我们都有过维护个人电脑上种类繁多的应用软件的经历。为了使用某个新的操作系统,或使用某个软件的最新版本,我们必须不断对自己的电脑硬件进行升级。为了防止在下载时引入病毒,我们不得不反复安装杀毒软件。而应用云计算,只要你有一台可以上网的电脑,就可以完成自己想做或需要做的事情。

    3.数据共享方便

    云计算可以轻松实现不同设备间的数据与应用共享。在人们的日常生活中,不共享数据的计算机是非常麻烦的。在你的个人电脑里如果存储了上百个邮箱地址,为了方便在出差时发邮件,你不得不在办公电脑和笔记本电脑之间定期同步联系人信息。考虑到不同设备的数据同步方法种类多,操作复杂,要在这些不同的设备之间保存和维护最新的一份联系人信息,你必须为此付很多的时间和精力。如果在云计算模式中,数据只有一份,保存在“云”的另一端,你的所有电子设备只需要连接互联网,就可以同时访问和使用同一份数据。

    4.可能无限多

    云计算为我们使用网络提供了几乎无限多的可能,为存储和管理数据提供了无限多的空间,也为我们完成各类应用提供了无限强大的计算能力。可以想像,当你驾车出游的时候,只要用手机连入网络,就可以直接看到自己所在地区的卫星地图和实时的交通状况,可以快速查询自己预设的行车路线,可以把自己拍摄的照片或视频发给远方的亲朋好友分享等。离开了云计算,使用单个电脑或手机,我们是无法享受这些便利的。单个电脑或其他电子设备不可能提供无限量的存储空间和计算能力,但在“云”的另一端,由数千万台服务器组成的庞大的集群却可以轻易地做到这一点。云计算的潜力是无限的。

    人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
    企业云计算的基本特征是什么,在建设过程中主要分为哪几个阶段?
    http://www.duozhishidai.com/article-13379-1.html
    云计算服务模式,主要分为哪几种?
    http://www.duozhishidai.com/article-13377-1.html
    云计算发展至今,主要面临哪些瓶颈?
    http://www.duozhishidai.com/article-13374-1.html


    多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

    多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
    展开全文
  • Megastore基本架构 ?核心技术复制 ?产品性能及控制措施 可用性分布情况 可用性分布情况 ?Megastore在Google中已经部署使用了若干年有超过100个产品使用Megastore作为其存储系统 ?从图中可以看出绝大多数产品具有极...
  • 是由Google提出这是一个美丽网络应用模式狭义云计算是指IT基础设施交付使用模式指通过网络以按需易扩展方式获得所需资源广义云计算是指服务交付使用模式指通过网络以按需易扩展方式获得所需服务...
  • 3.云技术 — 容器技术及容器基本原理 4.云原生 — 云计算、私有云、公用云、混合云 为什么要学习k8s? 1、互联网企业可以利用k8s构建一套自动化运维平台(运维工作:自愈、自动伸缩……) ---- 降本增效 2、...

    本章主题
    1、认识kubernetes (k8s) 在企业中应用场景? ----- 为什么要学习K8s??
    2、云技术(云计算平台) — 虚拟化及虚拟化基本概念及原理
    3、云技术(云计算平台) — 容器技术及容器技术基本概念及原理


    前言

    k8s 偏向运维技术 ,后端程序员为什么要学习k8s??

    • 1、以前项目开发:开发,运维是密不可分 — 上线 运维,开发密不可分
    • 2、开发&运维 结合更紧密 — DevOps — 流水线生产方式

    公司对程序员要求:

    • 高级程序员(研发公司):
      1、应用发布 (linux) — CI/CD — k8s
      2、运维
      3、线上故障排查能力
    • 技术主管:
      运维能力(熟练)
    • 技术专家:
      运维能力(精通)

    未来展望:

    • 1、所有的项目都是流水线生产方式 ---- 降本增效
    • 2、所有的项目都是容器化方式进行部署 — 迁移,充分利用服务器资源
    • 3、k8s对项目开发架构有影响,对项目架构有新的一些思考–serverless
      技术方向:容器编排技术非常火,成为当下项目开发流水线生产一个技术标准。(程序员必须了解,认识,精通)

    普及程度:

    • 1、一线城市很多公司都已经普及,构建了自己公司私有云环境。(阿里云,网易云…)
    • 2、还有很多公司没有普及:k8s非常难,学习曲线非常陡峭…

    认识kubernetes (k8s) 在企业中应用场景?----为什么要学习k8s?

    • 1、互联网企业可以利用k8s构建一套自动化的运维平台(运维工作:自愈、自动伸缩……) ---- 降本增效
    • 2、互联网企业,有很多服务器资源(物理机),为了充分利用服务器资源,使用k8s构建私有云环境,项目运行在云。
    • 3、项目开发中,产品需求不停的迭代,更新(产品)— 意味着项目不停的发布新的版本 — k8s可以实现项目从开发到生产无缝迁移。

    一、虚拟化

    1. 虚拟化基本概念及原理

    1.1 什么是虚拟化

    在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

    虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。

    在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用

    虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。

    虚拟化(英语:Virtualization)是一种资源管理技术,就是用来把物理资源(服务器,网络,硬件,CPU)进行隔离(分离)的一种技术。打破了物理资源不可分割障碍。

    1.2 虚拟化作用

    1.2.1 对高性能物理计算机的资源进行充分利用

    把性能强的物理机拆成多个虚拟机,每个虚拟机之间都是隔离的:
    在这里插入图片描述
    自己的应用只占用一台虚拟机资源即可,压力大的话也可以占用多台:
    在这里插入图片描述

    如果没有虚拟机化技术,在使用高性能计算机时候,存在大量的计算资源的浪费。使用虚拟化技术对物理资源进行隔离,把隔离的资源进行分配使用。虚拟化技术实际上就是对物理硬件资源的一种调度。

    1.2.2 对老旧硬件资源重组后再充分利用

    将老旧、性能低的多台服务器重组成高性能的云计算平台,提供分布式计算服务
    在这里插入图片描述

    1.3 虚拟化分类

    1.3.1 全虚拟化架构

    虚拟机的监视器(hypervisor)是类似于用户的应用程序运行在主机的OS之上,如VMware的workstation,这种虚拟化产品提供了虚拟的硬件。
    在这里插入图片描述

    Hardware Layer:硬件层
    Host OS:操作系统层
    Virtual Machine Manager:虚拟机管理器
    VM Management Software:虚拟机管理软件
    Virtual Hardware:虚拟硬件
    Guest OS:用户操作系统

    此架构是建立在操作系统上的

    1.3.2 OS层虚拟化架构

    在这里插入图片描述

    Hardware Layer:硬件层
    Host OS:操作系统层
    Virtualization Layer:虚拟化层

    docker容器化就是这种

    1.3.3 硬件层虚拟化

    在这里插入图片描述

    Hardware Layer:硬件层
    Virtual Machine Manager:虚拟机管理器
    Guest OS:用户操作系统

    直接在硬件层上虚拟化

    硬件层的虚拟化具有高性能和隔离性,因为hypervisor直接在硬件上运行,有利于控制VM的OS访问硬件资源,使用这种解决方案的产品有VMware ESXi 和 Xen server

    Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor,VMM)。

    Hypervisor是所有虚拟化技术的核心,非中断的支持多工作负载迁移是hypervisor的基本功能。当服务器启动并执行Hypervisor时,会给每一台虚拟机分配适量的内存、CPU、网络和磁盘资源,并加载所有虚拟机的客户操作系统。

    Hypervisor是所有虚拟化技术的核心,让软硬件架构和管理更高效、更灵活,硬件的效能能够更好地发挥出来。常见的产品有:VMware、KVM、Xen等等

    注意:资源隔离实际上使用的调度程序,把这些资源调度分配给os,这个调度程序叫hypervisor

    2. 虚拟化技术 —(构建云计算平台)

    目前你认为有几种方式构建云计算平台???

    • 物理机构建云计算机平台(机房建设,硬件选择,网络建设,环境维护…)
    • 虚拟化技术构建云计算平台
      • OpenStack:
        • 开源管理项目 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目.
        • 美国国家航天局 & RackSpace 开发 ,开源
          作用: 提供云平台的基础设施服务,让云平台管理,架构变得更简单。
      • KVM(Kernel-based Virtual Machine)基于linux内核的虚拟机
        • KVM 虚拟机技术,已经融入到linux内核。
      • VMWare
        • VMWare (Virtual Machine ware)是一个“虚拟PC”虚拟机管理管理软件

    2.1 OpenStack

    OpenStack:开源管理项目 OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个软件,而是由几个主要的组件组合起来完成一些具体的工作。OpenStack由以下五个相对独立的组件构成:

    • OpenStack Compute(Nova)是一套控制器,用于虚拟机计算或使用群组启动虚拟机实例;
    • OpenStack镜像服务(Glance)是一套虚拟机镜像查找及检索系统,实现虚拟机镜像管理;
    • OpenStack对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制,以对象为单位的存储系统,类似于Amazon S3;
    • OpenStack Keystone,用于用户身份服务与资源管理
    • OpenStack Horizon,基于Django的仪表板接口,是个图形化管理前端。

    这个起初由美国国家航空航天局和Rackspace在2010年末合作研发的开源项目,旨在打造易于部署、功能丰富且易于扩展的云计算平台。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性,企图成为数据中心的操作系统,即云操作系统。

    Openstack项目层级关系:
    在这里插入图片描述

    • 第一层是基础设施层,这一层主要包含Nova、Glance和Keystone,如果我们要想得到最基本的基础设施的服务,必须安装部署这三个项目。

    • 第二层是扩展基础设施层,这一层可以让我们得到更多跟基础设施相关的高级服务,主要包含Cinder、Swift、Neutron、Designate和Ironic等,其中Cinder提供块存储,Swift提供对象存储,Neutron提供网络服务,Designate提供DNS服务,Ironic提供裸机服务。

    • 第三层是可选的增强特性,帮用户提供一些更加高级的功能,主要包含Ceilometer、Horizon和Barbican,其中Ceilometer提供监控、计量服务,Horizon提供用户界面,Barbican提供秘钥管理服务。

    • 第四层主要是消费型服务,所谓的消费型服务,主要是指第四层的服务都需要通过使用前三层的服务来工作。

      第四层主要有Heat、Magnum、Sahara、Solum和Murano等,其中Heat主要提供orchestration服务,Magnum主要提供容器服务,Sahara主要提供大数据服务,我们可以通过Sahara很方便地部署Hadoop、Spark集群。Solum主要提供应用开发的服务,并且可以提供一些类似于CI/CD的功能。Muarno主要提供应用目录的服务,类似于App Store,就是用户可以把一些常用的应用发布出来供其他用户去使用。最右边是Kolla,Kolla的主要功能是容器化所有的OpenStack服务,便于OpenStack安装部署和升级。

    2.2 KVM

    KVM(Kernel-based Virtual Machine)基于内核的虚拟机 KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。 KVM最大的好处就在于它是与Linux内核集成的,所以速度很快。
    在这里插入图片描述

    2.3 VMWARE

    VMWare (Virtual Machine ware)是一个“虚拟PC”虚拟机管理软件。它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。

    与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。


    二、容器化(容器技术基本概念及原理)

    有了虚拟化技术,为什么还需要使用容器化技术构建云计算平台??

    • KVM虚拟化在同等CPU,内存,IO,网络,运行相同服务,占用资源非常大。
    • 容器化技术 就是非常轻量级资源隔离技术,容器化镜像小道几KB,达到几百M,隔离性没有虚拟机彻底

    1. 容器发展史

    1.1 Chroot

    容器技术的概念可以追溯到1979年的UNIX Chroot。这项功能将Root目录及其它子目录变更至文件系统内的新位置,且只接受特定进程的访问,其设计目的在于为每个进程提供一套隔离化磁盘空间。1982年其被添加至BSD。
    在这里插入图片描述

    chroot只是提供了对进程文件目录虚拟化的功能,不能够防止进程恶意访问系统。这个问题在FreeBSDGails容器技术中得以解决

    根据目录来进行隔离

    1.2 FreeBSD Jails

    FreeBSD Jails与Chroot的定位类似,不过其中包含有进程沙箱机制以对文件系统、用户及网络等资源进行隔离。通过这种方式,它能够为每个Jail、定制化软件安装包乃至配置方案等提供一个对应的IP地址。Jails技术为FreeBSD系统提供了一种简单的安全隔离机制。它的不足在于这种简单性的隔离也同时会影响Jails中应用访问系统资源的灵活性。
    在这里插入图片描述

    给目录分配一个网络地址,可以对目录进行隔离。

    1.3 Solaris Zones

    Solaris Zone技术为应用程序创建了虚拟的一层,让应用在隔离的Zone中运行,并实现有效的资源管理。每一个Zone 拥有自己的文件系统,进程空间,防火墙,网络配置等等。

    Solaris Zone技术真正的引入了容器资源管理的概念。在应用部署的时候为Zone配置一定的资源,在运行中可以根据Zone的负载动态修改这个资源限制并且是实时生效的,在其他Zone不需要资源的时候,资源会自动切换给需要的资源的Zone,这种切换是即时的不需要人工干预的,最大化资源的利用率,在必要的情况下,也可以为单个Zone隔离一定的资源。
    在这里插入图片描述

    已经实现了隔离,每一个空间都有独立存储,网络,防火墙.

    1.4 LXC

    LXC指代的是Linux Containers,其功能通过Cgroups以及Linux Namespaces实现。也是第一套完整的Linux容器管理实现方案。在LXC出现之前, Linux上已经有了类似 Linux-Vserver、OpenVZ 和 FreeVPS。虽然这些技术都已经成熟,但是这些解决方案还没有将它们的容器支持集成到主流 Linux 内核。相较于其它容器技术,LXC能够在无需任何额外补丁的前提下运行在原版Linux内核之上。目前LXC项目由Canonical有限公司负责赞助及托管。

    在这里插入图片描述

    lxc底层通过Cgroups以及Linux Namespaces实现,是基于进程资源的隔离,不是物理资源的隔离,隔离的模式没有虚拟化技术隔离的更彻底。

    1.5 Docker(2013)

    Docker项目最初是由一家名为DotCloud的平台即服务厂商所打造,其后该公司更名为Docker。Docker在起步阶段使用LXC,而后利用自己的Libcontainer库将其替换下来。与其它容器平台不同,Docker引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、一个精简化REST API以及一套命令行界面等等。

    与Docker具有同样目标功能的另外一种容器技术就是CoreOS公司开发的Rocket. Rocket基于App Container规范并使其成为一项更为开放的标准。
    在这里插入图片描述

    docker底层就是LXC,虽然后来换成Libcontainer,但其底层还是通过Cgroups以及Linux Namespaces实现

    2. Docker容器

    2.1 Docker历史

    2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。
    在这里插入图片描述
    这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。LXC,就是Linux容器虚拟技术(Linux container)、后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。

    Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。正当他们快要坚持不下去的时候,脑子里蹦出了“开源”的想法。

    什么是“开源”?开源,就是开放源代码。也就是将原来内部保密的程序源代码开放给所有人,然后让大家一起参与进来,贡献代码和意见。(Open Source,开源)

    有的软件是一开始就开源的。也有的软件,是混不下去,创造者又不想放弃,所以选择开源。自己养不活,就吃“百家饭”嘛。

    2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。

    不开则已,一开惊人。

    越来越多的IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。

    Docker的人气迅速攀升,速度之快,令人瞠目结舌。

    开源当月,Docker 0.1版本发布。此后的每一个月,Docker都会发布一个版本。到2014年6月9日,Docker 1.0版本正式发布。

    此时的Docker,已经成为行业里人气最火爆的开源技术,没有之一。甚至像Google、微软、Amazon、VMware这样的巨头,都对它青睐有加,表示将全力支持。

    Docker火了之后,dotCloud公司干脆把公司名字也改成了Docker Inc。

    Docker和容器技术为什么会这么火爆?说白了,就是因为它“轻”。

    2.2 Docker原理

    容器是一种轻量级的虚拟化技术,因为它跟虚拟机比起来,它少了一层 hypervisor 层。先看一下下面这张图,这张图简单描述了一个容器的启动过程。

    在这里插入图片描述
    最下面是一个磁盘,容器的镜像是存储在磁盘上面的。上层是一个容器引擎,容器引擎可以是 docker,也可以是其它的容器引擎。引擎向下发一个请求,比如说创建容器,这时候它就把磁盘上面的容器镜像运行成在宿主机上的一个进程。

    对于容器来说,最重要的是怎么保证这个进程所用到的资源是被隔离和被限制住的,在 Linux 内核上面是由 cgroup 和 namespace 这两个技术来保证的

    docker是基于cgroup、namespace 进程隔离的技术

    容器 = cgroup + namespace + rootfs + 容器引擎

    • Cgroup: 资源控制
    • namespace: 访问隔离
    • rootfs:文件系统隔离。镜像的本质就是一个rootfs文件
    • 容器引擎:生命周期控制

    2.3 Cgroup

    Cgroup 是 Control group 的简称,是 Linux 内核提供的一个特性,用于限制和隔离一组进程对系统资源的使用。对不同资源的具体管理是由各个子系统分工完成的。
    在这里插入图片描述
    Cgroup 可以对进程进行任意分组,如何分组由用户自定义。

    子系统介绍:

    2.3.1 cpuset 子系统

    cpuset 可以为一组进程分配指定的CPU和内存节点。 cpuset 一开始用在高性能计算上,在 NUMA(non-uniform memory access) 架构的服务器上,通过将进程绑定到固定的 CPU 和内存节点上,来避免进程在运行时因跨节点内存访问而导致的性能下降。

    cpuset 的主要接口如下:

    • cpuset.cpus: 允许进程使用的CPU列表
    • cpuset.mems: 允许进程使用的内存节点列表

    2.3.2 cpu 子系统

    cpu 子系统用于限制进程的 CPU 利用率。具体支持三个功能
    第一,CPU 比重分配。使用 cpu.shares 接口。
    第二,CPU 带宽限制。使用 cpu.cfs_period_us 和 cpu.cfs_quota_us 接口。
    第三, 实时进程的 CPU 带宽限制。使用 cpu_rt_period_us 和 cpu_rt_quota_us 接口。

    2.3.3 cpuacct 子系统

    统计各个 Cgroup 的 CPU 使用情况,有如下接口:

    • cpuacct.stat: 报告这个 Cgroup 在用户态和内核态消耗的 CPU 时间,单位是 赫兹
    • cpuacct.usage: 报告该 Cgroup 消耗的总 CPU 时间。
    • cpuacct.usage_percpu:报告该 Cgroup 在每个 CPU 上的消耗时间。

    2.3.4 memory 子系统

    限制 Cgroup 所能使用的内存上限。

    • memory.limit_in_bytes:设定内存上限,单位字节。
      默认情况下,如果使用的内存超过上限,Linux 内核会试图回收内存,如果这样仍无法将内存降到限制的范围内,就会触发 OOM,选择杀死该Cgroup 中的某个进程。
    • memory.memsw,limit_in_bytes: 设定内存加上交换内存区的总量。
    • memory.oom_control: 如果设置为0,那么内存超过上限时,不会杀死进程,而是阻塞等待进程释放内存;同时系统会向用户态发送事件通知。
    • memory.stat: 报告内存使用信息。

    2.3.5 blkio 子系统

    限制 Cgroup 对 阻塞 IO 的使用。

    • blkio.weight: 设置权值,范围在[100, 1000],属于比重分配,不是绝对带宽。因此只有当不同 Cgroup 争用同一个 阻塞设备时才起作用
    • blkio.weight_device: 对具体设备设置权值。它会覆盖上面的选项值。
    • blkio.throttle.read_bps_device: 对具体的设备,设置每秒读磁盘的带宽上限。
    • blkio.throttle.write_bps_device: 对具体的设备,设置每秒写磁盘的带宽上限。
    • blkio.throttle.read_iops_device: 对具体的设备,设置每秒读磁盘的IOPS带宽上限。
    • blkio.throttle.write_iops_device: 对具体的设备,设置每秒写磁盘的IOPS带宽上限。

    2.3.6 devices 子系统

    控制 Cgroup 的进程对哪些设备有访问权限

    • devices.list: 只读文件,显示目前允许被访问的设备列表,文件格式为
      类型[a|b|c] 设备号[major:minor] 权限[r/w/m 的组合]
      a/b/c 表示 所有设备、块设备和字符设备。
    • devices.allow: 只写文件,以上述格式描述允许相应设备的访问列表。
    • devices.deny: 只写文件,以上述格式描述禁止相应设备的访问列表。

    2.4 NameSpace

    Namespace 是将内核的全局资源做封装,使得每个namespace 都有一份独立的资源,因此不同的进程在各自的namespace内对同一种资源的使用互不干扰。

    举个例子,执行sethostname这个系统调用会改变主机名,这个主机名就是全局资源,内核通过 UTS Namespace可以将不同的进程分隔在不同的 UTS Namespace 中,在某个 Namespace 修改主机名时,另一个 Namespace 的主机名保持不变。

    目前,Linux 内核实现了6种 Namespace。
    在这里插入图片描述
    与命名空间相关的三个系统调用:

    • clone:创建全新的Namespace,由clone创建的新进程就位于这个新的namespace里。创建时传入 flags参数,可选值有 CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWUSER, 分别对应上面六种namespace。
    • unshare:为已有进程创建新的namespace。
    • setns:把某个进程放在已有的某个namespace里。

    namespace 是用来做资源隔离的,在 Linux 内核上有七种 namespace,docker 中用到了前六种。第七种 cgroup namespace 在 docker 本身并没有用到,但是在 runC 实现中实现了 cgroup namespace(即在运行状态用到了cgroup namespace)
    在这里插入图片描述

    • 第一个是 mout namespace。mout namespace 就是保证容器看到的文件系统的视图,是容器镜像提供的一个文件系统,也就是说它看不见宿主机上的其他文件,除了通过 -v 参数 bound 的那种模式,是可以把宿主机上面的一些目录和文件,让它在容器里面可见的;

      隔离文件挂载点,每个进程能看到的文件系统都记录在/proc/$$/mounts里。在一个 namespace 里挂载、卸载的动作不会影响到其他 namespace。

    • 第二个是 uts namespace,这个 namespace 主要是隔离了 hostname 和 domain;

      UTS namespace 对主机名和域名进行隔离。为什么要隔离主机名?因为主机名可以代替IP来访问。如果不隔离,同名访问会出冲突。

    • 第三个是 pid namespace,这个 namespace 是保证了容器的 init 进程是以 1 号进程来启动的;

      隔离进程号,不同namespace 的进程可以使用相同的进程号。
      当创建一个 PID namespace 时,第一个进程的PID 是1,即 init 进程。它负责回收所有孤儿进程的资源,所有发给 init 进程的信号都会被屏蔽。

    • 第四个是网络 namespace,除了容器用 host 网络这种模式之外,其他所有的网络模式都有一个自己的 network namespace 的文件;

      隔离网络资源。每个 namespace 都有自己的网络设备、IP、路由表、/proc/net 目录、端口号等。网络隔离可以保证独立使用网络资源,比如开发两个web 应用可以使用80端口。
      新创建的 Network namespace 只有 loopback 一个网络设备,需要手动添加网络设备。

    • 第五个是 user namespace,这个 namespace 是控制用户 UID 和 GID 在容器内部和宿主机上的一个映射,不过这个 namespace 用的比较少;

      隔离用户和用户组。它的厉害之处在于,可以让宿主机上的一个普通用户在 namespace 里成为 0 号用户,也就是 root 用户。这样普通用户可以在容器内“随心所欲”,但是影响也仅限在容器内。

    • 第六个是 IPC namespace,这个 namespace 是控制了进程间通信的一些东西,比方说信号量;

      Linux 提供很多种进程通信机制,IPC namespace 针对 System V 和 POSIX 消息队列,这些 IPC 机制会使用标识符来区别不同的消息队列,然后两个进程通过标识符找到对应的消息队列。
      IPC namespace 使得 相同的标识符在两个 namespace 代表不同的消息队列,因此两个namespace 中的进程不能通过 IPC 来通信。

    • 第七个是 cgroup namespace,用 cgroup namespace 带来的一个好处是容器中看到的 cgroup 视图是以根的形式来呈现的,这样的话就和宿主机上面进程看到的 cgroup namespace 的一个视图方式是相同的;另外一个好处是让容器内部使用 cgroup 会变得更安全。

    2.5 rootfs

    rootfs 代表一个 Docker 容器在启动时(而非运行后)其内部进程可见的文件系统视角,或者叫 Docker 容器的根目录。

    先来看一下,Linux 操作系统内核启动时,内核会先挂载一个只读的 rootfs,当系统检测其完整性之后,决定是否将其切换到读写模式。

    Docker 沿用这种思想,不同的是,挂载rootfs 完毕之后,没有像 Linux 那样将容器的文件系统切换到读写模式,而是利用联合挂载技术,在这个只读的 rootfs 上挂载一个读写的文件系统,挂载后该读写文件系统空空如也。Docker 文件系统简单理解为:只读的 rootfs + 可读写的文件系统。

    假设运行了一个 Ubuntu 镜像,其文件系统简略如下
    在这里插入图片描述
    在容器中修改用户视角下文件时,Docker 借助 COW(copy-on-write) 机制节省不必要的内存分配。

    三、Docker&KVM&OpenStack比较

    1. Docker&KVM

    VM 利用 Hypervisor 虚拟化技术来模拟 CPU、内存等硬件资源,这样就可以在宿主机上建立一个 Guest OS,这是常说的安装一个虚拟机。
    在这里插入图片描述
    每一个 Guest OS 都有一个独立的内核,比如 Ubuntu、CentOS 甚至是 Windows 等,在这样的 Guest OS 之下,每个应用都是相互独立的,VM 可以提供一个更好的隔离效果。但这样的隔离效果需要付出一定的代价,因为需要把一部分的计算资源交给虚拟化,这样就很难充分利用现有的计算资源,并且每个 Guest OS 都需要占用大量的磁盘空间,比如 Windows 操作系统的安装需要 10~30G 的磁盘空间,Ubuntu 也需要 5~6G,同时这样的方式启动很慢。正是因为虚拟机技术的缺点,催生出了容器技术。

    容器是针对于进程而言的,因此无需 Guest OS,只需要一个独立的文件系统提供其所需要文件集合即可。所有的文件隔离都是进程级别的,因此启动时间快于 VM,并且所需的磁盘空间也小于 VM。当然了,进程级别的隔离并没有想象中的那么好,隔离效果相比 VM 要差很多。

    总体而言,容器和 VM 相比,各有优劣,因此容器技术也在向着强隔离方向发展。

    Docker提供了一种程序运行的容器,同时保证这些容器相互隔离。虚拟机也有类似的功能,但是它通过Hypervisor创建了一个完整的操作系统栈。不同于虚拟机的方式,Docker依赖于Linux自带的LXC(Linux Containers)技术。LXC利用了Linux可以对进程做内存、CPU、网络隔离的特性。Docker镜像不需要新启动一个操作系统,因此提供了一种轻量级的打包和运行程序的方式。而且Docker能够直接访问硬件,从而使它的I/O操作比虚拟机要快得多。

    疑问:

    Docker可以直接跑在物理服务器上,这引起大家的疑问:假如已经用了Docker,还有必要使用OpenStack吗?

    Docker和KVM的性能测试对比图表。和预期的一样,启动KVM和Docker容器的时间差异非常显著,而且在内存和CPU利用率上,双方差距非常大,如下表所示。
    在这里插入图片描述
    双方巨大的性能差异,导致了在相同工作负载下,KVM需要更多的CPU和内存资源,导致成本上升。

    2. KVM&openstack

    在这里插入图片描述
    openstack是云管理平台,其本身并不提供虚拟化功能,真正的虚拟化能力是由底层的hypervisor(如KVM、Qemu、Xen等)提供。所谓管理平台,就是为了方便使用而已。如果没有openstack,一样可以通过virsh、virt-manager来实现创建虚拟机的操作,只不过敲命令行的方式需要一定的学习成本,对于普通用户不是很友好。

    KVM是最底层的hypervisor,是用来模拟CPU的运行,然而一个用户能在KVM上完成虚拟机的操作还需要network及周边的I/O支持,所以便借鉴了qemu进行一定的修改,形成qemu-kvm。但是openstack不会直接控制qemu-kvm,会用一个libvirt的库去间接控制qemu-kvm。qemu-kvm的地位就像底层驱动来着。

    OpenStack:开源管理项目

    OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它不是一个软件,而是由几个主要的组件组合起来完成一些具体的工作。OpenStack由以下五个相对独立的组件构成:

    • OpenStack Compute(Nova)是一套控制器,用于虚拟机计算或使用群组启动虚拟机实例;
    • OpenStack镜像服务(Glance)是一套虚拟机镜像查找及检索系统,实现虚拟机镜像管理;
    • OpenStack对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制,以对象为单位的存储系统,类似于Amazon S3;
    • OpenStack Keystone,用于用户身份服务与资源管理以及
    • OpenStack Horizon,基于Django的仪表板接口,是个图形化管理前端。

    这个起初由美国国家航空航天局和Rackspace在2010年末合作研发的开源项目,旨在打造易于部署、功能丰富且易于扩展的云计算平台。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性,企图成为数据中心的操作系统,即云操作系统。

    KVM:开放虚拟化技术

    KVM(Kernel-based Virtual Machine)是一个开源的系统虚拟化模块,它需要硬件支持,如Intel VT技术或者AMD V技术,是基于硬件的完全虚拟化,完全内置于Linux。

    2008年,红帽收购Qumranet获得了KVM技术,并将其作为虚拟化战略的一部分大力推广,在2011年发布RHEL6时支持KVM作为唯一的hypervisor。KVM主打的就是高性能、扩展性、高安全,以及低成本。

    与Linux的缘分

    一个被某些热心支持者成为云时代的Linux,是公有云与私有云的开源操作系统。一个则是Linux内核的一部分,将Linux转换成一个Type-1 hypervisor,无需任何变更就能享受现有的Linux内核进程调度、内存管理和设备支持。

    OpenStack炙手可热,它如同Linux一样,旨在构建一个内核,所有的软件厂商都围绕着它进行工作。OpenStack的许多子项目,对云计算平台中的各种资源(如计算能力、存储、网络)提供敏捷管理。此外,OpenStack也提供对虚拟化技术的支持。

    KVM集成在Linux的各个主要发行版本中,使用Linux自身的调度器进行管理。KVM专注于成为最好的虚拟机监控器,是使用Linux企业的不二选择,加上它还支持Windows平台,所以也是异构环境的最佳选择。

    OpenStack与KVM都发展迅猛

    OpenStack是一个拥有众多支持者的大项目。时至今日,已经有超过180家企业和400多位开发人员对这一项目积极地做着贡献,而其生态系统甚至更为庞大,已经超过了5600人和850家机构。在今年9月,OpenStack基会正式成立。白金会员有红帽、IBM与惠普等,黄金会员包括思科、戴尔与英特尔等。

    OpenStack基本上是一个软件项目,有近55万行代码。分解成核心项目、孵化项目,以及支持项目和相关项目。除了以上提及的五大组成,与虚拟网络有关的Quantum首次被列为核心项目。

    KVM是一个脱颖而出的开放虚拟化技术。它是由一个大型的、活跃的开放社区共同开发的,红帽、IBM、SUSE等都是其成员。2011年,IBM、红帽、英特尔与惠普等建立开放虚拟化联盟(OVA),帮助构建KVM生态系统,提升KVM采用率。如今,OVA已经拥有超过250名成员公司,其中,IBM有60多位程序员专门工作于KVM开源社区。

    3. Docker&openstack

    OpenStack和Docker之间是很好的互补关系。Docker的出现能让IaaS层的资源使用得更加充分,因为Docker相对虚拟机来说更轻量对资源的利用率会更加充分;
    在这里插入图片描述

    云平台提供一个完整管理数据中心的解决方案,至于用哪种hypervisor或container只是云平台中的一个小部分。像OpenStack这样的云平台包含了多租户的安全、隔离、管理、监控、存储、网络等其他部分。云数据中心的管理需要很多服务支撑,但这和用Docker还是KVM其实没多大关系。

    Docker不是一个全功能的VM, 它有很多严重的缺陷,比如安全、Windows支持,因此不能完全替代KVM。现在Docker社区一直在弥补这些缺陷,当然这会带来一定的性能损耗。

    4. 总结

    • openstack 主要用于云计算平台管理,同时提供一些基础设施一些管理服务。
    • KVM 虚拟化技术 — 可以利用虚拟化技术构建云计算平台
    • docker 和 openstack 可以形成优势互补。
      docker是一个非常轻量级的容器技术,使用容器技术构建云平台,充分利用服务资源,性能非常高
      OpenStack可以管理基础设置服务。基础设施服务构建交给openstack
    展开全文
  • 云计算及应用教学大纲 课程编号 课程名称 云计算及应用 Cloud Computing and Application 课程性质...了解 支持云计算的主要产品和工具以及掌握其技术原理和应用方法 了解云计算的主要研究 热点与应用领域 认清云计算的
  • 云计算及应用教学大纲 课程编号 课程名称 云计算及应用 Cloud Computing and Application 课程性质 ...了解 支持云计算的主要产品和工具以及掌握其技术原理和应用方法 了解云计算的主要研究 热点与应用领域 认清云计算
  • 云计算目录

    2019-09-29 08:20:50
    云计算目录基本原理和概念“云计算”时代云计算的几大形式云计算四个显著特点云计算的商业现状测试:判断是否是云计算的十五种方法云计算的20个基本定义与90'sNetPC的渊源云计算现有几个主要应用云计算现有几个主要...
  • 云计算

    2018-04-15 22:15:00
    云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机存储系统。这可是...
  • 第八章、云计算原理与技术 ...云计算的一种利用互联网实现随时随地/按需/便捷地访问共享资源池(如计算设施,存储设备,应用程序等)的计算形式 云计算模式共有5个基本特征: 按需自助服务,广泛的网络访问,...
  • 云计算技术及应用.rar

    2019-07-09 08:12:45
    2.1 云计算的基本概念主要特征....................................3 2.1.1 云计算的提出...............................................3 2.1.2 云计算的定义................................................
  • 基于云计算的物联网关键技术...据需要获取计算力存储空间各种软件服务云计算是并行计 算分布式计算网格计算的发展或者说是这些计算机科学概 念的商业实现 1.2 云计算的原理 云计算的基本原理是通过使计算分布在大
  • 基于云计算的物联网关键技术学习报告 ...据需要获取计算力 存储空间各种软件服务 云计算是并行计 算分布式计算网格计算的发展 或者说是这些计算机科学概 念的商业实现 1.2 云计算的原理 云计算的基本原理是 通过使
  • 云计算介绍 云计算是一种新兴的基于互联网的商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种...云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企...
  • PAGE PAGE #/ 8 xx 计算运维管理的要点改进方法解析 云计算在企业运营中的基本工作原理是将计算分布在大量分布式计算机 中从而使企业数据中心的运行互联网更为相 似通过云计算的运维管理企业不仅能够实现对 IT ...
  • 基于云计算的物联网关键技术...据需要获取计算力存储空间各种软件服务云计算是并行计 算分布式计算网格计算的发展或者说是这些计算机科学概 念的商业实现 1.2 云计算的原理 云计算的基本原理是通过使计算分布在大
  • 大话云计算

    2014-08-06 10:28:58
     《大话云计算》使用大量的漫画、故事、笑话、网络流行语、相声小品台词等生动风趣的语言,采取比喻、夸张、排比、拟人等多种表现手法,以独特的视角深入浅出地为大家解读了云计算的特点、原理和应用,通过大量实例...
  • 介绍了存储虚拟化的基本原理和虚拟存储的分类.并分析了虚拟存储在云计算中的应用,及其 在病毒样本提取,软件测试等反病毒领域的重大意叉。最后.分析了虚拟存储的未来前景及发展方向。 l概述 存储虚拟化已经被...
  • 云计算之git应用

    2019-05-24 14:28:50
    对于代码管理工具来说,git无疑拥有举足轻重作用,接下来,我将会讲解一下git服务端客户端的应用。下图如工作原理图: 一、Git基本操作 1.部署Git服务器 1.安装git软件 [root@gitserver ~]# yum -y ...
  • 2.1 云计算的基本概念主要特征....................................3 2.1.1 云计算的提出...............................................3 2.1.2 云计算的定义................................................
  • 大话云计算扫描版

    2018-04-23 22:39:37
    《大话云计算》使用大量的漫画、故事、笑话、网络流行语、相声小品台词等生动风趣的语言,采取比喻、夸张、排比、拟人等多种表现手法,以独特的视角深入浅出地为大家解读了云计算的特点、原理和应用,通过大量实例和...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 136
精华内容 54
关键字:

云计算的基本原理和应用