OpenStack overview 笔记
Example architecture
example architecture 至少需要两个节点启动一个虚拟机或者实例。可选的服务,例如Block storage和Object storage需要额外的节点。example architecture和minimal production architecture的区别如下所示:
(1)、Networking agent存在于controller node中,而不是一个或多个独立的network nodes
(2)、对于self-service network的Overlay(tunnel)是走management network而不是dedicated network
Controller
Controller node运行identify service, image service, networking的管理部分,各种networking agents和dashbord。其中还可以包括很多supporting service,例如SQL 数据库,消息队列和NTP
事实上,controller node还可以运行block storage,object storage,orchestration和telemetry service。最后,controller node 需要至少两个网卡
Compute
compute node运行compute的hypervisor部分用于操作虚拟机实例。默认情况下,Compute使用KVM作为hypervisor。compute node还要运行networking service agent,它能将虚拟机连接到虚拟网络中,并且给虚拟机提供firewalling service。我们可以部署多个compute node,每个node需要至少两个网卡。
Block Storage
Block Storage node是可选的,其中包含了为虚拟机提供的Blocke storage和Shared File System service的磁盘。为了简单起见,compute node和本节点是使用management network进行通信的。在生产环境中需要提供专有的网络用于提高性能和安全性。我们可以部署多个block storage node,每个node至少需要一个网卡
Object Storage
Object Storage node是可选的,其中存放了Object Storage service的磁盘用于存放accounts,containers以及object。和Block node类似,为了简单起见,compute node和本节点直接是使用management network进行通信的。但是在生产环境中,需要实现专有的网络用于通信。该服务需要至少两个节点,每个node至少需要包含一个网卡。
Networking
Networking Option 1:Provider networks
Provider networks 用的是最简单的OpenStack Networking service部署方案,提供了基本的layer-2(birdging/switching)services和VLAN segmentation of networks。本质上,它将虚拟网络和物理网络相连,并且依赖物理网络的基础设施来提供layer-3(routing) services。另外,DHCP service为虚拟机提供IP信息
Networking Option 2:Self-service networks
self-service networks 在provider networks的基础上提供了layer-3(routing) service,主要是利用overlay segmentation methods,例如VXLAN实现的。事实上,它通过NAT将虚拟网络路由到物理网络。另外,这种network option提供了一些高级的服务,例如LBaas和FWaas。
Identity service
OpenStack的Identity service提供了对于管理认证,授权,以及service目录的单点集成。Identity service通常是用户解除的第一个service,一旦通过认证,端用户就能通过它们的identity去获取OpenStack service。同样,其他的OpenStack services利用Identity service来确认用户,以及发现其他service部署在什么地方。Identity service还能和其他的外部用户管理系统集成(例如LDAP)。
用户和service能够通过service目录获取其他目录的位置。如名字所示,service目录是OpenStack集群上可用的service的集合。每个service都可以有一个或多个endpoint,每个endpoint都是admin, internal或者public三个类型中的一种。在生产环境中,不同的endpoint类型会存在于不同的network中,因为处于安全的考虑,不同的类型是有不同的network的。比如,public API network在Internet上是可见的,从而用户能管理他们的云。而admin API network可能仅仅局限于那些云基础设施的管理者。internal API network则局限于那些运行着OpenStack service的主机。为了扩展性,OpenStack支持多region,但是出于简单起见,我们对于所有的类型都使用同一网络并且使用默认的RegionOne region。总之,Identity service中创建的region,service和endpoint构成了集群中的service目录。对于每一个OpenStack service,都需要在Identity service中存放一个伴有相应endpoint的service entry。这些都能在Identity service安装和配置好之后完成。
Identity service由以下组件组成:
Server:一个中心化的server提供使用RESTful接口的授权和认证
Drivers:drivers或者service back end是和中心化server集成的。它们是用于为OpenStack外部的库提供identity信息的,并且可能在OpenStack还在部署的时候就已经存在了。
Modules:OpenStack组件地址空间上运行的Middleware module也使用identity service。这些modules解析service request,抽取出user credentials,并且将它们发送给中心server用于授权。Middleware和OpenStack组件之间通过Python Web Server Gateway Interface进行通信。
Image service
Image service能够让用户发现,注册,检索虚拟机镜像。它提供了一个REST API,从而让你能查询虚拟机镜像的元数据以及检索实际的镜像。我们可以将虚拟机镜像存放在各种地方,从简单的文件系统到像OpenStack Object Storage的对象存储系统
为了简单起见,我们使用file back end来配置image service,即将镜像存放在运行image service的controller node的目录中。默认情况下,该目录为/var/lib/glance/images/。在进行操作之前,我们需要确保在controller node中的相应目录至少有几个G的存储空间。需要注意的是,file back end通常是在controller node的本地的,而这对于多节点的部署显然是不合适的。
OpenStack的image service位于IAAS的中心。它接收来自端用户或者OpenStack计算组件对于磁盘,服务镜像以及元数据定义的API请求。同时,它还支持磁盘存储,多种类型的服务镜像,包括OpenStack Object Storage。OpenStack image service上有一定数目的周期性运行的进程用于支持caching。Replication services用来确保集群的一致性和可用性。其他周期性运行的进程包括,auditors, updaters,reapers。
glance-api:接收镜像API调用,包括镜像发现,检索和存储
glance-registry:存储,处理和恢复镜像的元数据。元数据包括大小和类型。(注:registry是OpenStack image service的一个private internal service,不能将它暴露给用户)
Database:用于存储镜像的元数据,我们可以根据自己的偏好任意选择数据库。大多数部署使用MySQL或者SQLite
Storage repository for image files:OpenStack支持各种各样的repository type,包括普通的文件系统(或者任何挂载在glance-api所在的controller node上的文件系统),对象存储,RADOS块设备,VMware数据库以及HTTP。需要注意的是,一些repository只支持只读。
Metadata definition service:一个通用的API用于为vendor,admins,service,以及user定义它们自己的元数据。这些元数据可以被用于不同类型的资源,例如images,artifacts,volumes,flavors以及aggregates。一个标准的定义通常包括,新特性的键值,描述,约束以及相关的资源类型。
Compute service overview
使用OpenStack Compute管理云计算系统。OpenStack Compute是IAAS系统的主要部分。它的主要部分是由Python实现的。OpenStack Compute通过和OpenStack Identity交互来进行认证;和OpenStack image service交互用于磁盘和服务镜像;和OpenStack dashboard交互用于user和administrative的接口。镜像的访问受项目和用户的限制,配额则受到项目的限制(例如实例的数目)。OpenStack Compute可以在标准硬件上水平扩展,并且下载镜像来生成实例。
OpenStack Compute由以下这些组件构成:
nova-api service:用于接收以及回复端用户的compute API调用,该service支持OpenStack Compute API,Amazon EC2 API,以及special Admin API为特权用户执行管理员操作。它强行执行一些策略,以及初始化大多数的编排操作,例如运行一个实例。
nova-api-metadata service:接收来自实例的元数据请求。nova-api-metadata service通常在运行multi-host模式并且安装了nova-network的时候使用。
nova-compute service:一个worker daemon通过hypervisor API创建并且终止虚拟机实例。比如:XenAPI for XenServer/XCP,libvirt for KVM or QEMU,VMware for VMware。
处理的过程是非常复杂的。通常,daemon从队列中接收指令,再执行一系列的系统命令,例如启动一个KVM实例,以及更新它在数据库中的状态。
nova-scheduler service:从队列中获取一个虚拟机实例请求,并且决定在哪个compute server上运行。
nova-conductor module:nova-compute service和数据库的中介。它限制了nova-compute service对于云数据库的直接访问。nova-conductor module可以水平扩展。然而不要将它部署在运行nova-compute service运行的节点上。
nova-cert module:用于提供X509 certificate Nova Cert service的server daemon。用于为euca-bundle-image生成证书。只在EC2 API中使用。
nova-network worker daemon:和nova-compute service类似,从队列中接收并处理networking tasks。执行例如设置网桥接口或者改变IPtables 规则等任务。
nova-consoleauth daemon:验证console proxies提供的tokens。参见nova-novncproxy和nova-xvpvncproxy。如果要console proxies能正常工作,这个service必须运行。在集群配置了单个的nova-consoleauth就能运行两个proxy中的任意一个。
nova-novncproxy daemon:为通过VNC连接一个运行实例提供代理。支持基于浏览器的novnc客户端。
nova-spicehtml5proxy daemon:为通过SPICE连接一个运行实例提供代理。支持基于浏览器的HTML5客户端。
nova-xvpvncproxy daemon:为通过VNC连接一个运行实例提供代理。支持OpenStack的Java客户端。
nova-cert daemon:x509证书。
nova client:使用户能够作为租户管理员或者端用户提交请求
The queue:用于daemon之间传递数据的central hub。通常通过RabbitMQ实现,也能通过另外的例如AMQP消息队列实现,例如ZeroMQ。
SQL database:用于存储大多数云基础设施的build-time和run-time状态,包括:可用的实例类型,正在使用的实例,可用的网络,Project。
理论上来说,OpenStack Compute能支持任何SQL-Alchemy支持的数据库。通用的数据库为SQLite3,用于测试和开发工作,MySQL,MariaDB和PostgreSQL。
OpenStack overview 笔记的更多相关文章
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
- CentOS7和OpenStack的笔记(一)
CentOS7和OpenStack的笔记(一) 最近搞CentOS7系统和OpenStack框架,整了近一个星期,系统装了好几次,框架搭了又从搭.虽然最后的实例没能启动成功,但是在这专研的一个星期里, ...
- Openstack实验笔记
Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管 ...
- OpenStack 学习笔记 (一)
后续的文章都贴在:臭蛋上 这一系列笔记已经记录很长一段时间了,种种原因没有贴出来,现在陆陆续续的贴出来.可能由于自己理解的 错误和疏忽,导致存在错误,欢迎大家指正,交流. 所有的源码分析都是基于Ope ...
- OpenStack学习笔记(一)----安装虚拟化工具
下面的命令运行在操作系统Ubuntu 14.04上. 在开源软件里面,主要是采用KVM和Xen.尽管OpenStack对KVM和Xen都支持,但是OpenStack对KVM的支持明显要比Xen做得好, ...
- openstack详细笔记-nova-glance-swift-cinder-keystone等
一.openstack各大模块 1.openstack总架构图 http://3ms.huawei.com/km/blogs/details/2655265 2.nova 2.0架构图 2.1 nov ...
- openstack 部署笔记--neutron计算节点
控制节点 # vim /etc/neutron/neutron.conf [DEFAULT] # ... transport_url = rabbit://openstack:root@control ...
- openstack 部署笔记--neutron控制节点
控制节点 配置neutron用户及服务 $ . admin-openrc $ openstack user create --domain default --password-prompt neut ...
- openstack 部署笔记--nova
控制节点 配置用户与服务 $ . admin-openrc $ openstack user create --domain default --password-prompt nova $ open ...
随机推荐
- NFS客户端访问行为相关的几个参数解释
soft / hard Determines the recovery behavior of the NFS client after an NFS request times out. If ne ...
- 小白学Linux(四)--系统常用命令
这里记录一下基础的系统常用命令,都是日常可能用到的,需要记住的一些命令.主要分为5个模块:关于时间,输出/查看,关机/重启,压缩归档和查找. 时间: date :查看设置当前系统时间,dat ...
- 小白初学Ioc、DI、Castle Windsor依赖注入,大神勿入(不适)
过了几天,我又来了.上一篇中有博友提到要分享下属于我们abp初学者的历程,今天抽出点时间写写吧.起初,我是直接去看阳光铭睿的博客,看了一遍下来,感觉好多东西没接触过,接着我又去下了github 里面下 ...
- [CLK Framework] CLK.Threading.PortableTimer - 跨平台的Timer类别
[CLK Framework] CLK.Threading.PortableTimer - 跨平台的Timer类别 问题情景 开发应用程式的时候,免不了需要加入一些定时执行的设计,例如说:定时更新画面 ...
- andriod ==和equals
== 用于数字 equals用于字符
- SharePoint 2013 内容部署功能简介
在之前的项目中,当客户有新的需求的时候,我们通常在测试环境上开发或者实施,然后手动在生产环境再弄一次.当发现内容部署这个东西,才知道这样是多么不合理的.我们可以创建两个网站集,一个用来修改,然后通过计 ...
- HDFS简单入门
本文地址:http://www.cnblogs.com/archimedes/p/hadoop-simple.html,转载请注明源地址. 欢迎关注我的个人博客:www.wuyudong.com, 更 ...
- 关于NSDate和NSDateFormatter的几个常用方法
/** * NSDate常见类方法 */ // 获得当前时间 NSDate *date1 = [NSDate date]; // 类方法 // NSDate *date1 = [[NSDate ...
- 初始block,关于定义的几个小题目
block的定义和C语言指针函数非常相似,就可以照着指针函数的方法去依葫芦画瓢就可以了 block中的^只是用来表示这是一个block对象,和函数指针中的*作用一样,只是一个标识符 下面有三个小例子来 ...
- iOS之UI--主流框架的搭建--仿制QQ的UI框架
使用XCode搭建多个控制器界面,一般在实际开发中建议超过四个控制器界面使用纯代码. 下面的实例其实已经超过了四个,总结详细步骤的目的,主要是更熟悉XCode的StoryBoard使用细节. 先直接上 ...