问题导读
1.你是如何学习openstack的?
2.你对openstack的组件了解多少?
3.你认为openstack该如何学习?
一直想写关于openstack的方面的内容,今天终于整理完成。算是完成一桩心事,内容整合来自:
零基础学习openstack(上)【中级篇】
零基础学习openstack(下)【中级篇】
是在
零基础学习openstack【初级篇】基础上的一个继续:
初级篇,咱们主要是有这么一个概念,openstack的组成
openstack由哪些部分来组成:
php
Identity(代号为“Keystone”)html
Dashboard(代号为“Horizon”)前端
Image Service(代号为“Glance”)node
Network(代号为“Quantum”)python
Object Storage(代号为“Swift”)nginx
Block Storage(代号为“Cinder”)
git
及它们的初步认识,这篇,咱们将深刻这些概念,及对openstack的进一步的认识。
咱们初级篇中,知道了如何部署集群,如何使用集群,可是遇到了不少的问题,
程序员
什么是floating ip?
github
什么是管理网络?
web
为何会获取不到ip?
为何网络会不通?
为何虚拟机ping通,外网ping不一样?
出现问题了,会看日志了,但是仍是找不出问题的缘由?
复制代码
这些都困扰着咱们。
那么咱们为何会产生这些问题,而且遇到这些问题,还解决不了,处处求救,但是并不是每次都那么幸运。
咱们的学习方法,一般有两个极端:
1.先看书
2.无论三七二十一,先动手在说。
看书
看书是没有错的,可是切勿较真,由于不少书并不像《春%秋》、《大学》、《易经》,那么值得推敲,如今的你看的更多的是一种框架,一本书籍,若是可以保证98%以上都是正确的,就已经很不错了。可是我的认为看书总比不看书要好一些,毕竟花费了做者大量时间和精力去整理。
再回来,咱们在看书的时候,有时候,并不能一次就能把书看透,使劲也是没用的,由于水平在那。因此建议看书的时候,先总体了解,有了初步概念和本身的理解,而后动手实践。
实践
有些同窗,注重实践,由于实践才能获取知识,其实这个没有错,可是咱们常常会遇到问题,而且不知该如何解决。好比在大数据、云技术中,搭建hadoop集 群,openstack集群,调试的信息,都在日志中了,咱们也知道看日志,可是眼睁睁看日志,却仍是不知道问题出如今什么问题。这时候你该怎么作?
有三种办法?
1.在qq群求助
这种效果通常不怎么好
2.在论坛社区发帖
论坛发帖通常也不怎么靠谱,固然除了about云之外,about云对于发的帖子都会及时的回答。当咱们遇到问题,解决问题的时候,咱们就须要考虑,咱们是否该看书了
3.回头看书
回头看书,这时候看书,你的收获很大,并且还会对之前的知识有一个从新理解和定义。
平时积累(爱好)
在看书和实践的过程当中,其实还有更重要的一点,就是咱们平时积累,这是任何学习方法都没法比拟的。没有比爱好更重要的。由于爱好因此琢磨,由于琢磨,因此有深度。
about云也会为云技术、大数据爱好者,提供每日一读,网站和群(9037177九、322273151)天天都会有相关内容
about云每日一读汇总
以上方法是针对学习云技术、大数据,固然一样适合其它IT技术。
同时这里推荐一篇很不错的文章
想学大数据、云技术、IT人、大学生必读的一篇文章:如何快速掌握一门技术
云计算、openstack的理解
首先咱们仍是来讲说,什么是openstack,什么是云计算。
引用百度:
云计算是一种经过网络以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。
举个例子,你要作个网站,但愿有一台独立的服务器,之前你可能得自行购买一台服务器并托管在IDC机房,不只得花不少钱买服务器,并且每一年要花不少钱托管 (固然你也能够租一台服务器)。而如今,你能够在云计算服务商那里租一台一样由你掌握的“服务器”,你同样能够对它格式化,安装本身喜欢的操做系统和软 件,但它并非一台物理上的服务器,并且云计算平台上为你提供的一台虚拟机。
所以,云计算是由一系列能够动态升级和被虚拟化的资源组成,这些资源被全部云计算的用户共享而且能够方便地经过网络访问,用户无需掌握云计算的技术,只须要按照我的或者团体的须要租赁云计算的资源。
若是你真想了解,能够从虚拟机入手。简单讲,虚拟机是云计算的基础。
· 虚拟化和自动化
· 服务器,存储介质,网络等资源均可以随时替换
· 全部的资源都由云端统一管理
· 高度的伸缩性以知足业务需求
· 集中于将服务传递给业务
nova network->Quantum->Neutron
Essex将nove的卷管理api独立化后,Folsom终于将卷管理服务抽离成了Cinder;Cinder管理全部的块存储设备,块设备能够挂接在虚机的实例中,而后虚机里的guest系统能够像操做本地卷同样操做块存储设备;
Cinder须要处理的主要问题应该是接入各类块设备,如本地磁盘、LVM或各大广商提供的设备如EMC、NetApp、HP、HuaWei,还有如Vmware提供的虚拟块设备等。
从上面咱们认识,nova为openstck的重要组件,而nova中nova-compute则能够建立虚拟机。它也是云计算的核心。
所谓的云计算,从技术角度来说,其实就是可以灵活的建立和删除虚拟机。
你或许会有不少的疑问或则不相信,为何建立和删除个虚拟机就被称之为云计算,咱们建立和删除虚拟机这不是很日常的一件事情吗?openstack为何会如此的火热。
到这里,让咱们在来看看什么是云计算,或许有更进一步的认识。
引用百度:
云计算是一种经过网络以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。
举个例子,你要作个网站,但愿有一台独立的服务器,之前你可能得自行购买一台服务器并托管在IDC机房,不只得花不少钱买服务器,并且每一年要花不少钱托管 (固然你也能够租一台服务器)。而如今,你能够在云计算服务商那里租一台一样由你掌握的“服务器”,你同样能够对它格式化,安装本身喜欢的操做系统和软 件,但它并非一台物理上的服务器,并且云计算平台上为你提供的一台虚拟机。
所以,云计算是由一系列能够动态升级和被虚拟化的资源组成,这些资源被全部云计算的用户共享而且能够方便地经过网络访问,用户无需掌握云计算的技术,只须要按照我的或者团体的须要租赁云计算的资源。
若是你真想了解,能够从虚拟机入手。 简单讲,虚拟机是云计算的基础。
· 虚拟化和自动化
· 服务器,存储介质,网络等资源均可以随时替换
· 全部的资源都由云端统一管理
· 高度的伸缩性以知足业务需求
· 集中于将服务传递给业务
孵化项目:https://github.com/stackforge
首先咱们须要对各个组件有一个认识,包括从原理、内部结构、部署、源码等角度。
1.了解认识Nova
这个是最核心的,Nova最开始的时候,能够说是一套虚拟化管理程序,还能够管理网络和存储。不过从Essex版本后,Nova开始作减法,和网络相关的内容,包括安全组,交给Neutron负责,存储相关的交给Cinder负责。调度有关的内容,会交给新的项目Marconi。
之前还有一个nova common,这实际上是各个组件都使用相同的东西,如今也专门成立一个项目:oslo,已是核心项目。
将来Nova对各类Hyperv的支持是有差别的,KVM和XEN,基本是最好的。微软的Hyper-V算是很不错,微软投入再研发。计算节点,不直接查询数据库,而是经过rpc的方式,听说这是一大进步。
Nova的稳定性,其实取决于libvirt,qemu,但愿将来能够能更加稳定。功能如今其实已经不是大问题。
那么咱们再来了解一下nova。
nova是一个很复杂的组件,并且内容不少。
认识nova
nova能够说是一套虚拟化管理程序,为何这么说,由于nova能够建立、删除虚拟机、重启虚拟机等,openstack的之因此可以搭建云平台,也是 由于它可以建立虚拟机,其它的组件,好比Neutron则是为了让虚拟机之间、虚拟机与外网之间可以互通,Cinder则是为了增长虚拟机的存储空间。可 见nova在openstack中做用是很是大的。
更多内容,能够参考下面内容。
你们谈OpenStack-Nova组件理解
关于OpenStack中Nova的几个基本概念
Openstack核心,nova详细介绍
OpenStack Compute(Nova)功能分析
nova结构
nova是云主机控制器。它包含了不少组件,API服务器(nova-api),计算服务器 (nova-compute),网络控制器(nova-network),调度器(nova-schedule),卷控制器(nova-volume), 消息队列以及DashBoard。
至于nova的发展,上文咱们已经介绍。
对于nova各个组件的做用,及它们之间是如何通讯的,详细
能够参考:
Nova 各个组件介绍以及功能分析(逻辑架构,运行架构,开发架构以及数据库)
http://www.aboutyun.com/thread-10069-1-1.html
nova命令行:
咱们认识nova和了解了nova,那么nova具体该如何使用,如何删除虚拟机、添加虚拟机、启动虚拟机等,参考下面帖子。
openstack nova用户管理
http://www.aboutyun.com/thread-8717-1-1.html
openstack nova 命令行指令大全
http://www.aboutyun.com/thread-6373-1-1.html
nova源码及开发
对于nova有了必定的认识,若是咱们对nova二次开发
1.咱们首先搭建开发环境
2.而后阅读源码修改源码
至于开发环境的搭建参考上文openstack开发,源码的阅读,这里有一些帖子供你们参考.对于内容,有的是对源码的总体认识,及虚拟机启动源码分析,更多的内容,相信能从标题能够看到。
OpenStack Nova源码结构解析
http://www.aboutyun.com/thread-10105-1-1.html
1.处理虚拟机磁盘镜像由哪一个文件来完成?
2.调度器中的主机权重在哪一个文件中?
3./nova/scheduler/host_manager.py文件的做用是什么?
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机动态迁移源码分析
http://www.aboutyun.com/thread-10108-1-1.html
1.实现虚拟机动态迁移主要实现的语句是什么?
2.方法_update实现了哪方面的内容?
3.live_migration方法的做用是什么?
NOVA源码分析——NOVA中的RabbitMQ解析
http://www.aboutyun.com/thread-10107-1-1.html
1.终端用户(DevOps、Developers和其余OpenStack组件)如何与openstack系统互动?
2.Nova守护进程之间如何执行API请求?
3.RabbitMQ是什么?
4.构成AMQP的三个关键要素,那么它们之间是如何工做的呢?
OpenStack Nova-cell服务的源码解析(1)
http://www.aboutyun.com/thread-10104-1-1.html
1.nova-cell服务的具体实现包含哪些流程?
2.哪一个类定义了当路由信息到特定的cell上时,须要调用的方法?
3.schedule_run_instance实现了什么?
OpenStack Nova-cell服务的源码解析(2)
http://www.aboutyun.com/thread-10103-1-1.html
OpenStack Nova-scheduler组件的源码解析(1)
http://www.aboutyun.com/thread-10102-1-1.html
1.哪一个文件实现了基于随即选取主机节点的方式的调度器?
2./nova/scheduler/manager.py文件做用是什么?
3./nova/scheduler/filters/affinity_filter.py定义了那四个过滤器?
OpenStack Nova-scheduler组件的源码解析(2)
http://www.aboutyun.com/thread-10121-1-1.html
1.host_state.update_from_compute_node(compute)这条语句实现了什么功能?
2.哪个函数循环实现了为每个实例获取合适的主机后,返回选择的主机列表?
3._schedule实现有哪三步?
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(1)
http://www.aboutyun.com/thread-10100-1-1.html
1.Nova-Compute中Libvirt默认调用的底层虚拟化平台是什么?
2.Libvirt是什么?
3.Libvirt哪些底层虚拟化平台?
4.一台虚拟机随着用户需求的改变可能会经历哪些状态?
5.哪一个方法实现了肯定来宾系统的磁盘映射信息?
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(2)
http://www.aboutyun.com/thread-10111-1-1.html
1.类Image下的方法cache实现了什么功能?
2.哪一个方法实现下载镜像文件?
3.方法download由那两部分组成?
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机动态迁移源码分析
http://www.aboutyun.com/thread-10108-1-1.html
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(3)
http://www.aboutyun.com/thread-10110-1-1.html
1.哪一个方法实现了获取元数据?
2.对文件注入代码了解多少?
3.哪一个方法实现向磁盘镜像注入不一样的文件信息?
OpenStack基于Libvirt的虚拟化平台调度实现----Nova虚拟机启动源码实现(4)
http://www.aboutyun.com/thread-10109-1-1.html
1._create_domain_and_network你认为完成了什么?
2.inst_path = libvirt_utils.get_instance_path(instance)语句的做用是什么?
3.domain.createWithFlags(launch_flags)实现什么功能?
openstack nova 源码分析1-setup脚本
http://www.aboutyun.com/thread-10090-1-1.html
openstack nova 源码分析2之nova-api,nova-compute
http://www.aboutyun.com/thread-10091-1-1.html
openstack nova 源码分析3-nova目录下的service.py、driver.py
http://www.aboutyun.com/thread-10092-1-1.html
1.nova下的service.py的源码主要完成什么任务?
2.driver.py位于哪一个目录下?
openstack nova 源码分析4-1 -nova/virt/libvirt目录下的connection.py
http://www.aboutyun.com/thread-10094-1-1.html
openstack nova 源码分析4-2 -nova/virt/libvirt目录下的connection.py
http://www.aboutyun.com/thread-10095-1-1.html
2.了解认识keystone
这是提供身份认证和受权的组件。任何系统,身份认证和受权,其实都比较复杂。尤为Openstack 那么庞大的项目,每一个组件都须要使用统一认证和受权。
认识keystone
咱们或许知道keystone是用来身份验证的,可是它是如何身份验证的,不少人或许不太清楚。上面的图示,当用户进行操做的时候,用户首先发送用户名和 密码给Keystone,(这里的用户名和密码,则是咱们配置的环境变量,)而后获取token,token是什么?咱们称之为令牌,有了这个令牌在请求 资源,那么就畅通无阻了,咱们为何须要令牌,用户名和密码不也同样吗?若是做为一名程序员,咱们都知道两个字段的对比与一个字段的对比在性能上是不同 的,况且是云计算组件之间通讯是很是频繁的,因此我的认为了身份验证方便,因此产生了令牌(token)。
令牌的做用是什么,为何须要令牌,咱们就须要仔细看上图了。
好比
下图用户请求建立虚拟机,截图以下,而后nova最后通过上图中操做,最后操做成功
咱们将上图简化
用户带着token到Nova去请求虚拟机,nova这时候须要验证这个token是否有效,本身没法判断,因此必须去keystone去验证,因为 keystone记录了由它产生的token,因此对照一下,就能知道是否有效,若是有效,返回nova验证成功。这时候nova通过一系列的操做,建立 虚拟机,最后建立成功。
keystone包含的概念
1. User
User即用户,他们表明能够经过keystone进行访问的人或程序。Users经过认证信息(credentials,如密码、API Keys等)进行验证。
2. Tenant
Tenant即租户,它是各个服务中的一些能够访问的资源集合。例如,在Nova中一个tenant能够是一些机器,在Swift和Glance中一 个tenant能够是一些镜像存储,在Quantum中一个tenant能够是一些网络资源。Users默认的老是绑定到某些tenant上。
3. Role
Role即角色,Roles表明一组用户能够访问的资源权限,例如Nova中的虚拟机、Glance中的镜像。Users能够被添加到任意一个全局的 或 租户内的角色中。在全局的role中,用户的role权限做用于全部的租户,便可以对全部的租户执行role规定的权限;在租户内的role中,用户仅能 在当前租户内执行role规定的权限。
4. Service
Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务能够确认当前用户是否具 有访问其资源的权限。可是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service, 这里一般使用一些不一样的名称表示不一样的服务。在上文中谈到的Role,实际上也是能够绑定到某个service的。例如,当swift须要一个管理员权限 的访问进行对象建立时,对于相同的role咱们并不必定也须要对nova进行管理员权限的访问。为了实现这个目标,咱们应该建立两个独立的管理员 role,一个绑定到swift,另外一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其余服务。
5. Endpoint
Endpoint,翻译为“端点”,咱们能够理解它是一个服务暴露出来的访问点,若是须要访问一个服务,则必须知道他的endpoint。所以,在 keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候咱们能够在conf文件夹下看到这个文件),这个模板提供了全部存在的服务endpoints信息。一个 endpoint template包含一个URLs列表,列表中的每一个URL都对应一个服务实例的访问地址,而且具备public、private和admin这三种权 限。public url能够被全局访问(如http://compute.example.com),private url只能被局域网访问(如http://compute.example.local),admin url被从常规的访问中分离。
不少人以为比较难以,更多能够参考
openstack中tenant的做用究竟是什么
keystone命令
keystone都有哪些操做,keystone能够建立租户、角色、用户,详细参考openstack之role篇
openstack之user篇
openstack之tenant篇
keystone源码
源码的阅读,若是感兴趣,能够本身有一个理解,而后与做者进行对比,这样才会对本身的思想有所提升,也算是与做者的思想交流。固然做者也会有错的,因此经过彼此的角,这样达到提升的目的
[openstack][G版]keystone源码记录
http://www.aboutyun.com/thread-10136-1-1.html
1.在G版中密码和token两个验证方法由哪一个文件来实现?
2.WSGImiddleware在keystone应用中的做用是什么?
Openstack之keystone源代码分析1--WSGI接口流程分析
http://www.aboutyun.com/thread-10137-1-1.html
1.keystone是怎么经过WSGI接口访问其中的服务的?
2.你认为add_routes做用是什么?
Openstack之keystone源代码分析2--Controller->Manager->Driver
http://www.aboutyun.com/thread-10138-1-1.html
1.Driver在那个配置文件中可配置?
2.Manager怎么调用conf下面配置的或者默认的driver的?
Openstack源代码分析之keystone服务(keystone-all)
http://www.aboutyun.com/thread-10139-1-1.html
1.keystone-all.py的做用是什么?
2.Python应用程序使用WSGI(Web Server Gateway Interface)协议来作什么?
3.了解认识Neutron
Neutron是OpenStack核心项 目之一,提供云计算环境下的虚拟网络功能。Neutron的功能日益强大,并在Horizon面板中已经集成该模块。做为Neutron的核心开发者之 一,我的以为Neutron彻底代替Nova Network模块做为云计算网络管理中心是必然趋势。要使用好OpenStack,了解Neutron概念及其相应操做就显得格外重要。
Neutron对于开发人员为何难以理解:
初学者很难理解Neutron,这是由于网络不在是实实在在的网线、路由等,都是经过命令来实现的。
例如使用openvswitch建立网桥
brctl addbr qbr02
复制代码
在好比添加路由router01
ip netns add router01
复制代码
这些都是虚拟化的,也就是说在虚拟机之间,也就是在云中,网络都是虚拟化,因此咱们才会以为难以理解。
一样对于一些概念也比较模糊,好比
固定IP
私有IP地址,用于租户实例间通讯
浮动IP
公共IP地址,用于实例与外部或Internet的通讯特别是 浮动IP 不少不太理解,一个网卡若是赋予的ip可以与外部Internet通讯,那么它就是浮动ip。
公共IP地址不必定是Internet上可路由的地址,也能够是站点内部或局域网的地址
私有地址和公共地址的关系以及必要的路由由nova-network来处理,实例没必要考虑此问题。
在咱们有了必定的理解,在回头看进行一些,咱们又会对openstack有一个新的认识。
下面咱们从基础开始认识Neutron
Neutron基本概念
网络
在普通人的眼里,网络就 是网线和供网线插入的端口,一个盒子会提供这些端口。对于网络工程师来讲,网络的盒子指的是交换机和路由器。因此在物理世界中,网络能够简单地被认为包括 网线,交换机和路由器。固然,除了物理设备,咱们还有软的物件:IP地址,交换机和路由器的配置和管理软件以及各类网络协议。要管理好一个物理网络须要非 常深的网络专业知识和经验。
Neutron网络目的是(为OpenStack云更灵活地)划分物理网 络,在多租户环境下提供给每一个租户独立的网络环境。另外,Neutron提供API来实现这种目标。Neutron中“网络”是一个能够被用户建立的对 象,若是要和物理环境下的概念映射的话,这个对象至关于一个巨大的交换机,能够拥有无限多个动态可建立和销毁的虚拟端口。
端口
在物理网络环境中,端口是用于链接设备进入网络的地方。Neutron中的端口起着相似的功能,它是路由器和虚拟机挂接网络的着附点。
路由器
和物理环境下的路由器相似,Neutron中的路由器也是一个路由选择和转发部件。只不过在Neutron中,它是能够建立和销毁的软部件。
子网
简单地说,子网是由一组IP地址组成的地址池。不一样子网间的通讯须要路由器的支持,这个Neutron和物理网络下是一致的。Neutron中子网隶属于网络。
为何引入Quantum?
答案很是简单,Quantum功能更强大,知足更多需求。下面列几条主要功能。
- 提供面向租户的API,以便控制2层网络和管理IP地址
- 支持插件式网络组件,像Open vSwitch,Cisco,Linux Bridge,Nicira NVP等等
- 支持位于不一样的2层网络的IP地址重叠
- 支持基本的3层转发和多路由器
- 支持隧道技术(Tunneling)
- 支持3层代理和DHCP代理的多节点部署,加强了扩展性和可靠性
- 提供负载均衡API (试用版本)
Neutron主要有如下几部分组成。
Neutron Server: 这一部分包含守护进程neutron-server和各类插件neutron-*-plugin,它们既能够安装在控制节点也能够安装在网络节点。 neutron-server提供API接口,并把对API的调用请求传给已经配置好的插件进行后续处理。插件须要访问数据库来维护各类配置数据和对应关 系,例如路由器、网络、子网、端口、浮动IP、安全组等等。
插件代理 (Plugin Agent): 虚拟网络上的数据包的处理则是由这些插件代理来完成的。名字为neutron-*-agent。在每一个计算节点和网络节点上运行。通常来讲你选择了什么插 件,就须要选择相应的代理。代理与Neutron Server及其插件的交互就经过消息队列来支持。
DHCP代理(DHCP Agent): 名字为neutron-dhcp-agent,为各个租户网络提供DHCP服务,部署在网络节点上,各个插件也是使用这一个代理。
3层代理 (L3 Agent): 名字为neutron-l3-agent, 为客户机访问外部网络提供3层转发服务。也部署在网络节点上。
下面这张图取自官网,很好的反映了Neutron内部各部分之间的关系。(SDN服务在这里是额外的外部功能,能够暂时略过。)
上面简单的介绍,下面内容能够参考:
openstack---Neutron网络入门
OpenStack Neutron解析
OpenStack网络组件Neutron的研究
OpenStack Neutron运行机制解析概要
OpenStack: 网络组件 Neutron
Openstack之neutron入门一
Openstack之neutron入门二
Openstack之neutron入门三
openstack网络,外部网络、内部网络、管理网络做用介绍
openstack neutron 建立多个外网
开发人员必读openstack网络基础1:什么是L二、L3
开发人员必读openstack网络基础2:交换机、路由器、DHCP
开发人员必读openstack网络基础3: iptables详解
开发人员必读openstack网络基础4:Dnsmasq、网络混杂模式
开发人员必读openstack网络基础5:网络叠加模式VLAN、VxLAN、GRE
开发人员必读openstack网络基础6:什么是Tap/Tun、网桥
开发人员必读openstack网络基础7:到底什么是Open vSwitch
源码分析参考
Neutron分析(1)——neutron-server启动过程分析
openstack Neutron分析(2)—— neutron-l3-agent
openstack Neutron分析(3)—— neutron-dhcp-agent源码分析
openstack Neutron分析(4)—— neutron-l3-agent中的iptables
openstack Neutron分析(5)-- neutron openvswitch agent
OpenStack Neutron DVR L2 Agent的初步解析 (一)
OpenStack J版 Neutron-server服务加载与启动源码分析(一)
OpenStack J版 Neutron-server服务加载与启动源码分析(二)
Openstack Neutron-server服务加载与启动源码分析(三)
4.了解Swift
这是对象存储 的组件。对于大部分用户来讲,swift不是必须的。你只有存储数量到必定级别,并且是非结构化数据才有这样的需求。不少人都问一个相同的问题:是否能够 把虚拟机的存储放在swift上。简单回答:不行。你须要搞明白对象存储是干啥,擅长那些地方,那些是不行的。
swift是Openstack全部组件了最成熟的,能够在线升级版本,各类版本能够混合在一块儿,也就是说,1.75版本的swift能够和1.48的在一个群集里.这个是很可贵的.
swift 是什么及在openstack的做用
OpenStackObject Storage (Swift) 是开源的,用来建立可扩展的、冗余的、对象存储(引擎)。 swift使用标准化的服务器存储 PB 级可用数据。但它并非文件系统 (file system) ,实时的数据存储系统(real-timedata storage system) 。 swift 看起来更像是一个长期的存储系统 (long term storage system) ,为了得到、调用、更新一些静态的永久性的数据。好比说,适合存储一些类型的数据:虚拟机镜像,图片存储,邮件存储,文档的备份。没有“单点”或者主控结点 (master point of control) , swift看起来具备更强的扩展性、冗余和持久性。
swift结构
Swift 组件包括:
代理服务(Proxy Server):对外提供对象服务 API,会根据环的信息来查找服务地址并转发用户请求至相应的帐户、容器或者对象服务;因为采用无状态的 REST 请求协议,能够进行横向扩展来均衡负载。
认证服务(Authentication Server):验证访问用户的身份信息,并得到一个对象访问令牌(Token),在必定的时间内会一直有效;验证访问令牌的有效性并缓存下来直至过时时间。
缓存服务(Cache Server):缓存的内容包括对象服务令牌,帐户和容器的存在信息,但不会缓存对象自己的数据;缓存服务可采用 Memcached 集群,Swift 会使用一致性散列算法来分配缓存地址。
帐户服务(Account Server):提供帐户元数据和统计信息,并维护所含容器列表的服务,每一个帐户的信息被存储在一个 SQLite 数据库中。
容器服务(Container Server):提供容器元数据和统计信息,并维护所含对象列表的服务,每一个容器的信息也存储在一个 SQLite 数据库中。
对象服务(Object Server):提供对象元数据和内容服务,每一个对象的内容会以文件的形式存储在文件系统中,元数据会做为文件属性来存储,建议采用支持扩展属性的 XFS 文件系统。
复 制服务(Replicator):会检测本地分区副本和远程副本是否一致,具体是经过对比散列文件和高级水印来完成,发现不一致时会采用推式(Push) 更新远程副本,例如对象复制服务会使用远程文件拷贝工具 rsync 来同步;另一个任务是确保被标记删除的对象从文件系统中移除。
更 新服务(Updater):当对象因为高负载的缘由而没法当即更新时,任务将会被序列化到在本地文件系统中进行排队,以便服务恢复后进行异步更新;例如成 功建立对象后容器服务器没有及时更新对象列表,这个时候容器的更新操做就会进入排队中,更新服务会在系统恢复正常后扫描队列并进行相应的更新处理。
审计服务(Auditor):检查对象,容器和帐户的完整性,若是发现比特级的错误,文件将被隔离,并复制其余的副本以覆盖本地损坏的副本;其余类型的错误会被记录到日志中。
帐户清理服务(Account Reaper):移除被标记为删除的帐户,删除其所包含的全部容器和对象。
上面只是简单的介绍,或许并不能让你真正明白什么是swift,若是感兴趣能够了解更多内容
Openstack Swift 原理、架构与 API 介绍
openstack入门之swift基础一:什么是对象存储
openstack入门之swift基础二:三种存储类型比较-文件、块、对象存储
openstack入门之swift基础三:swift能干什么,不能干什么及相关概念
对象存储系统Swift技术详解:综述与概念(上)
对象存储系统Swift技术详解:综述与概念(下)
swift 初见
Ubuntu 12.04 OpenStack Swift单节点部署指导
Object Storage (Swift)和Block Storage (Cinder)有什么区别?
hadoop中HDFS与opesntack的swift有何不一样
单独部署
Swift能单独使用吗?如何单独部署?
Swift源码想开发和了解原理的途径之一
Swift源码分析
Swift源码分析----swift-object-auditor(1)
Swift源码分析----swift-object-auditor(2)
Swift源码分析----swift-container-auditor
Swift源码分析----swift-account-auditor
Swift源码分析----swift-account-audit(1)
Swift源码分析----swift-account-audit(2)
OpenStack Swift源码分析(1)----swift服务启动源码分析之一
OpenStack Swift源码分析(2)----swift服务启动源码分析之二
OpenStack Swift源码分析(3)----swift服务启动源码分析之三
OpenStack Swift源码分析(4)----swift-ring-builder源代码解析之一
OpenStack Swift源码分析(5)----swift-ring-builder源代码解析之二
Swift源码分析----swift-object-updater
Swift源码分析----swift-object-info
Swift源码分析----swift-object-replicator(1)
Swift源码分析----swift-object-replicator(2)
Swift源码分析----swift-proxy实现请求req的转发
Swift源码分析----swift-container-info
Swift源码分析----swift-proxy与swift-account
Swift源码分析----swift-account-reaper(1)
Swift源码分析----swift-account-reaper(2)
Swift源码分析----swift-proxy与swift-container
Swift源码分析----swift-account-replicator
Swift源码分析----swift-container-replicator
Swift源码分析----swift-proxy与swift-object
Swift源码分析----swift-container-updater
swift源码分析引用:博客地址:http://blog.csdn.net/gaoxingnengjisuan
邮箱地址:dong.liu@siat.ac.cn
5.了解Cinder
这是存储管理的组件。一直以来,不少人都很纠结AWS的EBS的实现。Openstack也终于推出了本身的存储管理组件。
Cinder存储管理主要是指虚拟机的存储管理。目前支持开源和商业化产品。开源的sheepdog,Ceph等。商业存储的支持,目前IBM是最积极的。将来若是商业存储厂商都支持Cinder,对Openstack的商业化仍是很是有利的。
对于企业来讲,使用分布式做为虚拟机的存储,并不能真正节省成本,维护一套分布式存储,成本仍是很高的。目前虚拟机的各类高可用,备份的问题,其实均可以把问题交给商业存储厂商来解决。
咱们知道Openstack从Folsom开始使用Cinder替换原来的Nova-Volume服务,为Openstack云平台提供块存储服务。
cinder架构以下:
Cinder服务
API service:负责接受和处理Rest请求,并将请求放入RabbitMQ队列。Cinder提供Volume API V2, 我没有找到格式很好的在线文档,大致能够参见Openstack block storage API V1
Scheduler service: 处理任务队列的任务,并根据预约策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来建立卷。
Volume service: 该服务运行在存储节点上,管理存储空间。每一个存储节点都有一个Volume Service,若干个这样的存储节点联合起来能够构成一个存储资源池。为了支持不一样类型和型号的存储,当前版本的Cinder为Volume Service以下drivers。固然在Cinder的blueprints当中还有一些其它的drivers,之后的版本可能会添加进来。
本地存储:LVM, Sheepdog
网络存储: NFS, RBD (RADOS)
IBM: XIV, Storwize V7000, SVC storage systems
Netapp: NFS存储;ISCSI存储则须要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed iSCSI licenses
EMC: VNX, VMAX/VMAXe
Solidfire: Solidfire cluster
cinder还有更多内容
1.Cinder有哪些服务?
2.Cinder有哪些部署命令?
3.Cinder在IT环境中的主要有哪些问题?
详细参考:
Openstack之Cinder介绍
更多内容参考
Openstack之Cinder介绍
OpenStack IceHouse版cinder模块新增长功能
OpenStack-Icehouse(nova-network)多节点块存储服务Cinder部署
Openstack Cinder安装向导:在Unitestack的UOS下测试
OpenStack Cinder 与 Ceph 使用进阶篇(基于 Icehouse 版本)
cinder中删除僵尸卷(error_deleting )的方法
固然若是想了解源码,一样附上源码:
源码分析:
Openstack Cinder中创建volume过程的源码解析(1)
Openstack Cinder中创建volume过程的源码解析(2)
Openstack Cinder中创建volume过程的源码解析(3)
Openstack Cinder中创建volume过程的源码解析(4)----以及taskflow相关解析
Openstack Cinder中创建volume过程的源码解析(5)----以及taskflow相关解析
Openstack Cinder中创建volume过程的源码解析(6)----以及taskflow相关解析
Openstack Cinder中创建volume过程的源码解析(7)----以及taskflow相关解析
Openstack Cinder中创建volume过程的源码解析(8)
Openstack Cinder中创建volume过程的源码解析(9)
OpenStack Cinder服务启动过程当中的资源加载和扩展源码解析之一
Paste Deployment简介以及cinder-api-paste.ini的解析(1)
cinder服务启动源码分析
cinderclient源码解析之一
cinderclient源码解析之二
OpenStack Cinder源码分析之一
OpenStack Cinder源码分析之二
OpenStack Cinder源码分析之三
OpenStack Cinder源码分析之四
OpenStack Cinder源码分析之五
OpenStack Cinder源码分析之六
OpenStack Cinder源码分析之七
OpenStack Cinder源码分析之八
6.了解Glance
Glance比较简单,是一个虚机镜像的存储。向前端nova(或者是安装了Glance-client的其余虚拟管理平台)提供镜像服务,包括存储,查询和检索。这个模块自己不存储大量的数据,须要挂载后台存储(Swift,S3。。。)来存放实际的镜像数据。
OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,咱们能够将镜像存储到如下任意一种存储中:
本地文件系统(默认)
OpenStack对象存储
S3直接存储
S3对象存储(做为S3访问的中间渠道)
HTTP(只读)
功能及特色
提供镜像相关服务
Glance构件
Glance控制器
Glance注册器
从上面咱们看出glance是能够存储的,可是其重心是管理镜像,存储则由好比swift、S3等来完成。若是感受还有疑惑,参考:
让你真正明白cinder与swift、glance的区别
咱们知道了glance能干什么,那么咱们该如何使用,glance命令该如何使用,api该如何使用,详细参考openstack之glance篇
更多参考:
翻译:Openstack镜像服务(glance)用法的高级例子
创建高可用OpenStack云系列--创建HA Openstack云(五):安装Glance
一样附上
源码分析
Glance源码架构分析(一)
Glance源码架构分析(二)
Glance源码架构分析(三)
Glance源码架构分析(四)
7.了解Horizon
严格意义来讲,Horizon不会为Openstack 增长一个功能,他更多的是一个演示,demo。不过对于不少用户来讲,了解Openstack基本都是从Horizon,dashboard开始。从这个角度来看,他在Openstack各个项目里,显得很是重要。
Horizon的开发者,应该是最累的。须要和各个项目打交道。每一个项目的功能不少都是须要经过Dashboard来展示。
你们须要注意的是:Horizon只是使用了Openstack部分API功能,不少功能,你能够根据你的需求去实现。
OpenStack管理的Web接口----Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它能够管理实例、镜像、建立密匙对,对实例添加卷、操做Swift容器等。除此以外,用户还能够在控制面板中使用终端(console)或VNC直接访问实例。
总之,Horizon具备以下一些特色:
实例管理:建立、终止实例,查看终端日志,VNC链接,添加卷等
访问与安全管理:建立安全群组,管理密匙对,设置浮动IP等
偏好设定:对虚拟硬件模板能够进行不一样偏好设定
镜像管理:编辑或删除镜像
查看服务目录
管理用户、配额及项目用途
用户管理:建立用户等
卷管理:建立卷和快照
对象存储处理:建立、删除容器和对象
为项目下载环境变量
上面若是做为初学者,可能仍是感受两个字“模糊”,好吧,其实Horizon能够理解为openstack界面,咱们既能够经过界面操做 openstack,也能够经过shell的方式操做openstack。可是界面在前些版本中还不够完善,不少操做经过命令行的方式更方便些。不过 Horizon目前功能在不断的完善。
Horizon无须过多的介绍,由于当咱们安装完毕以后,咱们天然可以看到界面。
那么该如何使用它,好比建立项目、用户建立网络,详细参考
测试OpenStack Icehouse Horizon —— 建立项目、用户建立网络
更多内容:
Openstack Horizon Icehouse Blueprint简介
horizon 界面修改以及扩展
openstack dasboard使用的是什么语言,如何搭建开发环境,如何本地化(汉化)
OpenStack Dashboard二次开发--简明教程如何设置OpenStack Horizon开发环境 Part 2
给horizon添加分配指定floating IP的功能
8.Ceilometer
这是实现监控和计量的组件。这应该算是Grizzly的孵化项目。对他的了解其实不多。在Grizzly版本里,你应该能够在Dashboard里看到这个组件。
监控和计费一直是一个难题,尤为用户但愿知道cpu和内存的使用状况。看看他如何解决这个问题。到时候看看同事如何调用api来解决监控和计量的问题。解决计量,计费就简单的。
http://wiki.openstack.org/Ceilometer
这个组件目前你们讨论的很少,可是可能会后期发力,由于云平台搭建以后,咱们该如何计费,这是个问题,因此有些同窗云平台该怎么计费
请问楼主,云主机根据不一样配置进行计费的功能是用什么软件实现的?有开源的软件吗?
那么研究下这个这个组件就能够了,咱们对它有了了解,那么
Ceilometer如何部署
参考
部署Ceilometer到已有环境中
Ceilometer的概念,
可参考:
OpenStack监控项目Ceilometer的一些术语
Ceilometer API说明参考
OpenStack监控测量服务Ceilometer安装及 API说明
其它
OpenStack里数据采集(监控数据、计费数据)基础设施--Ceilometer
关于源码:
云计算计费:Ceilometer的alarm模块代码分析
OpenStack Ceilometer Collector代码解读
9.了解Heat
这个项目是要解决虚拟机的软件部署的问题。你的虚拟机建立好,os准备好,你还须要作不少配置才能使用,如何能实现把全部繁琐的操做简化呢?亚马逊上有一个专门的工具:AWS cloudformation。目前Openstack上,但愿经过Heat来实现相似的功能。
关于这个项目,仍是有不少争议。不过这个项目是Redhat发起。他们的功力是无可置疑,等Openstack成熟后,这个项目的重要性就会体现出来。
http://wiki.openstack.org/Heat
真的要实现弹性扩展,自动部署,都是须要期望这个。
上面总体介绍,下面咱们介绍
什么是Heat
Heat是一套业务流程平台,旨在帮助用户更轻松地配置以OpenStack为基础的云体系。利用Heat应用程序,开发人员可以在程 序中使用模板以实现资源的自动化部署。Heat可以启动应用、建立虚拟机并自动处理整个流程。它还拥有出色的跨平台兼容性,可以与Amazon Web Services业务流程平台CloudFormation相对接——这意味着用户彻底能够将AWS模板引入OpenStack环境当中。
为何是产生Heat
Openstack 对应于云计算的概念,是实现了IaaS(Infrastructure as a Service),即基础设施即服务,提供对云的基础设施运行环境的管理。有了基础设施就能够在其上部署和运行相关的应用,如web群集,paas,数据 库等等相关的服务和应用。对于这些软件运行环境的构建须要进行相关的部署过程,固然部署的过程能够手工的完成,可是面对于快速构建应用的广泛需求来讲,手 工部署并不能知足要求,而且云环境下的群集部署对于普通的非专业的用户来讲是很困难的,因此就须要实现一种自动化的经过简单定义和配置就能实现部署的云部 署方式。Heat项目就是提供了一种经过模版定义的协同部署方式,实现云基础设施软件运行环境的自动化部署。
上面咱们对Heat有了初步的认识,那么Heat如何安装部署、命令如何使用等
更多内容:
openstack(G版、icehouse版本)中Heat介绍
heat安装和配置及命令使用
在OpenStack中经过Heat来使用Docker Containers
OpenStack中的Heat分析
OpenStack Heat服务再介绍 (二)
OpenStack Heat 模板学习一 之hello world
OpenStack Heat模板学习二 之LBaaS(负载均衡即服务)
对于下面组件,目前研究的人很少,简单了解便可
10.Lbaas
Load Balancer as a Service(LBaaS),负载均衡即服务,是OpenStack在其网络组件Neutron中提供的一种将负载均衡器/软件/设备归入到 Neutron体系中的框架,归入到Neutron中的负载均衡以服务的形态供用户使用。用户能够在OpenStack中自行建立负载均衡器,进行相关配 置,并对本身在OpenStack上的instance进行负载均衡。此功能相似于AWS和阿里云中为用户提供的负载均衡服务。
SEnginx目前实现了对OpenStack LBaaS的支持,能够为OpenStack中的instance提供负载均衡服务,这是经过提供了一个LBaaS的driver来实现的,具体使用方法详见:https://github.com/NeusoftSecurity/SEnginx-LBaaS-Driver
目前SEnginx只支持OpenStack的Havana版本(2013.10)
详细参考
SEnginx支持OpenStack LBaaS
11.oslo
这个项目其实就是把全部组件须要用到相同的东西,集中起来,之前叫nova common,估计感受不贴切,如今单独成立一个项目。往后你们开发新的组件,估计都须要用到oslo。
其资料很少,相关内容:
OpenStack配置解析库——oslo.config
12.Moniker
这是实现dns功能的组件。其实若是你用过AWS,你就知道这个功能是必不可少。新浪目前的已经加上了这个功能,每一个虚拟机,都会自动有一个dns记录。
https://github.com/stackforge/moniker
估计集成到Dashboard里,仍是须要等待一段时间啊。目前该项目开发仍是很是积极。
13.marconi
此项目用于解决openstack 消息队列的扩展问题。听说这是Rackspce推出的项目,就是为了解决他们生产中遇到消息队列的问题。
附上openstack资源:
但愿对你们的学习有帮助
OpenStack Installation Guide for Ubuntu中文翻译版
http://www.aboutyun.com/thread-9218-1-2.html
openstack installation Guide for red hat Enterprise Linux,CentOS, and Fedora
http://www.aboutyun.com/thread-9324-1-2.html
openstack operations Guide英文书籍
http://www.aboutyun.com/thread-9326-1-2.html
openstack各类文档下载
http://www.aboutyun.com/thread-8797-1-2.html
OpenStack身份服务API资料
http://www.aboutyun.com/thread-8699-1-2.html
各个版本Linux系统安装部署openstack icehouse在线英文文档汇总及下载
http://www.aboutyun.com/thread-9417-1-2.html
Swift自编精品教程
http://www.aboutyun.com/thread-9325-1-2.html
2014中国系统架构师大会:视频CDN技术分享
http://www.aboutyun.com/thread-9327-1-2.html
OpenStack Get_介绍及基础概念
http://www.aboutyun.com/thread-9706-1-1.html
openstack开发python教程
http://www.aboutyun.com/thread-9388-1-1.html
Neutron防火墙
http://www.aboutyun.com/thread-9381-1-1.html
盛大云平台架构设计和实现
http://www.aboutyun.com/thread-5568-1-1.html
openstack最新版--- juno版最新官网文档
http://www.aboutyun.com/thread-9423-1-1.html
运维社区-openstack源码安装资源分享
http://www.aboutyun.com/thread-5566-1-1.html
《OpenStack Juno版》资源分享
http://www.aboutyun.com/thread-9888-1-1.html
openstack-ice-house云环境构建
http://www.aboutyun.com/thread-9323-1-1.html
系统讲解 Openvswtich (138页)ppt分享
http://www.aboutyun.com/thread-9839-1-1.html
Zabbix中文使用手册分享
http://www.aboutyun.com/thread-10059-1-1.html
Openstack入门基础知识51页ppt【推荐】
http://www.aboutyun.com/thread-10057-1-1.html
OpenStack-Icehouse版 多节点部署资源
http://www.aboutyun.com/thread-8999-1-1.html
cloudstack介绍及开发环境设置(windows、centos)文档分享
http://www.aboutyun.com/thread-8283-1-1.html
OpenStack企业应用之路
http://www.aboutyun.com/thread-8975-1-1.html
openstack实践pdf分享
http://www.aboutyun.com/thread-10056-1-1.html
华为云计算解决方案
http://www.aboutyun.com/thread-8978-1-1.html
openstack juno版发布文档汇总:各个版本安装、API、配置使用、管理员英文文档
http://www.aboutyun.com/thread-9568-1-1.html
openstack redhat 两小时安装部署
http://www.aboutyun.com/thread-9365-1-1.html
openstack实践、HA、商业模式探讨、新浪应用文档下载
http://www.aboutyun.com/thread-8419-1-2.html
swift安装及开发调试环境及Apple Swift编程语言入门教程
http://www.aboutyun.com/thread-8613-1-2.html
原创:基于Ubuntu上OpenStack IceHouse版详细安装资源分享(中文翻译)
http://www.aboutyun.com/thread-9102-1-2.html
OpenStack 资源分享
http://www.aboutyun.com/thread-9209-1-2.html
基于openstack的docker开发
http://www.aboutyun.com/thread-9186-1-4.html
openstack icehouse 部署视频
http://www.aboutyun.com/thread-8723-1-4.html
云里雾里云计算
http://www.aboutyun.com/thread-8201-1-1.html
openstack开发,Python系列最全文档书籍下载
http://www.aboutyun.com/thread-7853-1-1.html
台湾辅仁大学--Python视频分享
http://www.aboutyun.com/thread-8173-1-1.html
老外python视频30讲、python100例、python100习题等系列汇总
http://www.aboutyun.com/thread-8095-1-1.html
openstack相关文档分享
http://www.aboutyun.com/thread-6741-1-1.html
混合云管理平台CloudForms简介
http://www.aboutyun.com/thread-8008-1-1.html
在Debian上部署OpenStack官方文档翻译1
http://www.aboutyun.com/thread-7255-1-1.html
在Debian上部署OpenStack官方文档翻译2
http://www.aboutyun.com/thread-7665-1-1.html
在Debian上部署OpenStack官方文档翻译3
http://www.aboutyun.com/thread-7961-1-1.html
OpenStack开发之Python资料大全汇总
http://www.aboutyun.com/thread-7950-1-1.html
下面是其资源汇总:
一、openstack编程,Python系列文档下载
二、Python核心编程下载分享
三、openstack编程:Python标准库分享
四、openstack编程:Python学习手册 第3版
五、Python Cookbook(第2版)中文版
六、openstack开发,Python系列最全文档书籍下载
OpenStack Icehouse 版本官方安装教程-英文版
http://www.aboutyun.com/thread-7617-1-1.html
openstack-H版Centos6.4下安装单网卡安装
http://www.aboutyun.com/thread-7426-1-1.html
CloudComputing相关英文文档
http://www.aboutyun.com/thread-7096-1-1.html
openstack安装英文版openstack-install-guide-ubuntu12_04-apt-trunk
http://www.aboutyun.com/thread-7052-1-1.html
openstack入门、建设公有云、私有云、商业模式、云存储等系列文档下载
http://www.aboutyun.com/thread-8199-1-1.html
openstack中文、英文安装文档下载
openstack入门视频
Python核心编程下载分享
openstack编程:Python标准库分享
openstack编程:Python学习手册 第3版
OpenStack简介,入门书籍
openstack实战手册指导
OpenStack在Ubuntu12.04X64系统上的安装
在CentOS 6.x经过RPM包安装OpenStack多节点环境文档下载
VMware镜像完整版
vSphere5介绍(55视频)包括文档下载
IT相关架构文档下载
更多大数据、openstack、云平台资料:
about云汇总帖:包括资源,指导,文档,视频等
http://www.aboutyun.com/thread-7178-1-1.html
about云资源汇总V1.2:包括hadoop,openstack,nosql,虚拟化
http://www.aboutyun.com/thread-5928-1-1.html
about云资源汇总指引V1.3:包括hadoop,openstack,nosql,虚拟化
http://www.aboutyun.com/thread-6150-1-1.html
about云资源汇总指引V1.4:包括hadoop,openstack,nosql,虚拟化
http://www.aboutyun.com/thread-6730-1-1.html
about云资源汇总指引V1.5:包括hadoop,openstack,storm,spark等视频文档书籍汇总
http://www.aboutyun.com/thread-8203-1-1.html
about云资源汇总指引V1.6:包括hadoop,openstack,storm,spark等视频文档书籍汇总
http://www.aboutyun.com/thread-10302-1-1.html