OpenStack、KVM、VMWare和Docker

一、虚拟化

1.什么是虚拟化

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

2.什么是虚拟化技术

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

3.虚拟化的类型

  • 全虚拟化(Full Virtualization)

    全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机。

  • 半虚拟化(Para Virtualization)

    半虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

二、OpenStack与KVM、VMWare

1.OpenStack:开源管理项目

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

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

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

2.KVM(Kernel-based Virtual Machine)基于内核的虚拟机

KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。

KVM最大的好处就在于它是与Linux内核集成的,所以速度很快。

3.VMWare (Virtual Machine ware)

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

三、OpenStack与VMWare

1.设计

VMware软件套件是自底向上的架构,下端边界为虚拟机管理器。像VMware的vSphere和vCloud director产品都是依赖于免费的ESX(i) 虚拟机管理器, ESX(i)虚拟机管理器为他们提供了非常优秀的部署架构。

VMware的软件系统是封闭的,并且软件的发展路线是完全遵循VMware自己的发展目标,用户或消费者在此方面没有任何控制权。

OpenStack作为一个开源系统,没有任何一家单独的公司在控制OpenStack的发展路线。

2.功能

(1)VMware vMotion

vMotion是vSphere DRS、DPM和主机维护三大功能的合集。其中虚拟机动态迁移允许将一台虚拟机在零关机的情况下由一台宿主机迁移到另一台上,这原本是需要共享存储的支持的,但在vSphere 5.1中,VMware已经不需要通过共享存储实现动态迁移了。当一台虚拟机由一个宿主机迁移到另一个上时,虚拟机的内存状态和数据都要同步迁移过去。如果是共享存储的情况,实际上数据是不需要进行迁移的,只需要变化指向数据存储的链接而已。这在加速了迁移速度的同时也减少了在复制过程中网络的负载。

(2)OpenStack 动态迁移

KVM动态迁移允许一个虚拟机由一个虚拟机管理器迁移到另一个,说的详细一点,你可以来来回回将一台虚拟机在AMD架构主机与Intel架构主机上进行迁移,但是需要注意的是,64位的虚拟主机只能被迁移到64位的宿主机上,但是32位的则有32位和64位两种选择。在动态迁移过程中,不能再对虚拟机进行操作,但是虚拟机内的用户还是可以在虚拟机内部继续进行工作的。KVM主要还是依赖于共享存储,某种程度上,这相对来说是需要一些资金投入的。

(3)OpenStack块存储迁移

在OpenStack当中,KVM支持块存储迁移,这也就是说虚拟机迁移不是必须需要共享存储的支持的。在块迁移的场景下,虚拟机的内存状态与数据都将被迁移,但是迁移操作也需要消耗两端的CPU资源并且操作花费时间较比共享存储来说要长一些。在某些用户场景当中,如果我们比较关注于主机的可维护性,并且不想花费过多经费,那么应用块存储迁移将是好的解决方案。同时,如果在没有共享存储的环境中,我们想对计算节点进行内核维护、安全升级,那么保证虚拟机服务不被打断,块存储迁移也是理想选择。

(4)VMware DRS 和 DPM

基于vMotion,DRS可以动态监控虚机机及宿主机的当前使用状况,并且为宿主机的负载均衡提供支持。

基于vMotion, DPM将虚拟机从低负载宿主机迁移掉,并且关闭以达到减少电能损耗。当负载增长,DPM将宿主机重启,并且部署新的虚拟机以满足负载需要。

(5)OpenStack调度器

OpenStack包含了对于compute和volume的调度器,通过一系列的管理员设定的规则参数和过滤器,OpenStack调度器将虚拟机部署到合适的宿主机上。在过滤器方面,调度器是非常灵活的,用户可以自己完成JSON格式的过滤器,并且过滤器还包含很多预定义的过滤器。虽然OpenStack调度器非常灵活,但是还是不能完全替代DRS,原因如下:

  • 调度器用于选择哪个宿主机进行虚拟机部署的静态参考数据来源于Nova的数据库。换句话说,就是发现宿主机已经有了4台虚拟机了,那么我们需要选择一个新的宿主机去部署下一台虚拟机。
  • 调度器只能在虚拟机部署阶段影响部署的位置,一旦部署完成,虚拟机运行后则无法挪动虚拟机了。如果需要基于动态数据进行调度,那么调度器需要与外部监控解决方案如Nagios合作。总而言之,目前OpenStack调度器将只会对部署虚拟机环节有影响。

(6)High Availability(高可用)

在vSphere中,虚拟机级别的高可用性是允许在虚拟机或者ESX(i)主机出错时,在不同宿主机部署相同的虚拟机。这里不要和容错(FT)机制混淆,高可用的意义在于当有一些东西出错了,可以在一定时间内自我修复。高可用是在硬件出问题的时候保证虚拟机的正常个工作,如果真的出错了,那么只能在不同的ESX(i)主机上启动虚拟机,这也可能造成服务的中断。

目前并没有官方声明OpenStack支持虚拟机级别的高可用性,这个特性在Folsom版本被提出,但是后续又被放弃了。目前OpenStack有一个孵化项目Evacuate, 其作用是为OpenStack提供虚拟机级别高可用支持。

(7)Fault Tolerance(容错)

VMware容错机制是通过监控虚拟机的状态和所有变化,将这些变化同步到第二台备份ESX(i)服务器之上。容错的概念在于无论是主还是从宿主机出现问题,只要一方能正常工作,那么宿主机上的虚拟机都保持正常工作。

在OpenStack中没有针对于容错的功能,并且截至目前也没有计划去完成这些功能。未来,KVM也不再支持镜像操作功能。

四、OpenStack与Docker

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

Docker主要针对Paas平台,是以应用为中心。OpenStack主要针对Iaas平台,以资源为中心,可以为上层的PaaS平台提供存储、网络、计算等资源。

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安装部署和升级。

OpenStack中和Docker有关系的项目

主要包括Nova、Heat、Magnum、Sahara、Solum、Murano和Kolla等。由图3得知,和Docker相关的大部分项目都在PaaS和SaaS层。

(1)Nova Docker Driver

这个Driver是OpenStack和Docker的第一次集成,主要是把Docker作为一种新的Hypervisor来处理,把所有的Container当成VM来处理。提供了一个Docker的Nova Compute Driver,集成很简单,通过Docker REST API来操作Container。

(2)Heat Docker Driver

因为Nova Docker Driver不能使用Docker的一些高级功能,所以社区就想了另一个方法,和Heat去集成。

因为Heat采用的也是插件模式,所以就在Heat实现了一个新的Resource,专门来和Docker集成。这个Heat插件是直接通过REST API和Docker交互的,不需要和Nova、Cinder和Neutron等来进行交互。

(3)Magnum

在OpenStack和Docker集成的过程中,我们发现从OpenStack现有的项目中,找不到一个很好的集成点,虽然和Nova、Heat都做了集成的尝试,但缺点很明显,所以社区就开始了一个新的专门针对Docker和OpenStack集成的项目Magnum,用来提供容器服务。

Mangum的主要目的是提供Container服务的,它同时还可以和多个Docker集群管理系统集成,包括K8S、Swarm、CoreOS等。和这几个平台集成的主要原因是能让用户可以很方便地通过OpenStack云平台来集成K8S、CoreOS、Swarm这些已经很成型的Docker集群管理系统,促进Docker和OpenStack生态系统的融合。

(4)Murano

Murano是Mirantis贡献的,并且也进了OpenStack Namespace。也和K8S集成了,用户可以通过Murano使用K8S的功能,可以通过Murano部署Pod、Service、Replication Controller等。Murano主要是在OpenStack基础上提供应用目录服务。Muarno和Solum之间其实是有关系的,Solum主要是用来开发应用的,Solum把应用开发完后,可以通过Murano来发布。用户可以通过Murano挑选自己需要的应用服务,通过应用服务组合构建自己的应用。

参考文章:

http://www.4u4v.net/shen-du-jie-xi-docker-he-openstack-xi-tong-ji-cheng.html

原文地址:https://www.cnblogs.com/tongxiaoda/p/8559259.html

时间: 2024-10-07 09:11:52

OpenStack、KVM、VMWare和Docker的相关文章

openstack与VMware workStation的区别

免责声明:     本文中使用的部分图片来自于网络,如有侵权,请联系博主进行删除 最近一直在研究云计算,恰好有个同事问了我一个问题:你们研究的openstack到底是什么东西?跟VMware Workstation到底有什么区别? 忽然之间觉得这个问题问题的太好了,现在关于云计算的概念太多了,很多概念都没有很严谨的解释,因此根据个人的理解做一个简单的总结.   首先:"虚拟化"其实有很多分类,比如虚拟化技术,虚拟机软件,IaaS层虚拟化解决方案.甚至java虚拟机之类的东西也可以划到虚

openstack对接VMware浅析

前言 本文是对openstack对接vmware的浅析,所以本文重点是以下两点: 先了解它的整体架构,搞清楚为什么要用这样的架构: 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互 整体架构 先上图,了解下openstack结合VMware的整体架构. 工作原理和流程: 虚机如何启动? 前端BC-OP或者Horizon发送http请求给Rest api,Nova api 通过RPC Call(Rabbitmq)请求scheduler选择合适的nova-compute,到此为止,

Openstack 干掉 VMWare(2)

上一篇文章"Openstack 干掉 VMWare(1)"总体说了一下使用开源版本openstack与vmware的一些比较,注意我说的是开源版本的openstack,至于各个商业版本的openstack,比如华为的FunsionCloud,什么青云QingCloud不在我的讨论范围,他们也没有付给我工资替他们做广告,哈哈,得出的初步结论就是通过openstack开源社区的努力,现在开源版的openstack已经具备了实际落地各中小企业,干掉vmware的条件,让广大人民群众用上自己的

openstack kvm cannot set up guest memory 'pc.ram': Cannot allocate memory

Kvm:启动报错:error: internal error: process exited while connecting to monitor: 2018-11-12T01:47:14.993371Z qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory 今天有台kvm挂了,物理机启动时报错 很明显看报错显示内存不足,无法分配内存,查看物理机内存使用正常,.xml修改虚机内存后启动依然

Openstack+KVM+Ceph+Docker 集成云计算中

对于以基础架构即服务形式部署和设计云计算产品的公司而言,数据复制和存储机制仍然是确保为客户提供完整性和服务连续性的实际前提条件.云计算提供了一种模型,其中数据的位置没有其他基础架构模型中那么重要(比如在一些模型中,公司直接拥有昂贵的存储硬件).Ceph 是一个开源.统一.分布式的存储系统,提供了一种便捷方式来部署包含商用硬件.低成本且可大规模扩展的存储平台.了解如何创建一个 Ceph 集群(从单一点实现对象.块和文件存储).Ceph 的算法和复制机制,以及如何将它与您的云数据架构和模型相集成.作

migration vmware vms to openstack kvm 修改vmware windows scsi to ide

如何把VMware Workstation使用的虚拟SCSI磁盘转换成虚拟IDE硬盘 (2013-03-28 09:11:32) 转载▼ 标签: vmware 虚拟机 虚拟磁盘   某些特殊的软件限定只能运行在IDE硬盘上.如果你想在虚拟机(使用虚拟SCSI磁盘)里使用该软件,又不想重新创建一个虚拟机,你可以使用下面的办法把虚拟SCSI磁盘转换成虚拟IDE硬盘. 注意1:建议完整阅读全文后再动手,不要边看边做,以免发生悲剧. 注意2:按本文对虚拟磁盘进行修改后所导致的一切后果均与本人无关.J 关

openstack在vmware虚机环境(exsi或者workstation)中实例挂死

在vmware虚机环境中安装了openstack平台,创建实例cirros和centos,openstack并未报错,但是在novnc里查看cirros实例卡在grub无法进入系统,centos实例卡在install centos7之后的界面,并且报内核错误. 后来发现comtute节点的nova.conf中的virt_type=kvm,后改为virt_type=qemu后正常

《4》CentOS7.0+OpenStack+kvm云平台部署—配置Nova

感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地址:http://blog.csdn.net/qq_21398167/article/details/46385651 初始化Nova (1).安装nova: [[email protected] ~]# yum -y installopenstack-nova (2).创建nova数据库: [[e

Openstack 干掉 VMWare(1)

在中小型虚拟化应用场景中,VMware占有很大的市场份额,大家对其也是非常认可,但是根据行内最新消息,现在国内openstack商业化产品华为的Funsioncloud出货量已经超过了vmware,如果加上其他的openstack商业化产品,那么至少说,在中国的私有云或者服务器虚拟化市场,openstack产品已经超过了vmware,存量上面可能vmware还占一定优势,但是增量方面,openstack系产品已经显示出优势,可以预见,今后openstack系产品使用量超越vmware是必然的.