零基础学习openstack【完整中级篇】及openstack资源汇总
1.你是如何学习openstack的?
2.你对openstack的组件了解多少?
3.你认为openstack该如何学习?
一直想写关于openstack的方面的内容,今天终于整理完成。算是完成一桩心事,内容整合来自:
是在
零基础学习openstack【初级篇】基础上的一个继续:
初级篇,我们主要是有这么一个概念,openstack的组成
openstack由哪些部分来组成:
- Identity(代号为“Keystone”)
- Dashboard(代号为“Horizon”)
- Image Service(代号为“Glance”)
- Network(代号为“Quantum”)
- Object Storage(代号为“Swift”)
- Block Storage(代号为“Cinder”)
及它们的初步认识,这篇,我们将深入这些概念,及对openstack的进一步的认识。
我们初级篇中,知道了如何部署集群,如何使用集群,但是遇到了很多的问题,
- 什么是floating ip?
- 什么是管理网络?
- 为什么会获取不到ip?
- 为什么网络会不通?
- 为什么虚拟机ping通,外网ping不同?
- 出现问题了,会看日志了,可是还是找不出问题的原因?
复制代码
这些都困扰着我们。
那么我们为什么会产生这些问题,并且遇到这些问题,还解决不了,到处求救,可是并非每次都那么幸运。
我们的学习方法,通常有两个极端:
1.先看书
2.不管三七二十一,先动手在说。
看书
看书是没有错的,但是切勿较真,因为很多书并不像《春秋》、《大学》、《易经》,那么值得推敲,现在的你看的更多的是一种框架,一本书籍,如果能够保证98%以上都是正确的,就已经很不错了。但是个人认为看书总比不看书要好一些,毕竟花费了作者大量时间和精力去整理。
再回来,我们在看书的时候,有时候,并不能一次就能把书看透,使劲也是没用的,因为水平在那。所以建议看书的时候,先整体了解,有了初步概念和自己的理解,然后动手实践。
实践
有些同学,注重实践,因为实践才能获取知识,其实这个没有错,但是我们经常会遇到问题,并且不知该如何解决。比如在大数据、云技术中,搭建hadoop集群,openstack集群,调试的信息,都在日志中了,我们也知道看日志,但是眼睁睁看日志,却还是不知道问题出现在什么问题。这时候你该怎么做?
有三种办法?
1.在qq群求助
这种效果一般不怎么好
2.在论坛社区发帖
论坛发帖一般也不怎么靠谱,当然除了about云以外,about云对于发的帖子都会及时的回答。当我们遇到问题,解决问题的时候,我们就需要考虑,我们是否该看书了
3.回头看书
回头看书,这时候看书,你的收获很大,而且还会对以前的知识有一个重新理解和定义。
平时积累(爱好)
在看书和实践的过程中,其实还有更重要的一点,就是我们平时积累,这是任何学习方法都无法比拟的。没有比爱好更重要的。因为爱好所以琢磨,因为琢磨,所以有深度。
about云也会为云技术、大数据爱好者,提供每日一读,网站和群(90371779、322273151)每天都会有相关内容
about云每日一读汇总
以上方法是针对学习云技术、大数据,当然同样适合其它IT技术。
同时这里推荐一篇很不错的文章
想学大数据、云技术、IT人、大学生必读的一篇文章:如何快速掌握一门技术
云计算、openstack的理解
首先我们还是来说说,什么是openstack,什么是云计算。
引用百度:
云计算是一种通过网络以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。
举个例子,你要做个网站,希望有一台独立的服务器,以前你可能得自行购买一台服务器并托管在IDC机房,不仅得花很多钱买服务器,而且每年要花很多钱托管(当然你也可以租一台服务器)。而现在,你可以在云计算服务商那里租一台同样由你掌握的“服务器”,你一样可以对它格式化,安装自己喜欢的操作系统和软件,但它并不是一台物理上的服务器,而且云计算平台上为你提供的一台虚拟机。
因此,云计算是由一系列可以动态升级和被虚拟化的资源组成,这些资源被所有云计算的用户共享并且可以方便地通过网络访问,用户无需掌握云计算的技术,只需要按照个人或者团体的需要租赁云计算的资源。
如果你真想了解,可以从虚拟机入手。简单讲,虚拟机是云计算的基础。
云计算的特点:
云计算拥有以下特点:
- · 虚拟化和自动化
- · 服务器,存储介质,网络等资源都可以随时替换
- · 所有的资源都由云端统一管理
- · 高度的伸缩性以满足业务需求
- · 集中于将服务传递给业务
引用:云计算是什么
上边便是云计算的解释,但是我们仍旧感觉很模糊。
那么我们从openstack的角度来理解,说到openstack我们必须说一下,openstack的发展,openstack的初期,nova是主要的组件,但是由于不断的扩展,所以逐渐的从nova中分离出来。
比如:
网络组件nova-network
发展如下:
nova network->Quantum->Neutron
Openstack在2010年正式发布它的第一个版本Austin的时候,
nova-network作为它的核心组件被包含其中原先网络有nova network来承担,后来逐渐分离出来,改名为Quantum.
Quantum是随Openstack的Folsom版本正式发布的,其实它已经作为试用组件包含在之前的Essex版本中。在Grizzly里功能得到了增强。
为什么引入Quantum?答案非常简单,Quantum功能更强大,满足更多需求。
Neutron
因为商标侵权的原因,Openstack在Havana版本上将Quantum更名为Neutron,所以Neutron并不是什么新的东西。在Havana版里,Neutron也只增加和增强了少数功能。
更详细信息参考
OpenStack网络组件Neutron的研究
nova-volume组件
Cinder需要处理的主要问题应该是接入各种块设备,如本地磁盘、LVM或各大广商提供的设备如EMC、NetApp、HP、HuaWei,还有如Vmware提供的虚拟块设备等。
所谓的云计算,从技术角度来讲,其实就是能够灵活的创建和删除虚拟机。
你或许会有很多的疑问或则不相信,为什么创建和删除个虚拟机就被称之为云计算,我们创建和删除虚拟机这不是很平常的一件事情吗?openstack为什么会如此的火热。
到这里,让我们在来看看什么是云计算,或许有更进一步的认识。
引用百度:
云计算是一种通过网络以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。
举个例子,你要做个网站,希望有一台独立的服务器,以前你可能得自行购买一台服务器并托管在IDC机房,不仅得花很多钱买服务器,而且每年要花很多钱托管(当然你也可以租一台服务器)。而现在,你可以在云计算服务商那里租一台同样由你掌握的“服务器”,你一样可以对它格式化,安装自己喜欢的操作系统和软件,但它并不是一台物理上的服务器,而且云计算平台上为你提供的一台虚拟机。
因此,云计算是由一系列可以动态升级和被虚拟化的资源组成,这些资源被所有云计算的用户共享并且可以方便地通过网络访问,用户无需掌握云计算的技术,只需要按照个人或者团体的需要租赁云计算的资源。
如果你真想了解,可以从虚拟机入手。简单讲,虚拟机是云计算的基础。
- · 虚拟化和自动化
- · 服务器,存储介质,网络等资源都可以随时替换
- · 所有的资源都由云端统一管理
- · 高度的伸缩性以满足业务需求
- · 集中于将服务传递给业务
了解openstack
当我们想学习大数据、云技术的时候,部署往往是我们的第一步,这样能够对openstack有一个直观的认识,比如那个文件需要修改,部署完成后该如何使用,详细参考:
openstack零基础入门:OpenStack Grizzly安装指导(1)
openstack零基础入门:OpenStack Grizzly安装指导(2)
更多内容参考
零基础学习openstack【初级篇】
当然上面部署是一套openstack的部署,如果想单个部署,网上资料也还是不少的。
openstack开发
1.环境搭建
对于openstack开发,开发环境还是比较重要的,有了开发环境,我们可以阅读源码,同样可以修改里面的环境。那么我们该如何搭建开发环境。
比较可靠的方法,可以参考
about云课程5:配置Linux中的eclipse环境,导入openstack keystone源码
当然网上流行了比较多就是使用dev来搭建开发环境,由于各种原因,使用dev搭建过程中,可能会遇到比较多的问题,参考
使用DevStack安装和配置OpenStack开发环境
基于DevStack的Openstack folsom版开发环境搭建(1-2)
基于davstack搭建openstack folsom开发环境(3-4)
2. 源码架构
当我们拿到源码的时候,我们如果直接每个文件查看源码,这个难度是相当大的,首先我们需要搞清楚源码
python工程
一般有
setup文件
setup.cfg配置文件
tox.nin测试文件
bin目录
keystone-all
keystone-manager
当项目启动时,keystone-all为项目总入口
openstack各组件
我们了解了云计算,在我们技术人眼里,其实根本不是什么云计算,就是创建个虚拟机,而openstack就能完成这件事情。云计算之所以这么称呼当然有它的道理,当然咱们只关心技术,所以咱们需要对openstack有一个深度的认识。
对于英语比较好的同学,学习可以直接访问官网,详细参考:
官方地址:https://github.com/openstack
1.了解认识Nova
nova是一个很复杂的组件,而且内容很多。
认识nova
nova可以说是一套虚拟化管理程序,为什么这么说,因为nova可以创建、删除虚拟机、重启虚拟机等,openstack的之所以能够搭建云平台,也是因为它能够创建虚拟机,其它的组件,比如Neutron则是为了让虚拟机之间、虚拟机与外网之间能够互通,Cinder则是为了增加虚拟机的存储空间。可见nova在openstack中作用是非常大的。
更多内容,可以参考下面内容。
nova结构
至于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
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
我们或许知道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篇
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
- brctl addbr qbr02
复制代码
在比如添加路由router01
- ip netns add router01
复制代码
固定IP
私有IP地址,用于租户实例间通信浮动IP
公共IP地址,用于实例与外部或Internet的通信特别是浮动IP 很多不太理解,一个网卡如果赋予的ip能够与外部Internet通信,那么它就是浮动ip。
公共IP地址不一定是Internet上可路由的地址,也可以是站点内部或局域网的地址
私有地址和公共地址的关系以及必要的路由由nova-network来处理,实例不必考虑此问题。
在我们有了一定的理解,在回头看进行一些,我们又会对openstack有一个新的认识。
上面简单的介绍,下面内容可以参考:
openstack---Neutron网络入门
openstack网络,外部网络、内部网络、管理网络作用介绍
开发人员必读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 是什么及在openstack的作用
OpenStackObject Storage (Swift) 是开源的,用来创建可扩展的、冗余的、对象存储(引擎)。 swift使用标准化的服务器存储 PB 级可用数据。但它并不是文件系统 (file system) ,实时的数据存储系统(real-timedata storage system) 。 swift 看起来更像是一个长期的存储系统 (long term storage system) ,为了获得、调用、更新一些静态的永久性的数据。比如说,适合存储一些类型的数据:虚拟机镜像,图片存储,邮件存储,文档的备份。没有“单点”或者主控结点 (master point of control) , 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基础二:三种存储类型比较-文件、块、对象存储
openstack入门之swift基础三:swift能干什么,不能干什么及相关概念
Ubuntu 12.04 OpenStack Swift单节点部署指导
Object Storage (Swift)和Block Storage (Cinder)有什么区别?
hadoop中HDFS与opesntack的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
5.了解Cinder
我们知道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 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)
6.了解Glance
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源码架构分析(一)
7.了解Horizon
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简介
openstack dasboard使用的是什么语言,如何搭建开发环境,如何本地化(汉化)
OpenStack Dashboard二次开发--简明教程如何设置OpenStack Horizon开发环境 Part 2
8.Ceilometer
这个组件目前大家讨论的不多,但是可能会后期发力,因为云平台搭建之后,我们该如何计费,这是个问题,所以有些同学云平台该怎么计费
请问楼主,云主机根据不同配置进行计费的功能是用什么软件实现的?有开源的软件吗?
那么研究下这个这个组件就可以了,我们对它有了了解,那么
Ceilometer如何部署
参考
部署Ceilometer到已有环境中
Ceilometer的概念,
可参考:
OpenStack监控项目Ceilometer的一些术语
Ceilometer API说明参考
OpenStack监控测量服务Ceilometer安装及 API说明
其它
OpenStack里数据采集(监控数据、计费数据)基础设施--Ceilometer
关于源码:
云计算计费:Ceilometer的alarm模块代码分析
OpenStack Ceilometer Collector代码解读
9.了解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介绍
在OpenStack中通过Heat来使用Docker Containers
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)
11.oslo
其资料不多,相关内容:
OpenStack配置解析库——oslo.config
12.Moniker
13.marconi
附上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
OpenStack开发之Python资料大全汇总
OpenStack在Ubuntu12.04X64系统上的安装
在CentOS 6.x通过RPM包安装OpenStack多节点环境文档下载
更多大数据、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
零基础学习openstack【完整中级篇】及openstack资源汇总的更多相关文章
- [原]零基础学习视频解码之android篇系列文章
截止今天,<零基础学习视频解码系列文章>.<零基础学习在Android进行SDL开发系列文章>以及<零基础学习视频解码之android篇>系列文章基本算是告一段落了 ...
- 零基础学习hadoop到上手工作线路指导(中级篇)
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...
- MongoDB实战开发 【零基础学习,附完整Asp.net示例】
MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ...
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
- [学习线路] 零基础学习hadoop到上手工作线路指导(初级篇)
about云课程最新课程Cloudera课程 零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了. ...
- 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce
此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
随机推荐
- 显示图片中CDC和HDC问题
(m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示 showimage();//显示图片 void Caccess_t ...
- 列表框清屏/CListBox清空
CListBox自带方法: MyListBox->ResetContent(); CListBox用法: 关联一个变量m_List,m_List.AddString("test&quo ...
- 自己制作一个链表用来存储列表信息,并查找当前id信息,找上一条信息,下一条信息(信息浏览的时候方便使用)
偶然看到某些网站在新闻详情中 ,往往是需要根据当前信息id获取到上一条信息和下一条信息的,而通常我们的做法是先获取当前信息,再获取上一条信息,再获取下一条信息,就需要发送三次查询才能够得到这些信息,一 ...
- shell脚本学习总结06--数学计算
在bash中可利用let,(())和[]执行基本的操作,高级操作将会使用expr和bc 运算符:+,—,*,/,**(幂) (()) [root@Director ~]# ((c=2**3-9%2)) ...
- JSP内置对象——application,page,pageContext,config,Exception
application对象application对象实现了用户数据的共享,可存放全局变量.application开始于服务器的启动,终止于服务器的关闭.在用户的前后链接或不同用户之间的连接中,可以对a ...
- 动态加载script文件
动态加载script文件: http://www.cnblogs.com/skykang/archive/2011/07/21/2112685.html
- 给vmware虚拟机设置Ip,使用xshell远程连接Centos
参考下面两位的分享才弄好,发表之前先对原作者表示感谢! 给Centos配置网络以及使用xshell远程连接Centos http://www.cnblogs.com/fuly550871915/p/4 ...
- 文艺青年、普通青年、2b青年到底是什么意思?
文艺青年.普通青年.2b青年到底是什么意思? 文艺青年就是脑子里跟别人想的不一样,思维跟人家相反或者另类的人. 普通青年呢就是像你一样,普普通通的. 2B青年就是黑铅笔青年,做事比较搞怪,古怪到让你哭 ...
- CH5401 没有上司的舞会【树形DP】
5401 没有上司的舞会 0x50「动态规划」例题 描述 Ural大学有N名职员,编号为1~N.他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司.每个职员有一个快乐指数,用整数 H_i 给 ...
- CEF3 HTML5 audio标签为什么不能播放mp3格式的音频文件
CEF3 HTML5 audio标签 为什么不能播放mp3格式的音频文件 原因略. 解决方法: 找一个最新版的chrome ,我用的是24版本.路径 C:\Documents and Sett ...