大型网站技术基石之 OpenStack
发布日期:2016-7-7 19:7:55
虚拟化可以充分的利用资源,带来各种各样的好处。当一个网站不大,只需四五台机器即可支撑的时候,可采用手工的方式虚拟机,但当网站流量很高,需成千上万台机器时,那就特别不方便了。 这时候,云(如阿里云)计算管理平台OpenStack就显出作用了。 云计算 先来说一下云计算的基本概念: 云服务分类: SaaS:软件即服务,例如有道云笔记,百度。 PaaS:平台即服务,就像新浪SAE那样,提供虚拟空间的那种就可以算是Paas,只提供一个环境平台,用户需要上传代码才能提供服务. IaaS:基础设施即服务,就像阿里云主机那样,直接提供虚拟机的就是IaaS。 私有云:私有云就像一个工厂自己建立的发电厂,自己发电自己用。成本较高。一般是政府部门和实力强悍的公司拥有。 公有云:公有云(如阿里云)就像国家电网,为所有人提供服务。然而公有云的隐私问题,比较难以解决,所以对数据安全要求高的话,还是别用。国内有阿里云、腾讯云这类厂商。 混合云:混合云综合了公有云和私有云的优劣,可以把私密数据放在私有云里面,不怎么私密的放在公有云里面,然而技术要求比较复杂啊。 CaaS:OpenStack 创业公司EasyStack提出并演示的Cloud as a Service(云既服务)。以满足中大规模企业级用户对云计算安全的要求、服务级别和品质的要求、对兼顾隔离控制和灵活弹性的要求、对成本和业务弹性的要求,这些都可以在CaaS里找到答案 OpenStack概述 OpenStack是云计算事实上的标准。OpenStack是一个由Rackspac云解决方案公司和美国航空航天局(NASA)合作开发推出的经Apache2.0许可授权并以Python语言为基础的完全开源项目;该项目最初的设计目的是用来存储海量图片和空间视频等信息的云计算管理软件,OpenStack迅速发展成一整套综合的开源云计算项目。 OpenStack不提供虚拟化技术,而是对虚拟化进行管理,它兼容几乎所有主流虚拟化技术,例如KVM、Xen、VMware、ESX、QEMU,,通过Libvirt虚拟层来对这些虚拟化技术进行包装,Libvirt统一了虚拟化工具API接口供上层调用,OpenStack还完全支持Amazon AWS的EC2 API和S3 API,OpenStack的这种对虚拟化技术较全面支持的特点使它能够广泛地部署。 OpenStack是云计算laaS开源解决方案组件,按照我的理解,云平台主要由以下四种层次。上一章讲的属于第二层次,而OpenStack属于第三层和第四层。 OpenStack架构 Openstack主要有以下几个组件。 他们之间的关系如下所示: 各组件之间都是松耦合的,他们之间采用Restful接口进行通信。 Nova Nova是OpenStack核心组件,其他很多组件都是从Nova项目分割出来的,都是为Nova服务的,OpenStack虚拟机实例生命周期的所有活动都由Nova处理。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。但是,Nova自身并没有提供任何虚拟化能力,相反它使用libvirt API来与被支持的Hypervisors交互(Xen,KVM等等)。Nova 通过一个与Amazon Web Services(AWS)EC2 API兼容的web services API来对外提供服务,还支持基于消息的异步通信方式。 Nova 云架构包括以下主要组件: API Server (nova-api):接受处理客户端请求。 Network Controller (nova-network):处理主机地网络配置。 Compute Workers (nova-compute):核心组件,虚拟机管理。 Message Queue (rabbit-mq server):Nova内部组件采用RabbitMQ消息队列进行通信,对各组件解耦非常有用。 Scheduler (nova-scheduler):nova调度子服务,当客户端想Nova请求创建虚拟机的时候,该服务决定在哪个地方创建。 Volume Worker (nova-volume):用来管理基于LVM(Logical Volume Manager)的实例卷。Volume Workers有卷的相关功能,例如新建卷、删除卷、为实例附加卷,为实例分离卷。 Keystone Keystone是openstack的认证权限管理组件,使openstack能够安全可靠的工作,每个组件都要在keystone进行注册。所以,该组件在安装Openstack时候是最先安装的。 Horizon Horizon就是一个控制面板,网页形式的。便于对云计算系统的管理。 Glance Glance是虚拟机镜像管理组件,注意,这个只是虚拟机镜像管理,并不能存储镜像,而是将镜像存储在swift或者普通磁盘上
|