OpenStack
简介
OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。
OpenStack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。
OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspack 开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack 是开源项目,除了有 Rackspace 和 NASA 的大力支持外,后面还有包括 Dell、Citrix、 Cisco、 Canonical 这些重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。
运用范围
OpenStack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供云端运算服务。
此外,OpenStack也用作建立防火墙内的“私有云”(Private Cloud),提供机构或企业内各部门共享资源。
厂商支援
美国国家航空航天局的Nebula运算平台。
美国国家航空航天局的Nebula运算平台。
美国国家航空航天局的Nebula运算平台。
现时已表示支持OpenStack项目的大型硬件厂商包括:AMD、Intel和戴尔等[1]。
微软在2010年10月表示支持OpenStack与Windows Server 2008 R2的整合。
2011年2月,思科系统正式加入OpenStack项目,重点研制OpenStack的网络服务。
Ubuntu未来在堆栈方面的云网络化方案。
技术资料
以Python编程语言编写
整合Tornado网页服务器、Nebula运算平台
使用Twisted软件框架
遵循Open Virtualization Format、AMQP、SQLAlchemy等标准
虚拟机器软件支援包括:KVM、Xen、VirtualBox 、QEMU、 LXC 等。
项目
Nova运算项目
Swift面向对象数据存贮项目
Glance虚拟机器磁盘映像档(Virtual Machine Image)传送服务
市场趋向
Rackspace以OpenStack为基础的私有云业务每年7亿美元,增长率超过了20%。
大型用户
美国国家航空航天局
加拿大半官方机构CANARIE网络的DAIR(Digital Accelerator for Innovation and Research)项目,向大学与中小型企业提供研究和开发云端运算环境;DAIR用户可以按需要快速建立网络拓扑[2]。
惠普云(使用Ubuntu Linux)
MercadoLibre的IT基础设施云,现时以OpenStack管理超过6000 台虚拟机器。
AT&T的“Cloud Architect”,将在美国的达拉斯、圣地亚哥和新泽西州对外提供云端服务。
内容详解
OpenStack Compute (Nova)是一套控制器,用于为单个用户或使用群组启动虚拟机实例。它同样能够用于为包含着多个实例的特定项目设置网络。OpenStack Compute在公共云处理方面堪与Amazon EC2相提并论;而在私有云方面也毫不逊色于VMware的产品。在公共云中,这套管理机制将提供预制的镜像或是为用户创建的镜像提供存储机制,这样用户就能够将镜像以虚拟机的形式启动。
OpenStack 对象存储(Swift)是一套用于在大规模可扩展系统中通过内置冗余及容错机制实现对象存储的系统。这些对象能够通过一个REST API或是像Cyberduck这样可以对接对象存储API的客户端加以恢复。
OpenStack镜像服务 (Glance)是一套虚拟机镜像查找及检索系统。它能够以三种形式加以配置:利用OpenStack对象存储机制来存储镜像;利用Amazon的简单存储解决方案(简称S3)直接存储信息;或者将S3存储与对象存储结合起来,作为S3访问的连接器。OpenStack镜像服务支持多种虚拟机镜像格式,包括VMware(VMDK)、Amazon镜像(AKI、ARI、AMI)以及VirtualBox所支持的各种磁盘格式。镜像元数据的容器格式包括Amazon的AKI、ARI以及AMI信息,标准OVF格式以及二进制大型数据。[3]
OpenStack构建私有云
[4]第一步是设置正确的硬件和网络环境。尽管OpenStack允许在一个单一的平面网络上部署一切,从安全的角度来看并不安全。取决于你所使用的管理程序以及虚拟网络接口,它会允许guest虚拟机嗅探管理流量。建议至少使用两个网络:一个用来管理流量,一个用来进行虚拟机之间的对话。这意味着所有的云计算结点中你需要两个网卡(一个运行实例)和网络管理者。这些应该运行在不同的IP范围中。计算结点和实例的网络也需要支持VLAN标记,因为这是在“项目”之间隔绝流量所使用的机制。一个项目等价于你的亚马逊EC2账户,除了你不能按照你所希望的数目创建和分配之外。每一个项目都有自己的管理员和用户,在既定项目中的所有实例可以彼此通信。通过指派每一个项目自己的VLAN以及内部和外部的IT地址池来执行。
一旦硬件和网络设置好,下一步就是确定在哪里部署所有的OpenStack组件。标准部署颖有一个控制器和一系列计算结点。控制器运行消息服务器,数据库和其他的组件来编排云,同时计算几点运行实例。但是你也可以分解控制器为地理的部分,从而改善性能,像把MySQL放在不同的物理盒中。对于安全而言,最关键的是确保每一部分都安装在安全的主机上,你只需要将其附加在网络上,让云运转即可。
只有两部分需要暴露给外面的世界(即使那只是你的企业网络):API服务器/Web 控制台(如果开启)和网络管理者。这些服务器需要过硬,你甚至可以使用第三方网络接口来隔离后端管理用户连接产生的流量。
如果你遵循默认安装说明书,可能这些部分并不如他们应该的那样安全。下面是一些具体的改变:
* MySQL服务器使用指定的用户账户,不是根MySQL管理账户。这个账户和密码将会暴露在每一个云结点上,即使使用基于证书的认证,因此所有结点需要访问这个数据库服务器。
* MySQL配置文件中,限制访问服务器,OpenStack用户账户为唯一授权IP地址。
* 移除任何不需要的OS组件并确保你所设置的服务器只支持通过SSH的基于密钥的登陆。
* 默认MySQL和RabbitMQ(消息服务器)流量不加密。如果你隔离了管理网络和坚固的主机,这就不应该是一个很糟糕的风险。如果你的云网络易于嗅探(例如,它和其他服务器共享网络),你需要加密流量。你可以使用OpenSSL来进行MySQL 和RabbitMQ处理。(我个人还没进行测试,因此配置可能有点难。)
下一步,记住如果支持Web管理控制台,默认不适用SSL。
转载于:https://blog.51cto.com/zhangxiao/989489