iaas和paas常见技术

来源:互联网 发布:管理数据的重要性 编辑:程序博客网 时间:2024/05/24 06:33

1、openstack VS hadoop

OpenStack主要的目的是云计算管理平台,包括 云计算(Compute)、 网络(Network)、对象存贮(Object Store)、镜像文件存储 (Image)、身份认证(Authentication)、BlockStorage 以及前端UI 。

OpenStack的每个模块都对外提供API,可以独立供云用户调用,在OpenStack内部,每个模块之间的相互调用也是用这些API.

The OpenStack project as a whole is designed to “deliver(ing) a massively scalable cloud operating system.”

而 The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures. Hadoop是一个能够对大量数据进行分布式处理的软件框架,Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
那么,Hadoop和MapReduce区别:
Hadoop是一种分布式数据和计算的框架。它很擅长存储大量的半结构化的数据集。数据可以随机存放,所以一个磁盘的失败并不会带来数据丢失。Hadoop也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。
MapReduce是处理大量半结构化数据集合的编程模型。编程模型是一种处理并结构化特定问题的方式。例如,在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出如何产生计算。还可以用更传统的语言(C++,Java),一步步地来解决问题。这是两种不同的编程模型,MapReduce就是另外一种。
MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好。

2.多种主流虚拟机软件:KVM、LXC、QEMU、Hyper-V、VMware、XenServer比较

OpenStack因Open而开放,因组件而灵活,因包容而博大。有计算、网络、对象存储、块存储、身份、镜像服务、门户、测量、部署编排、数据库服务等等组件,有的组件可以根据需要选择安装,组网结构也很灵活、多样。实现了支持接入多种主流虚拟机软件:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行开发插件接入其他的虚拟化软件。
## 关于XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较:
http://blog.sina.com.cn/s/blog_4d834cf301013tqd.html 介绍的比较详细。

虚拟化技术和qemu/kvm的关系:

QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
KVM和QEMU的关系

准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是KVM和QEMU 的关系。
kvm和qemu关系图

Docker &openstack

原文链接:https://www.ustack.com/blog/do-i-need-docker-also-with-openstack/
简单来说,Docker提供了一种程序运行的容器,同时保证这些容器相互隔离。虚拟机也有类似的功能,但是它通过Hypervisor创建了一个完整的操作系统栈。不同于虚拟机的方式,Docker依赖于Linux自带的LXC(Linux Containers)技术。LXC利用了Linux可以对进程做内存、CPU、网络隔离的特性。Docker镜像不需要新启动一个操作系统,因此提供了一种轻量级的打包和运行程序的方式。而且Docker能够直接访问硬件,从而使它的I/O操作比虚拟机要快得多。Docker可以直接跑在物理服务器上,这引起大家的疑问:假如已经用了Docker,还有必要使用OpenStack吗?

最近Boden Russell在DockerCon上做了关于Docker和KVM的性能测试对比图表。和预期的一样,启动KVM和Docker容器的时间差异非常显著,而且在内存和CPU利用率上,双方差距非常大,如下表所示。

docker3

双方巨大的性能差异,导致了在相同工作负载下,KVM需要更多的CPU和内存资源,导致成本上升。

观点如下:

1,这个问题和OpenStack没有直接的联系,也可以套在其他云平台上。大家为什么会拿Docker和OpenStack做比较的原因是:OpenStack是私有云环境中最流行的云平台,在私有云环境中,大家认为可以把Docker作为另一种选择。

2,有关于Hypervisor的误区:

很多KVM和Docker的性能测试的对比跟OpenStack一点关系都没有,因为OpenStack只是一种框架。事实上这种性能测试(不管是KVM还是Docker)是跑在OpenStack下,这表明了KVM和Docker可以共存。当使用OpenStack去管理Docker情况下,Docker和OpenStack的争论是没有意义的。

docker4

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

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

5,原生hypervisor的性能、容器化的性能、应用的性能是不一样的东西,相互对比没有意义。
这里写图片描述
这里写图片描述

6,把Docker容器打包进KVM镜像中对Docker运行几乎没有影响。这种架构通常是用hypervisor来管理计算资源,而像Heat、Cloudify、Kubernetes这样的的orchestration layer都用于管理在hypervisor中的docker容器。

结论:

正确看待OpenStack、KVM、Docker的方式应该是: OpenStack用于管理整个数据中心,KVM和Docker作为相应的补充,KVM用于多租户的计算资源管理,Docker Container用于应用程序的打包部署。

在这种场景下,Docker的作用是:

1,Docker提供一种特定的软件打包方式,使得软件可以保持在相同的环境下运行。

2,Docker为微服务提供了很好的容器。

3,Docker在OpenStack、裸机上运行几乎一样。

总得来说,对于大部分的应用场景,使用那种云平台都可以。比如我要给一个DevOps小组提供自动化开发和测试环境,我会考虑直接在物理服务器上跑Docker。

Orchestration对于这两种环境(OpenStack和Docker)是很好的抽象工具。

使用Docker的Orchestration框架的好处是可以在任意时候在OpenStack和裸机环境中切换,也就是说你可以指定Docker跑在OpenStack或裸机环境中。OpenStack Orchestration工具Heat从Icehouse版本开始支持Docker。Cloudify是一个基于开源TOSCA 的Orchestration,它可以跑在openstack、VMwara、AWS、裸机环境中,最近也支持Docker。

虚拟机中对网络进行虚拟,或者说如何连接网络的。

一般虚拟机虚拟网络的设置主要包括三种方式。主要如下:
## NAT模式
也有人称此种模式为host模式。在这种模式下虚拟机可以理解成没有自己的独立网卡。所有访问虚拟机的请求其实是直接发送给宿主机,然后通过访问宿主机转发到虚拟机上的。相应的虚拟机访问其他网络,也是先转发到宿主机然后在转发出去。对于宿主机之外的网络,是不知道该虚拟机存在的。
## Bridge模式
桥接模式是使用比较多的模式,它是虚拟机拥有自己的独立网卡和IP,然后通过借用宿主机的网卡对外连接网络。它把宿主机的网卡当作了一种桥,通过这个桥连接外网的世界。在这种模式下,可以简单的理解成虚拟机和宿主机是两个不同的机器,有独立IP可以相互访问。对于虚拟机的IP获取,一般可以直接指定也可以通过DHCP获取得到。
## Internal模式
这个是把虚拟机之间的网络和主机的网络隔离开来。虚拟机是一片网络,主机也是一片网络,彼此之间不能相互访问。

0 0
原创粉丝点击