大型网站技术基石之OpenStack简述
我们知道虚拟化能够充分的利用资源,带来各种各样的好处。 当一个网站不大,只需要四五台机器就可以支撑的时候,可以采用手工的方式虚拟机,但是当网站流量很高,需要成千上万台机器的时候,那就非常不方便了。 这时候,云计算管理平台OpenStack就显出作用了。
云计算
先来说一下云计算的基本概念:
云服务分类:
IaaS:基础设施即服务,就像阿里云主机那样,直接提供虚拟机的就是IaaS。
PaaS:平台即服务,就像新浪SAE那样,提供虚拟空间的那种就可以算是Paas,只提供一个环境平台,用户需要上传代码才能提供服务。
SaaS:软件即服务,例如有道云笔记,百度。
公有云:公有云就像国家电网,为所有人提供服务。然而公有云的隐私问题,比较难以解决,所以对数据安全要求高的话,还是别用。国内有阿里云、腾讯云这类厂商。
私有云:私有云就像一个工厂自己建立的发电厂,自己发电自己用。成本较高。一般是政府部门和实力强悍的公司拥有。
混合云:混合云综合了公有云和私有云的优劣,可以把私密数据放在私有云里面,不怎么私密的放在公有云里面,然而技术要求比较复杂啊。
CaaS:OpenStack 创业公司EasyStack提出并演示的Cloud as a Service(云既服务)。以满足中大规模企业级用户对云计算安全的要求、服务级别和品质的要求、对兼顾隔离控制和灵活弹性的要求、对成本和业务弹性的要求,这些都可以在CaaS里找到答案,也可以说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):接受处理客户端请求。
Message Queue (rabbit-mq server):Nova内部组件采用RabbitMQ消息队列进行通信,对各组件解耦非常有用。
Compute Workers (nova-compute):核心组件,虚拟机管理。
Network Controller (nova-network):处理主机地网络配置。
Volume Worker (nova-volume):用来管理基于LVM(Logical Volume Manager)的实例卷。Volume Workers有卷的相关功能,例如新建卷、删除卷、为实例附加卷,为实例分离卷。
Scheduler (nova-scheduler):nova调度子服务,当客户端想Nova请求创建虚拟机的时候,该服务决定在哪个地方创建。
Horizon:
Horizon就是一个控制面板,网页形式的。便于对云计算系统的管理。
Keystone:
Keystone是openstack的认证权限管理组件,使openstack能够安全可靠的工作,每个组件都要在keystone进行注册。所以,该组件在安装Openstack时候是最先安装的。
Glance:
Glance是虚拟机镜像管理组件,注意,这个只是虚拟机镜像管理,并不能存储镜像,而是将镜像存储在swift或者普通磁盘上